在用户窗体上获取嵌套列表框以从 VBA 中的数据表中读取数据

问题描述 投票:0回答:1

我对 VBA 很陌生。我是一家橱柜制造厂,创建了一个工作跟踪电子表格,其中包含用户表单和工作数据表,其中包含与这些工作有关的各种信息。我的大部分灵感和代码都是来自观看 YouTube 视频和阅读论坛。我说到点上了

我创建了一个用户表单,我的同事用它来通过搜索工作或输入新工作来跟踪我们橱柜制造店的工作。 我有一个构建者的下拉列表,然后是构建者拥有的主管的下拉列表,以及这些主管的电话号码。问题是,我的 VBA 代码中有生成器、主管和电话号码,因为我不知道如何让 VBA 引用另一个工作表中的表。

我尝试将建筑商姓名、主管和电话号码放入表中并让 VBA 读取它,但我不知道如何告诉 VBA 去查看此表并返回结果。

这是我目前的方式。它工作正常,但如果我们得到一个新的构建器而不编辑 VBA 代码,我的同事应该能够更新表格......

'Set up Builder Dropdown list
'These are the Builders we use

Private Sub UserForm_Initialize()

    ComboBox2.List = Array("BIDI Builders", "Shelford Building", "LKS Building Services", "Unita Builders")
    
 End Sub


'These are the Builders' supervisors

Private Sub ComboBox2_Change()
    ComboBox3.Clear

    cmbboxselect = ComboBox2.Value
    Select Case cmbboxselect
            Case "BIDI Builders"
            ComboBox3.List = Array("Marco", "Craig")
            Case "Shelford Building"
            ComboBox3.List = Array("Trevor", "Danny")
            Case "LKS Building Services"
            ComboBox3.List = Array("Paul", "Aaron")
            Case "Unita Builders"
            ComboBox3.List = Array("Luke", "Josh")
    End Select
    
End Sub


'These are the Builders' supervisors Phone Numbers

Private Sub ComboBox3_Change()
    ComboBox4.Clear
cmbboxselect = ComboBox3.Value
    Select Case cmbboxselect
            Case "Marco"
            ComboBox4.AddItem "0413 111 111"
            Case "Craigo"
            ComboBox4.AddItem "0413 222 222"
            Case "Trevor"
            ComboBox4.AddItem "0413 333 333"
            Case "Danny"
            ComboBox4.AddItem "0413 444 444"
            Case "Paul"
            ComboBox4.AddItem "0413 555 555"
            Case "Aaron"
            ComboBox4.AddItem "0413 666 666"
            Case "Marco"
            ComboBox4.AddItem "0413 777 777"
            Case "Luke"
            ComboBox4.AddItem "0413 888 888"
            Case "Josh"
            ComboBox4.AddItem "0413 999 999"
    End Select
    
End Sub
excel vba
1个回答
0
投票

您的第一步是使用电子表格中的数据填充下拉列表。

将建造者、主管和电话号码以表格格式放置在工作表上。假设该表位于名为“Data”的工作表上,并具有“Builder”、“Supervisor”和“Phone”等列。 您可以通过以下方式将这些值读取到您的表单中:

Private Sub UserForm_Initialize()
    Dim ws As Worksheet
    Dim builderTable As ListObject
    Dim builderCell As ListRow
    Dim builderName As String
    Dim supervisorName As String
    Dim phoneNumber As String
    
        ' Set the worksheet and table
        Set ws = ThisWorkbook.Worksheets("Data")
        Set builderTable = ws.ListObjects("BuilderTable") ' Replace "BuilderTable" with your actual table name
    
        ' Clear previous items just in case
        Me.cboBuilder.Clear
        Me.cboSupervisor.Clear
        Me.cboPhoneNumber.Clear
    
        ' Populate the Builder names
        For Each builderCell In builderTable.ListRows
            builderName = builderCell.Range(1, 1).Value ' Assuming the first column is Builder names
            If Not IsEmpty(builderName) Then
                Me.cboBuilder.AddItem builderName
            End If
        Next builderCell
        ' continue like that with other list boxes '
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.