Excel 组合框,其中第一个是工作表列表,第二个是来自第一个组合框中所选工作表的第一列的数据
我是VBA新手,在如何自动完成所有工作方面遇到了一些问题。我有一张用于分析的活动表和10张包含数据的表。由于分析的类型,我想使用组合框来选择数据进行分析 我想:Excel 组合框,其中第一个是工作表列表,第二个是来自第一个组合框中所选工作表的第一列的数据,excel,vba,combobox,Excel,Vba,Combobox,我是VBA新手,在如何自动完成所有工作方面遇到了一些问题。我有一张用于分析的活动表和10张包含数据的表。由于分析的类型,我想使用组合框来选择数据进行分析 我想: 使用activesheet上的combobox1选择从中读取数据的工作表 要使用combobox2,其中是combobox1中所选工作表第一列中的名称列表 示例:表2-10为国家名称,第1列为这些国家的城市,数据与每个城市相关。因此,在combobox1中,我选择UK=sheet(4),然后在Combox2中选择London=cell
Public子工作表\u Activate()
作为整数的Dim x
totalcountries=Sheets.Count
对于x=2到2的国家/地区
Me.Combobox1.AddItem表(x).名称
下一个x
端接头
以及:
Sub-selectcity()
表(1).组合框2.List=表(4).范围(“A2:A56”).值
端接头
我不知道如何连接它。谢谢。我们可以使用与组合框相关的“事件” 我在这里使用的方法是: (1)单击ComboBox1时,它将填充除ActiveSheet之外的所有工作表的名称。现在,您可以从下拉列表中选择所需的工作表 (2)当您从ComboBox1中选择TAB键时(通过按TAB键),它将使用您在ComboBox1中选择的工作表中的城市名称填充ComboBox2 我将活动表命名为“acSht”,只是为了在这里进行解释。你可以用你的名字。如果使用其他名称,请将“acSht”替换为您提供给ActiveSheet的名称 转到“开发人员”并单击“控制”部分下的“设计模式” 现在双击ComboBox1。这将带您进入Visual Basic编辑器窗口。在出现的白色窗格中,您可以在顶部看到两个下拉框。从右上角的下拉框中选择“GotFocus” 使用以下代码
Private Sub ComboBox1_GotFocus()
Worksheets("acSht").ComboBox1.Clear
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
If Not ws.Name = "acSht" Then ThisWorkbook.Worksheets("acSht").ComboBox1.AddItem ws.Name
Next ws
End Sub
Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Worksheets("acSht").ComboBox2.Activate
If KeyCode = vbKeyTab Then
Worksheets("acSht").ComboBox2.Clear
Dim ws As Worksheet, rng As Range, wsName As String
If Not ThisWorkbook.Worksheets("acSht").ComboBox1.Value = Empty Then
wsName = ThisWorkbook.Worksheets("acSht").ComboBox1.Value
Set ws = ThisWorkbook.Worksheets(wsName)
Else
Exit Sub
End If
For Each rng In ws.Range("A2", ws.Range("A" & Rows.Count).End(xlUp))
ThisWorkbook.Worksheets("acSht").ComboBox2.AddItem rng.Value
Next rng
End If
End Sub
接下来从右上角的下拉框中选择“KeyDown”,并使用以下代码
Private Sub ComboBox1_GotFocus()
Worksheets("acSht").ComboBox1.Clear
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
If Not ws.Name = "acSht" Then ThisWorkbook.Worksheets("acSht").ComboBox1.AddItem ws.Name
Next ws
End Sub
Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Worksheets("acSht").ComboBox2.Activate
If KeyCode = vbKeyTab Then
Worksheets("acSht").ComboBox2.Clear
Dim ws As Worksheet, rng As Range, wsName As String
If Not ThisWorkbook.Worksheets("acSht").ComboBox1.Value = Empty Then
wsName = ThisWorkbook.Worksheets("acSht").ComboBox1.Value
Set ws = ThisWorkbook.Worksheets(wsName)
Else
Exit Sub
End If
For Each rng In ws.Range("A2", ws.Range("A" & Rows.Count).End(xlUp))
ThisWorkbook.Worksheets("acSht").ComboBox2.AddItem rng.Value
Next rng
End If
End Sub
如果只想使用鼠标而不想使用tab,您将如何操作?请使用ComboBox1_LostFocus()事件。