提问人:Jimmy 提问时间:9/19/2023 最后编辑:FunThomasJimmy 更新时间:9/22/2023 访问量:38
VBA窗体,组合框中的选择应在文本框中查看说明
VBA Form , A Selection from combobox should view the description in a text box
问:
我有一个组合框表,其中我有一些数据可以通过动态名称范围填充组合框,但是我坚持使用文本框来获取前面单元格中的值,idk使用什么,偏移量或索引和匹配,有人可以帮我解决这个问题吗?
因此,我有该表单,并且有一个名为 combobox 的工作表填充的combobox_cars。 然后,一旦我在combox中进行选择,我就有textbox_power来获取偏移值 因此,基本上文本框只需在组合框中显示所选汽车的马力。 Idk 如何通过偏移量或索引 n 匹配到达?
如果有人能帮助我解决这个问题,以获得汽车的马力,我将不胜感激。
我将添加屏幕以正确理解 工作表是组合框。 带有组合框 n 文本框的用户窗体。 以及我可以填充组合框的 Vb 代码。 谢谢!!
这是工作表组合箱
Cars power
BMW 550hp
Benz 400hp
Cupra 300hp
Seat 250hp
VW 450hp
我用汽车名称填充了组合框 但是在选择时,我希望汽车的相关功率应显示在文本框中。
答:
您需要在用户窗体的代码隐藏模块中放置一个事件例程: 在表单编辑器中,双击组合框: 它将在代码中创建一个例程,该例程在 -event 触发。Change
组合框中显示的所有值都可用于 属性 ,数据存储在二维数组中(第一个索引是行号,第二个索引是列号)。请注意,这两个维度都是从 0 开始的。List
您可以使用以下属性访问所选行的编号ListIndex
假设组合框具有名称,文本框具有名称,则代码将如下所示:ComboBox1
TextBox1
Private Sub ComboBox1_Change()
With Me.ComboBox1
Me.TextBox1.Value = .List(.ListIndex, 1)
End With
End Sub
注意只是一个建议:不要命名你的工作表,这只会导致混乱。工作表不是组合框。命名它或类似的东西。Combobox
ListOfCars
CarLookup
更新:当然,只有当第二列(“HP”)的数据是组合框的一部分时,这才有效。假设您正在填充组合框:RowSource
- 将第 2 列添加到 RowSource-Range,例如(假设包含数据的工作表仍为命名
combobox!A2:B10
combobox
- 将组合框设置为 2。如果您现在运行窗体,您将在组合框中看到 HP 信息。
ColumnCount
- 如果不想在组合框中看到 HP,请将第 2 列的列宽设置为 0。
更新 2:如果您手动填充组合框,您只需要在代码中添加 1 行即可填充第 2 列 - 您只需写入二维数组即可。我假设你的代码有点像这样List
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("combobox")
With Me.ComboBox1
.Clear
Dim row As Long
For row = 2 To 10
.AddItem ws.Cells(row, 1)
' Now add the value for the 2nd column:
.List(.ListCount - 1, 1) = ws.Cells(row, 2)
Next row
End With
评论