[VBA ListBox尝试查找值时出现问题

问题描述 投票:0回答:1
Private Sub OptionButton2_Click()
    ListBox1.Clear
    For i = 2 To Application.WorksheetFunction.CountA(Worksheets("BASE DE DADOS").Range("A:A"))
        If Worksheets("BASE DE DADOS").Cells(i, "B").Text = Me.ComboBox1.Text And Worksheets("BASE DE DADOS").Cells(i, "C").Text = Me.ComboBox2.Text Then
            Me.ListBox1.AddItem
                ListBox1.List(i - 2, 0) = Worksheets("BASE DE DADOS").Cells(i, "A").Text
            Me.ListBox1.AddItem
                ListBox1.List(i - 2, 1) = Worksheets("BASE DE DADOS").Cells(i, "AR").Text
            Me.ListBox1.AddItem
                ListBox1.List(i - 2, 2) = Worksheets("BASE DE DADOS").Cells(i, "AS").Text
            Me.ListBox1.AddItem
                ListBox1.List(i - 2, 3) = Worksheets("BASE DE DADOS").Cells(i, "AT").Text
            Me.ListBox1.AddItem
                ListBox1.List(i - 2, 4) = Worksheets("BASE DE DADOS").Cells(i, "AU").Text
            Me.ListBox1.AddItem
                ListBox1.List(i - 2, 5) = Worksheets("BASE DE DADOS").Cells(i, "AV").Text
            Me.ListBox1.AddItem
                ListBox1.List(i - 2, 6) = Worksheets("BASE DE DADOS").Cells(i, "AW").Text
        End If
    Next
End Sub

嗨,我有这个问题。当我尝试搜索示例D 1时,它可以工作,但是如果我搜索D 2中的方法不起作用,有人可以帮助我吗?

https://imgur.com/a/s5XsZQN这是数据库

excel vba userform
1个回答
0
投票

我重构了代码,以使其更易于阅读。这样做时,我没有发现代码有问题。这使我认为您的数据有问题。我在要进行比较的两个元素上都添加了Trim()。这将消除数据中存在不可见字符而导致比较失败的可能性。试试这个,让我知道它是否可以解决问题。

Private Sub OptionButton2_Click()
    Me.ListBox1.Clear
    Dim Dados As Worksheet
    Set Dados = Worksheets("BASE DE DADOS")
    For i = 2 To Application.WorksheetFunction.CountA(Dados.Range("A:A"))
        If (Trim(Dados.Cells(i, "B").Text) = Trim(Me.ComboBox1.Text)) _
        And (Trim(Dados.Cells(i, "C").Text) = Trim(Me.ComboBox2.Text)) Then
            With Me.ListBox1
                .AddItem
                .List(i - 2, 0) = Dados.Cells(i, "A").Text
                .List(i - 2, 1) = Dados.Cells(i, "AR").Text
                .List(i - 2, 2) = Dados.Cells(i, "AS").Text
                .List(i - 2, 3) = Dados.Cells(i, "AT").Text
                .List(i - 2, 4) = Dados.Cells(i, "AU").Text
                .List(i - 2, 5) = Dados.Cells(i, "AV").Text
                .List(i - 2, 6) = Dados.Cells(i, "AW").Text
            End With
        End If
    Next
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.