【问题标题】:Can't write string in a cell from UDF无法在 UDF 的单元格中写入字符串
【发布时间】:2016-04-07 08:35:23
【问题描述】:
Sub Makro()
Dim a As String
Dim b As String
Cells(1, 1).Value = myfunction(X, X)
If Range("A1") = "XX" Then
MsgBox "True"
Else
MsgBox "False"
End If
End Sub
Function myfunction(a, b) As String
myfunction = a + b
End Function
“A1”单元格值等于 0。它必须是 XX。
【问题讨论】:
标签:
vba
excel
string-concatenation
udf
【解决方案1】:
您将 X 发送到 myfunction,它应该是“X”。 VBA 将 X 解释为变量而不是字符串
Cells(1, 1).Value = myfunction("X", "X")
【解决方案2】:
X 必须在“”之间,例如:
Cells(1, 1).Value = myfunction("X", "X")
【解决方案3】:
使用 & 符号(例如 &)进行显式字符串连接。虽然由于 VBA 的开销和跨平台兼容性的尝试可以使用加号(例如 +),但加号的主要运算符是数学加法,而不是字符串连接,它将选择添加如果可以的话,两位数。
Function myfunction(a, b) As String
myfunction = a & b
End Function
使用 + 作为字符串连接运算符,如果您将 6 和 7 传递给原始函数,您将收到 13,而不是 67。使用 & 您返回 67。