【问题标题】:Excel VBA Lookup table value based on combobox selection Causing Error基于组合框选择的Excel VBA查找表值导致错误
【发布时间】:2016-05-16 17:29:56
【问题描述】:

我有一个具有组合框的用户窗体,该组合框在表中查找值以填充同一用户窗体上的文本框。代码正在运行。它会产生所需的结果,并且表单数据会准确地保存到表中,但是我没有得到我的 MsgBox“已保存”,而是收到错误 1004“无法获取工作表函数类的 VLookup 属性”。 当我调试时,突出显示的行是Me.men10.Value = Application.WorksheetFunction.VLookup(rec1, rRange, 47, 0)

这是完整的子程序:

Private Sub men8_Change()
Dim rec1 As String
Dim rRange As Range
Set rRange = Sheets("Recipe Box").Range("tblRecipes")

rec1 = Me.men8.Value
Me.men10.Value = Application.WorksheetFunction.VLookup(rec1, rRange, 47, 0)

End Sub

我在表单上有四个,正如我所说,一切正常,但仍会导致错误。有什么建议么?我到处搜索,但找不到与工作代码错误相关的任何内容。

这是表单控件的 sn-p:带圆圈的文本框 (men10) 由其上方的组合框 (men8) 填充。

【问题讨论】:

  • 该值是否存在于表中,是否有 47 列?您不会从中得到#N/A 等。

标签: vba excel


【解决方案1】:

我能够复制这个,如果发生错误:-

  • 找不到匹配项。在我的场景中,它不关心大小写,但如果没有匹配,我会得到你得到的错误。进行手动检查以确保您在命名范围的第一列中得到完全匹配。
  • 如果我指定的列号大于命名范围中的列数。请记住,值 1 并不严格表示工作表上的 A 列,而是表示命名范围中的第一列(即,如果范围是“C5:L200”,那么 Arg3 (col_index_num) 中的值 1 将表示列工作表中的 C。

【讨论】:

  • 谢谢大家的回复。我实际上“认为”我就在这一分钟发现了问题。我的代码似乎不存在完成表单和保存数据的问题,而是我刷新表单以接受下一条记录的地方。尽管代码在组合框的更改事件中,但似乎代码在刷新表单时正在寻找一个值。我更改了上面的代码以添加似乎已经解决问题的 if 语句。谁能解释为什么会这样?
猜你喜欢
  • 2021-07-11
  • 2017-04-12
  • 2022-07-01
  • 2013-02-03
  • 1970-01-01
  • 2014-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多