【问题标题】:Object Required RTE 424对象要求 RTE 424
【发布时间】:2020-09-07 15:02:30
【问题描述】:

下午,

请原谅这可能是一个非常简单的编码,我是 VBA 新手。

基本上我要做的是从 VBA 中的用户窗体更新电子表格。我从有效地将 ComboBox 中的选择添加到我的电子表格中开始。

我希望代码在电子表格中查找名称,转到第 5 列并插入来自 ComboBox 的结果 - 在本例中是“完成”一词

我试过的代码如下:

Private Sub ComboBox1_Change()
 
Dim DOCUMENT As String
 
Dim Status_Cell As Range
 
DOCUMENT = "Report 1"
 
Status_Cell = Application.WorksheetFunction.VLookup(DOCUMENT, Worksheets("Sheet 1").Range("B1:S107"), 5, False).Select
 
If ComboBox1.Value = "Complete" Then
 
Status_Cell.Value = "Complete"
 
End If
 
End Sub

当我尝试这个时,我得到了运行时错误 424: Object Required 错误。

有什么想法吗?这肯定是一些简单的事情。

谢谢

【问题讨论】:

  • WorksheetFunction.Vlookup 返回一个值,而不是 Range 对象。您应该使用Match 来查找位置,然后使用cells(matchrow, column) 来获取 Range 对象。
  • Rory 感谢您的回复。你不能告诉我如何将它融入我的代码中吗?我从未使用过匹配功能,并且正在努力弄清楚如何/在何处添加它。干杯

标签: excel vba


【解决方案1】:

由于 VLookup 返回的是一个值,而不是单元格引用,因此您需要一种不同的方法,例如使用 Match 查找行位置,然后使用它来引用单元格:

Private Sub ComboBox1_Change()
 
Dim DOCUMENT As String
DOCUMENT = "Report 1"
      
Dim Search_Range as Range
Set Search_Range = Worksheets("Sheet 1").Range("B1:S107")

Dim matchRow
matchRow = Application.Match(DOCUMENT, Search_Range.Columns(1), 0)
If not iserror(matchRow) then
   Dim Status_Cell As Range
   Set Status_Cell = Search_Range.Cells(matchRow, 5)
 
   If ComboBox1.Value = "Complete" Then
 
       Status_Cell.Value = "Complete"
 
   End If
End If
 
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多