Excel VBA:Userfom-文本框值取决于组合框值

Excel VBA:Userfom-文本框值取决于组合框值,excel,combobox,textbox,userform,vba,Excel,Combobox,Textbox,Userform,Vba,我正在创建userform,我将使用它插入数据,然后制作一些其他东西 我有一个带有组合框和几个文本框的用户表单。组合框中填充了范围中的数据。我想根据ComboBox值更改文本框的值。文本框的值应使用工作表中的特定值填充。我考虑为每个循环创建一个循环,以确定所选组合框值的行,然后使用行编号和设置适当的偏移量来更改文本框 工作表是带有标题的表格,并填入诸如姓名、城市等数据 但是,我的代码在Userform中不起作用 你知道什么是错的吗?或者对一个问题有不同的处理方法吗 klient=组合框名称 Pr

我正在创建userform,我将使用它插入数据,然后制作一些其他东西

我有一个带有组合框和几个文本框的用户表单。组合框中填充了范围中的数据。我想根据ComboBox值更改文本框的值。文本框的值应使用工作表中的特定值填充。我考虑为每个循环创建一个循环,以确定所选组合框值的行,然后使用行编号和设置适当的偏移量来更改文本框

工作表是带有标题的表格,并填入诸如姓名、城市等数据

但是,我的代码在Userform中不起作用

你知道什么是错的吗?或者对一个问题有不同的处理方法吗

klient=组合框名称

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

作为对问题的后续评论,此代码适用于:

Private Sub klient_Change()
    MsgBox Range("klienci").Cells(1 + Klient.ListIndex, 1).Address
    'do something else, e.g. get element one to the right:
    MsgBox Range("klienci").Cells(1 + Klient.ListIndex, 1).Offset(,1).Address
End Sub

如何初始化组合框?类似这样的Klient.List=Rangeklienci?在这种情况下,您可以使用类似这样的方法从命名范围中获取klient的索引:klient。ListIndex@simoco我对用户表单很陌生。。。我的初始化写在ComboBox RowSource属性中。您建议将此语句置于Userform_initialize中吗?使用RowSource很好:关于您的主要问题,您可以使用此行获取组合框中选定项的地址,范围为:MsgBox Rangeklienci.Cells1+Klient.ListIndex,1.地址我想您的rowSource实际上就是klienci rangeso-您想在另一个文本框或MsgBox中显示组合框中选择的值。。。您的IF要求相同的值。。。因此,您可以删除IF并直接将klient.Value指定给文本框。。。否则,您的范围必须至少有2列宽,您将遍历第一列并返回第二列左右…?@simoco您的代码:MsgBox Rangeklienci.Cells1+Klient.ListIndex,1。地址显然就是我要找的。现在参照这个单元格,我可以显示不同的值。我根据自己的需要修改了它,它很棒!请发一封邮件,这样我就可以接受了;事实上,我所更改的只是从地址到行,msgbox可以更改为我现在需要的任何内容。如果我的代码按预期工作,我总是使用msgbox作为测试;谢谢