【发布时间】:2020-05-10 07:07:49
【问题描述】:
我正在尝试创建一个 UDF,它获取引用单元格的值,根据范围测试该值,并根据它是否适合该范围,将产生“X”或“O”。这是我让它工作的唯一方法:
代码:
Public Function ASE(cellRef As Variant)
Dim setpointU As Integer, setpointL As Integer
Dim enabled As String, disabled As String
cellValue = Range(cellRef).Value
setpointL = 50
setpointU = 100
enabled = "O"
disabled = "X"
If cellValue >= setpointL Or cellValue <= setpontU Then
ASE = enabled
Else
ASE = disabled
End If
End Function
公式栏中的函数: =AsE("D7") //(出于某种原因,它会自动将 s 变为小写)
结果: X
其他可能有用的信息: D7 的值是 24,它来自单元格的函数 =VALUE(Imported!B5)
详细地说,我可以让它在技术上工作的唯一方法是满足两个条件:1)当我在引用的单元格周围的函数中使用引号时,以及 2)当参数 cellRef 是 Variant 时。如果我不使用引号 [=ASE(D7) 而不是 =ASE("D7")],它就不起作用。如果我将 cellRef 的数据类型更改为 Range 或 String,它就不起作用。它只会返回 #VALUE! 错误。
我应该如何设置它的格式,这样我就不必在引用的单元格周围使用引号?
【问题讨论】:
-
从您现在删除的其他 Q 中回答您关于变通办法的问题,see here
-
@chrisneilsen 感谢您找到我并分享该链接。在遇到具有相同答案的类似问题后,为了冗余,我将其删除。
标签: excel vba parameter-passing user-defined-functions