Excel VBA,所有匹配的行必须返回到列表框或组合框

时间:2018-07-19 13:03:48

标签: excel vba excel-vba

我正在尝试运行当前给我第一条匹配行的代码,但是我希望它给出所有匹配行,不仅是第一行...而且还可能显示匹配结果在组合框或列表框上。

    Private Sub CommandButton3_Click()
        Dim last, i As Integer
        Dim ref, refnovo, lote, armazem As String
        'Sheets("1_Ref.paraProtocolar").Visible = True
        Sheets("analisegeral").Select
        last = Application.ThisWorkbook.Worksheets("analisegeral").Range("H65536").End(xlUp).Row

        If UserForm1.OptionButton1 = True And UserForm1.OptionButton2 = False Then
            GoTo numnovo
            ElseIf UserForm1.OptionButton1 = False And UserForm1.OptionButton2 = True Then
            GoTo numvelho
        End If




    'NUMERO VELHO
numvelho:
    For i = 2 To last                     ' i é a linha, ciclo para fazer leitura dos utilizadores                      ' 3 e 4 colunas do utilizador e password
        armazem = Cells(i, 8)
        ref = Cells(i, 9)
        refnovo = Cells(i, 10)
        lote = Cells(i, 14)

    If TextBox1.Text = ref And ComboBox3 = armazem Then
    'TextBox2.Text = lote
    ComboBox4 = lote

    GoTo fim
    End If
    Next i
    If TextBox1.Text <> ref Then
    TextBox2.Text = ""
    MsgBox "Referência não encontrada!", vbInformation
    GoTo fim
    End If





    'NÚMERO NOVO
numnovo:
    For i = 2 To last                     ' i é a linha, ciclo para fazer leitura dos utilizadores                      ' 3 e 4 colunas do utilizador e password
        armazem = Cells(i, 8)
        ref = Cells(i, 9)
        refnovo = Cells(i, 10)
        lote = Cells(i, 14)

    If TextBox1.Text = refnovo And ComboBox3 = armazem Then
    ComboBox4 = lote
    GoTo fim
    End If
    Next i
    If TextBox1.Text <> refnovo Then
    TextBox2.Text = ""
    MsgBox "Referência não encontrada!", vbInformation
    GoTo fim
    End If




fim:
    End Sub

如果有人知道或做了类似的事情,我将不胜感激。

用户将插入一个引用,如果该引用具有任何数字,则它将返回该数字,但是某些引用具有多个关联的数字,每个引用最多可包含3个数字,因此用户将插入参考,如果有1个或多个数字,则他必须能够选择。

1 个答案:

答案 0 :(得分:0)

您应该使用ComboBox4 = lote而不是使用ComboBox4.addItem lote。另外,请删除GoTo fim内的for loop,因为当您第一次满足if的条件时,它将使您转到子标题的末尾,因此可以只有第一场比赛。

您还应该在代码开头的某个时刻使用ComboBox4 = ""或等效符号,以在代码再次开始运行时重置组合框。