Фильтр списка списков при вводе Excel VBA - PullRequest
0 голосов
/ 28 августа 2018

У меня есть код ниже для фильтрации списка ComboBox при вводе.

Private Sub ComboBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

    Dim arrIn As Variant, arrOut As Variant
    Dim i As Long, j As Long

    arrIn = Sheet1.Range("A2:G7")

    ReDim arrOut(1 To UBound(arrIn), 1 To 2)
    For i = 1 To UBound(arrIn)
        If arrIn(i, 1) Like ComboBox1.Text & "*" Then
            j = j + 1
            arrOut(j, 1) = arrIn(i, 1)
            arrOut(j, 2) = arrIn(i, 2)
        End If
    Next

    ComboBox1.List = arrOut

End Sub

Однако мне нужно внести изменения в диапазон для массива как Range ("A2: A2000") , соответственно, я также должен внести некоторые изменения и здесь ReDim arrOut (1 To UBound ( обр), 1 к 2) .

Я не могу понять, так как я плохо разбираюсь в концепциях массивов и их модификации. Может кто-нибудь может мне помочь?

Заранее спасибо:)

1 Ответ

0 голосов
/ 28 августа 2018

Если я правильно понимаю ваш вопрос, то следующий код поместит значения из Range("A2:A2000") в массив и затем соответствующим образом отфильтрует ComboBox:

Private Sub ComboBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    Dim arrIn As Variant, arrOut As Variant
    Dim i As Long, j As Long

    arrIn = Sheet1.Range("A2:A2000")

    ReDim arrOut(1 To UBound(arrIn), 1 To 1)

    For i = 1 To UBound(arrIn)
        If arrIn(i, 1) Like ComboBox1.Text & "*" Then
            j = j + 1
            arrOut(j, 1) = arrIn(i, 1)
        End If
    Next
    ComboBox1.List = arrOut
End Sub
...