Excel VBA - 设置单元格颜色时的 VLookup

Excel VBA - VLookup when cell color is set

我在这里创建了一个“颜色函数”,目的是在当前单元格背景颜色设置为 vbRed 或 rgb(255,0,0) 时 运行 VLookup。现在,VLookup 正在从我的工作中寻找 SKU 编号 sheet,它在当前单元格左侧偏移 8 列,并查看我的第二个 sheet“订购指南”范围 A:AD拉取对应的数据。

目前它只返回#NAME?即使我可以手动验证两个 SKU 都在 适当的位置。我现在的函数写成:

Function ColorFunction(Rge As Range) As String

Dim Sheet As Worksheet
Dim SKUColumn As Range
Dim MyRange as Range

Set Sheet = ActiveWorkbook.Sheets("Order Guide")
Set SKUColumn = Rge.Offset(0, -8)
Set MyRange = Sheet.Range("A:AD")

If Application.ThisCell.Interior.Color = vbRed Then ColorFunction = 
Application.ThisWorkbook.VLookup(SKUColumn, MyRange, 30, False)

End Function

Module Location

不太确定我在这里遗漏了什么...

工作簿没有 VLookup-方法。

要么使用

ColorFunction = Application.Vlookup(SKUColumn, MyRange, 30, False)

如果 VLookup 找不到值,这将 return 常见 #N/A。

或使用

ColorFunction = "(not found)"
On Error Resume Next
ColorFunction = WorksheetFunction.VLookup(SKUColumn, MyRange, 30, False)
On Error Goto 0

WorksheetFunction 会抛出运行时错误。如果您不处理该错误,如果找不到该值,您将在单元格中收到 #VALUE 错误。在我的示例中,我改为 return "(not found)"

更新叹气,还没看被删的问题,我想我们不应该这样做)
如果 Excel 找不到 VBA 函数,则会出现 #Name-错误。可能由

引起
  • 函数不是public
  • 函数不在常规模块中
  • 模块不在当前工作簿或引用的工作簿中
  • 模块名称和函数名称相同

(如果有人知道其他原因,欢迎补充...)