Vba VLookUp ComboBox输入以更新文本框值

Vba VLookUp ComboBox输入以更新文本框值,vba,excel,combobox,vlookup,userform,Vba,Excel,Combobox,Vlookup,Userform,我的问题是,一旦在我的用户表单中从下拉列表(组合框)中选择一个国家,我的文本框就不会显示任何输出。什么也没发生。文本框应该对组合框中选择的任何值执行VLookUp。组合框(名称)为“国家” 其中一个文本框的代码: Private Sub TextBox2_Change() Dim myRange As Range Set myRange = Worksheets("All Countries Validation").Range("A:R") TextBox2.Value = Applicati

我的问题是,一旦在我的用户表单中从下拉列表(组合框)中选择一个国家,我的文本框就不会显示任何输出。什么也没发生。文本框应该对组合框中选择的任何值执行VLookUp。组合框(名称)为“国家”

其中一个文本框的代码:

Private Sub TextBox2_Change()
Dim myRange As Range
Set myRange = Worksheets("All Countries Validation").Range("A:R")
TextBox2.Value = Application.WorksheetFunction.VLookup(Country.Value, myRange, 2, False)

您必须使用
Country\u Change()
事件处理程序,而不是
TextBox2\u Change()
one

Option Explicit

Private Sub Country_Change()
    Dim myRange As Range, f As Range

    Set myRange = Worksheets("All Countries Validation").Range("A:A")

    Set f = myRange.Find(What:=Country.Value, LookIn:=xlValues, Lookat:=xlWhole, MatchCase:=False) '<--| try and find combobox selected value
    If f Is Nothing Then '<--| if not found ...
        TextBox2.Value = "" '<--| ... then clear textbox
    Else'<--| ... otherwise...
        TextBox2.Value = f.Offset(, 1) '<--| ... fill it with proper value
    End If
End Sub
选项显式
私人次级国家/地区的变化()
将myRange变暗为Range,将f变暗为Range
设置myRange=工作表(“所有国家/地区验证”)。范围(“A:A”)

设置f=myRange.Find(What:=Country.Value,LookIn:=xlValues,Lookat:=xlother,MatchCase:=False)您必须使用
Country\u Change()
事件处理程序,而不是
TextBox2\u Change()
one

Option Explicit

Private Sub Country_Change()
    Dim myRange As Range, f As Range

    Set myRange = Worksheets("All Countries Validation").Range("A:A")

    Set f = myRange.Find(What:=Country.Value, LookIn:=xlValues, Lookat:=xlWhole, MatchCase:=False) '<--| try and find combobox selected value
    If f Is Nothing Then '<--| if not found ...
        TextBox2.Value = "" '<--| ... then clear textbox
    Else'<--| ... otherwise...
        TextBox2.Value = f.Offset(, 1) '<--| ... fill it with proper value
    End If
End Sub
选项显式
私人次级国家/地区的变化()
将myRange变暗为Range,将f变暗为Range
设置myRange=工作表(“所有国家/地区验证”)。范围(“A:A”)

设置f=myRange.Find(What:=Country.Value,LookIn:=xlValues,Lookat:=xlWhole,MatchCase:=False)可能需要进行一些调试,比如Country的值是多少?尝试Debug.Print(Application.WorksheetFunction.VLookup(Country.Value,myRange,2,False))。另外,当您只需要第2列时,为什么要定义a:R的范围?最后,在没有.WorksheetFunction的情况下尝试Application.Vlookup,它会生成一类不同的错误消息,这可能会有所帮助。我还创建了一个按钮来显示“Country.value”的消息框,但当我点击它时,什么也没发生。如果我选择一个国家,并在组合框中按下键盘上的Enter键,我会收到一个自动错误,如果调用的对象与它的clientsIdk发生了差异,则它已断开连接,但这是在带有选项卡的UserForm中发生的。这是UserForm中的第二个选项卡是否打开了“立即”窗口以便查看Debug.Print的结果?(菜单栏上的视图>即时窗口)。最好将调试行放在TextBox2.Value=etc之前。当您进行测试时,是否确实有相关国家的数据?您希望找到什么吗?一个国家是否有多行,例如多行中的同一个国家?忽略这一点,请参阅下面的用户3598756的答案。可能需要进行一些调试,例如country的值是多少?尝试Debug.Print(Application.WorksheetFunction.VLookup(Country.Value,myRange,2,False))。另外,当您只需要第2列时,为什么要定义a:R的范围?最后,在没有.WorksheetFunction的情况下尝试Application.Vlookup,它会生成一类不同的错误消息,这可能会有所帮助。我还创建了一个按钮来显示“Country.value”的消息框,但当我点击它时,什么也没发生。如果我选择一个国家,并在组合框中按下键盘上的Enter键,我会收到一个自动错误,如果调用的对象与它的clientsIdk发生了差异,则它已断开连接,但这是在带有选项卡的UserForm中发生的。这是UserForm中的第二个选项卡是否打开了“立即”窗口以便查看Debug.Print的结果?(菜单栏上的视图>即时窗口)。最好将调试行放在TextBox2.Value=etc之前。当您进行测试时,是否确实有相关国家的数据?您希望找到什么吗?一个国家是否有多行,例如多行中的同一个国家?忽略这一点,请参阅下面的用户3598756的答案哦,有点明显><+1,这非常有效!我只是在网上看到很多地方用我尝试过的方法来做,但是这更有效,而且它确实有效。哈,有点明显><+1因为这非常有效!我只是在网上看到很多地方用我尝试过的方法来做,但这更有效,而且它实际上很管用