gpt4 book ai didi

excel - 在 VBA 的 UDF 中将单元格作为参数传递的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-04 21:28:48 36 4
gpt4 key购买 nike

我正在尝试创建一个 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(已导入!B5)

详细地说,我可以让它在技术上工作的唯一方法是满足两个条件:1)当我在引用的单元格周围的函数中使用引号时,以及 2)当参数 cellRef 是 Variant 时。如果我不使用引号 [=ASE(D7) 而不是 =ASE("D7")],它就不起作用。如果我将 cellRef 的数据类型更改为 Range 或 String,它就不起作用。它只会返回 #值(value)! 错误。

我应该如何格式化它,这样我就不必在引用的单元格周围使用引号?

最佳答案

要传递单元格本身(不带引号):

Public Function ASE(cellRef As Range)

Dim setpointU As Integer, setpointL As Integer
Dim enabled As String, disabled As String

cellValue = cellRef.Value
setpointL = 50
setpointU = 100
enabled = "O"
disabled = "X"

If cellValue >= setpointL Or cellValue <= setpointU Then
ASE = enabled
Else
ASE = disabled
End If

End Function

关于excel - 在 VBA 的 UDF 中将单元格作为参数传递的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61708390/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com