首页 > 解决方案 > 列表框单击 vba excel

问题描述

我有一个这样排列的excel工作表数据

在此处输入图像描述

我想编写一个代码以在列表框中显示设备(A 到 G 列),当我单击设备名称时,我有知道如何使用设备的人员列表显示在另一个列表框中,即 2 个列表框在同一个用户表单中。

我写了这段代码,但我不知道如何完成它:在 additem 之后我应该写什么?

Private Sub ListBox_Equip_Click()

    fin_liste_equip = ws_Liste_Equip.Cells(1, 256).End(xlToLeft).Column

    curVal = Me.ListBox_Equip.Value
    For x = 2 To fin_liste_equip
        If ws_Liste_Equip.Cells(x, fin_liste_equip) = curVal Then
            Me.ListBox_Pers_Mait.AddItem ws_Liste_Equip
        End

 If
Next x

您可以在下图中看到我只知道如何填充我的第一个列表框 在此处输入图像描述

标签: excelvba

解决方案


或者可能是这样的?

Private Sub ListBox_Equip_Click()
'fin_liste_equip = ws_Liste_Equip.Cells(1, 256).End(xlToLeft).Column
curVal = Me.ListBox_Equip.Value
Set c = Rows(1).Find(curVal, lookat:=xlWhole)
If c.Offset(1, 0).Value = "" Then Exit Sub

Set Rng = Range(c.Offset(1, 0), c.End(xlDown))
ListBox_Pers_Mait.Clear
If Rng.Rows.Count = 1 Then ListBox_Pers_Mait.AddItem c.Offset(1, 0).Value
If Rng.Rows.Count > 1 Then ListBox_Pers_Mait.List = Application.Transpose(Rng)

'For x = 2 To fin_liste_equip
'    If ws_Liste_Equip.Cells(x, fin_liste_equip) = curVal Then
'        Me.ListBox_Pers_Mait.AddItem ws_Liste_Equip
'    End
End Sub

该代码假定第 1 行的列中不会有重复的 équipements 名称。或者换句话说,您的 ListBox_Equip 项目是唯一的。


推荐阅读