2016-08-12 2 views
1

목표 : 사용자 정의 폼을 만들고 사용자 입력을 가져온 다음 사용자 입력에서 목록에 넣고 목록을 클릭하면 전체 통합 문서에서 자동으로 찾습니다. 이처럼배열을 매개 변수로 listbox에 전달하는 중 오류가 발생했습니다.

뭔가 : enter image description here

내가이 게시물보고 : Match in whole workbook

을 그리고 난 그 무언가 생성이를 생성 한 후

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 

을, 오류가 발생합니다 두 번째 하위에 관한.

프로 시저 선언 이벤트 나 프로 시저 같은 이름

+0

'공공 하위 ListBox1_Click'이 매개 변수를 고려하지 않습니다 수 있습니다. 그것은'ListBox1_Click()'이어야합니다 –

+0

@SiddharthRout하지만 어떻게 서브 사이의 배열을 전달합니까? 방법 중 하나가 아닌가요? 죄송합니다. 저는 VBA를 처음 접했습니다. –

답변

1

목록 상자 클릭 이벤트가 매개 변수를 고려하지 않습니다를 가진의 설명과 일치하지 않습니다. 그런 다음 하위 사이에 배열을 전달하려면

Private Sub ListBox1_Click() 

End Sub 

당신은 그래서 (변형으로하는 ByRef Arraay())이 방법은

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 
관련 문제