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
- 函数不在常规模块中
- 模块不在当前工作簿或引用的工作簿中
- 模块名称和函数名称相同
(如果有人知道其他原因,欢迎补充...)
我在这里创建了一个“颜色函数”,目的是在当前单元格背景颜色设置为 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
- 函数不在常规模块中
- 模块不在当前工作簿或引用的工作簿中
- 模块名称和函数名称相同
(如果有人知道其他原因,欢迎补充...)