excel - 如何根据 excel vba 中的组合框 1 填充组合框 2?
问题描述
在 Excel 中,
我有两列,一列包含城市名称,另一列包含员工姓名。每个城市可以有多名员工。
第 1 列 第 2 列 孟买拉吉夏尔马 新德里安基塔 加尔各答 孟买拉胡尔 孟买阿德什 加尔各答大茴香 钦奈 M. 斯瓦米
在用户 form1 中,我有两个组合框。
在组合框 1 中,我想从第 1 列填充唯一的城市名称(孟买、新德里、加尔各答、钦奈),在组合框 2 中,我想要所有各自的员工。
组合框1 组合框2 孟买拉吉夏尔马 孟买拉胡尔 孟买阿德什
我怎样才能做到这一点?
解决方案
请尝试下一个代码。Sub
可以在 userForm 事件期间调用(Initialize
我将向您展示如何),也可以从按钮Click
事件中调用。它使用cbCity
和cbPeople
组合框。请用您使用的名称更改他们的名称:
- 能够加载“cbCity”组合的代码:
Private Sub testPopulateCombo1()
Dim sh As Worksheet, LastRow As Long, arr As Variant, El As Variant, j As Long
Dim arrC As Variant, i As Long, k As Long, boolFound As Boolean
Set sh = ActiveSheet 'use here yor sheet
LastRow = sh.Range("A" & Rows.count).End(xlUp).Row
arr = sh.Range("A2:A" & LastRow).Value
ReDim arrC(UBound(arr) - 1)
'Fill the city names:
For i = 1 To UBound(arr)
For Each El In arrC
If El = "" Then Exit For
If El = arr(i, 1) Then boolFound = True: Exit For
Next
If Not boolFound Then arrC(k) = arr(i, 1): k = k + 1
boolFound = False
Next i
ReDim Preserve arrC(k - 1)
Me.cbCity.List = WorksheetFunction.Transpose(arrC)
Me.cbCity.ListIndex = 0 'load the first item in the combo
End Sub
- 它可以从 UserForm
Initialize
事件中调用,以这种简单的方式:
Private Sub UserForm_Initialize()
testPopulateCombo1
End Sub
- 为了填充
cbPeople
组合,当cvCity
改变它的值时,你必须使用它的Change
事件。双击组合,从右上角选择Change
并粘贴下一个代码(在它上面):
Private Sub cbCity_Change()
Dim sh As Worksheet, arrP As Variant, i As Long
Set sh = ActiveSheet
arrP = sh.Range("A2:B" & sh.Range("B" & Rows.count).End(xlUp).Row).Value
Me.cbPeople.Clear
For i = 1 To UBound(arrP)
If arrP(i, 1) = Me.cbCity.Value Then
Me.cbPeople.AddItem arrP(i, 2)
End If
Next
If Me.cbPeople.ListCount > 0 Then Me.cbPeople.ListIndex = 0
End Sub
如果您不使用我使用的组合名称,请根据您的名称进行调整!
在Initialize
事件期间,第一个组合被加载,它的第一个元素 ( .ListIndex = 0
) 将被显示。然后,在每次更改cbCity
组合后,将加载适当的人名cbPeople
。
请测试它并发送一些反馈。但是,如果可能的话,不是明天甚至更晚……
推荐阅读
- data-annotations - 从 LabelBox 工具导出分段标签
- c# - c# - 使用 httpwebrequest 发送文本
- html - 冻结html表格中的两行标题
- android-studio - 从图库中选择的图像无法在 android studio 中转换为位图
- python - 如何使用 plotly 仅显示列表中的日期
- sql - 通过 ODBC 驱动连接到 ELK Rollup Index
- javascript - 如何通过 div 单击按钮?(指针事件不起作用)
- python - 如何解析字符串并将其插入矩阵?
- python - 我如何在pygame中删除我的精灵表上的黑色背景
- javascript - 在 ag-grid-react 中设置选定的行