【问题标题】:VLookUp ComboBox input to update TextBox valuesVLookUp ComboBox 输入以更新 TextBox 值
【发布时间】:2016-10-23 04:25:09
【问题描述】:

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

其中一个文本框的代码:

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 的值是多少?试试 Debug.Print(Application.WorksheetFunction.VLookup(Country.Value, myRange, 2, False))。另外,当您只需要第 2 列时,为什么还要定义 A:R 的范围?最后,尝试不带 .WorksheetFunction 的 Application.Vlookup,它会产生可能有帮助的不同类别的错误消息。
  • 所以我尝试进行调试,但没有任何反应。我还创建了一个按钮来显示“Country.value”的消息框,但单击它时没有任何反应。如果我选择一个国家并在 ComboBox 中按键盘上的 Enter 键,则会出现自动化错误,调用的对象已与其客户端断开连接
  • Idk 如果它有所作为,但这是发生在带有标签的用户窗体中。这是用户窗体中的第二个选项卡
  • 您是否打开了即时窗口以便查看 Debug.Print 的结果? (菜单栏上的视图 > 立即窗口)。最好将调试行放在 TextBox2.Value = etc 之前的行上。当您进行测试时,是否有相关国家/地区的实际数据 - 您希望找到任何东西吗?是否有不止一行与一个国家/地区有关,例如多行中的同一个国家/地区?
  • 忽略这一点,请参阅下面 user3598756 的答案

标签: vba excel combobox vlookup userform


【解决方案1】:

您必须使用Country_Change() 事件处理程序而不是TextBox2_Change() 一个

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

【讨论】:

  • Doh,有点明显>.
  • 这非常有效!我只是在网上看到很多地方都是我尝试过的方法,但是这种方法效率更高,而且确实有效
猜你喜欢
  • 2013-11-30
  • 1970-01-01
  • 1970-01-01
  • 2015-03-13
  • 2018-05-24
  • 1970-01-01
  • 1970-01-01
  • 2020-04-12
  • 2018-02-09
相关资源
最近更新 更多