一时没想出你=Array()这样的写法是从哪种语言里克隆的,参考一下吧:
Option ExplicitPrivate Sub getPrintBill(headid%, Optional detailid As Variant = Empty)
    If (IsEmpty(detailid)) Then
        Debug.Print "detailid is empty"
    End If
End SubPrivate Sub Form_Load()
    Call getPrintBill(3)
End Sub

解决方案 »

  1.   

    参数数组可用来传递数组的参数给过程。所以当定义过程时就不用知道数组中的元素个数。    
    使用ParamArray关键字来指示一个参数数组。而此数组必须被声明为Variant类型的数组,并且此数组必须是过程定义中最后面那个参数。下面的示例可告诉如何定义一个包含参数数组的过程:Sub Push(lb As ListBox, ParamArray itemArr() As Variant)
        Dim i As Long
        For i = 0 To UBound(itemArr)
            lb.AddItem itemArr(i)
        Next
    End SubPrivate Sub Command1_Click()
        Push List1, 1, 2, 3
        Push List2, "aaaaaaaa", "bbbbbbbbb", "cccccccccc", "dddddddddddd"
    End Sub