将数组作为parameter passing给列表框时出错

目标:创build一个用户窗体并获取用户input,然后从用户input中将其放入一个列表中,当您单击该列表时,将自动在整个工作簿中find它。

像这样的东西:

在这里输入图像说明

我看到这个post: 匹配整个工作簿

我创造了一些东西:

Public Sub CommandButton3_Click() Dim TempArray As Variant Dim RealArray() TempArray = Application.InputBox("Select a range", "Obtain Range Object", Type:=64) ArrayRows = UBound(TempArray) ReDim RealArray(1 To ArrayRows) For i = 1 To ArrayRows RealArray(i) = TempArray(i, 1) Next i MsgBox "The number if rows selected are " & ArrayRows ListBox1.List = RealArray ListBox1 Arraay:=RealArray End Sub Public Sub ListBox1_Click(ByRef Arraay() As Variant) Dim Sh As Worksheet Dim something As Range Dim ArrayRows As Long For Each Sh In ThisWorkbook.Worksheets With Sh.UsedRange For i = 1 To ArrayRows Set something = RealArray.Find(What:=RealArray(i)) If Not something Is Nothing Then Do Until something Is Nothing test = something.Value Set something = .FindNext(something) Loop End If Next i End With Set something = Nothing Next End Sub 

创build这个之后,我得到关于第二个子的错误。

过程声明与具有相同名称的事件或过程的描述不匹配

列表框单击事件不采取任何参数。

 Private Sub ListBox1_Click() End Sub 

如果你想在sub之间传递一个数组,那么你可以这样做

 Dim MyArray() As Variant Public Sub CommandButton3_Click() '~~> Initialize array End Sub Private Sub ListBox1_Click() '~~> Use array here '~~> Also put an error check if the array is initialized or not End Sub