我正在练习构建在单元格中用作公式的函数,似乎遇到了障碍。只要在单元格中使用时没有返回字符串,下面的代码就可以工作。这个代码适用于整数,甚至可以在我编写子函数时使用字符串来使用函数。我似乎无法弄清楚为什么当我在一个单元格的公式中使用它时它返回
Function bIsBlank(x As String) As String
Dim y As String
If x = "" Then 'check to see if it is blank
Exit Function
Else
y = Evaluate(x) 'solve the formula that is pulled in
If y = "0" Then 'check to see if formula equals zero
y = "" 'set to nothing if it is zero
End If
End If
'below is my attempt to fix it by adding quotes on either side of the string
'this did not work
y = Chr(34) & y & Chr(34)
'this seems to solve for a sub but not a formula in a cell for strings
bIsBlank = y
End Function
问题是我不需要使用evaluate函数。我拉入的公式已经解决了。所以说我有一个解决“A”的vlookup。在代码X =“A”而不是字符串vlookup(a1,a5:b10,2,0),正如我原先预期的那样
答案 0 :(得分:0)
1.
始终使用Option Explicit
2.
String
是值类型,不能是Null
引用。
答案 1 :(得分:0)
这是你在尝试的吗?
Option Explicit
Function bIsBlank(Optional x As String) As String
Dim y As String
bIsBlank = ""
If x = "" Then Exit Function
y = Application.Evaluate(x)
If y = 0 Then bIsBlank = "" Else _
bIsBlank = y
End Function
各种情景
注意:输入公式然后更改单元格中的值A1:A10
后,bIsBlank()
将不会自动计算。您必须使用Application.Volatile
。见下面的例子
Option Explicit
Function bIsBlank(Optional x As String) As String
Dim y As String
Application.Volatile
bIsBlank = ""
If x = "" Then Exit Function
y = Application.Evaluate(x)
If y = 0 Then bIsBlank = "" Else _
bIsBlank = y
End Function