2

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

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
4

1 回答 1

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

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

表 3

在此处输入图像描述

用户表单

在此处输入图像描述

结果

在此处输入图像描述

于 2013-09-25T11:45:13.920 回答