使用vba中的列表框查找和显示数据

时间:2013-09-25 11:31:50

标签: excel vba excel-vba

我已尝试使用此代码在VBA中使用列表框从Excel中查找特定数据,它从sheet3范围(E7)填充了一个名称列表,然后每次我单击其上的项目/名称时,程序应找到名称来自sheet3并将该行的数据显示在我的userform中相应的文本框中。但这不能正常工作。谢谢。

Private Sub ListBox1_Click()
Dim isRow As Long
    If Me.ListBox1.ListIndex > -1 Then
        isRow = Me.ListBox1.ListIndex + 1
    End If
    Me.Label1 = Cells(sRow, 5) 
    Me.txt_Mon_in.Text = Cells(sRow,6)

End Sub

从Sheet3填充数据。

Private Sub Userform_Initialize()
Dim vCol As Variant
Dim Lrow As Long
    Lrow = Sheets("Sheet3").UsedRange.Rows(Sheets("Sheet3").UsedRange.Rows.Count).Row
    vCol = Sheets("Sheet3").Range("E7:E" & Lrow).Value
    Me.ListBox1.List = vCol

End Sub

1 个答案:

答案 0 :(得分:3)

我不太确定你在做什么但是尝试下面的代码

Private Sub Userform_Initialize()
    Dim vCol As Variant
    Dim Lrow As Long
    Lrow = Sheets("Sheet3").UsedRange.Rows(Sheets("Sheet3").UsedRange.Rows.Count).Row
    vCol = Sheets("Sheet3").Range("E7:E" & Lrow).Value
    Me.ListBox1.List = vCol
End Sub


Private Sub ListBox1_Click()

    Dim selectedName As String
    Dim i As Long
    With ListBox1
        For i = 0 To .ListCount - 1
            If .Selected(i) Then
                selectedName = .List(i)
            End If
        Next i
    End With
    Dim c As Range
    For Each c In Sheets(3).Range("E7:E" & Sheets(3).Range("E" & Rows.Count).End(xlUp).Row)
        If c = selectedName Then
            Label1 = Sheets("Sheet3").Cells(c.Row, 5)
            txt_Mon_in.Text = Sheets("Sheet3").Cells(c.Row, 6)
        End If
    Next c

End Sub

Listbox1_Click() sub将遍历表3中的E列并将名称放在Label1控件中,并将找到的单元格的(0,1)偏移量放入{{1 } contol。

表Sheet 3

enter image description here

用户窗体

enter image description here

结果

enter image description here