【发布时间】:2014-03-29 15:52:51
【问题描述】:
我正在创建用户表单,我将使用它来插入数据,然后制作一些其他东西。
我有一个带有组合框和几个文本框的用户窗体。 ComboBox 填充了范围内的数据。我想根据 ComboBox 值更改 TextBoxes 的值。文本框的值应填充工作表中的特定值。我考虑过创建 For Each 循环以确定所选 ComboBox 值的 Row,然后使用 Row number 更改 TextBoxes 并设置适当的偏移量。
工作表是带有标题的表格,并填充了姓名、城市等数据。
但是我的代码在 Userform 中不起作用。
有什么想法有什么问题或者解决问题的方法不同吗?
kclient = 组合框名称
Private Sub klient_Change()
Dim MyCell As Range, MyRange As Range
Dim wiersz As Long
Set MyRange = Range("klienci")
For Each MyCell In MyRange
If klient.Value = MyCell.Value Then
wiersz = MyCell.Value
Exit For:
End If
Next
MsgBox (wiersz)
End Sub
【问题讨论】:
-
如何初始化组合框?像这样
Klient.List = Range("klienci")?在这种情况下,您可以像这样使用 sth 从命名范围获取客户端索引:Klient.ListIndex -
@simoco 我对 Userforms 很陌生...我的初始化是用 ComboBox RowSource 属性编写的。您是否建议将此声明发送至
Userform_initialize? -
使用
RowSource很好:) 关于你的主要问题,你可以使用这一行来获取范围内组合框的选定项目的地址:MsgBox Range("klienci").Cells(1 + Klient.ListIndex, 1).Address(我想你的 rowSource 正好是klienci范围) -
所以本质上 - 您是否想在另一个文本框或 MsgBox 中显示组合框中选择的值...您的 IF 要求相同的值...所以您可以删除 IF 和直接将
klient.Value分配给文本框...否则您的范围必须至少为2 列宽,您遍历第1 个comumn 并返回第2 个列(或这样...)? -
@simoco 你的代码:
MsgBox Range("klienci").Cells(1 + Klient.ListIndex, 1).Address正是我想要的。现在引用这个单元格,我可以显示不同的值。我根据自己的需要对其进行了修改,非常棒!请发布anwser,以便我接受;)
标签: excel combobox textbox userform vba