尝试
wksheet.range("A1").Formula =
"=IF(AND(X2=" & Chr(34) & var & Chr(34) & "," & Range("O2").Address & ">=0),1,0)"
更新
如果 var 可以Integer
从这一行开始
var = IIf(VarType(var) = vbString, Chr(34) & CStr(var) & Chr(34), CLng(var))
并将上面的行修改为
wksheet.range("A1").Formula =
"=IF(AND(X2=" & var & "," & Range("O2").Address & ">=0),1,0)"
如果我们也想与整数进行比较,这将起作用。如果我们想抛出一个错误,如果它是一个整数,那么我们可以这样做
var = IIf(VarType(var) = vbString, CVErr, CLng(var))
如果它可以是整数以外的任何其他值,那么我们将其推广到
Select Case VarType(var)
case vbString
var=Chr(34) & CStr(var) & Chr(34)
case vbLong, vbInteger
var=CLng(var) ' Or CVErr depending on what we want to do
case else
var=CVErr
End Select
在公式之前。
笔记:
- 最后一种情况是
var
asN/A
并且会抛出一个错误
- 甚至 in 的类型
Integer
在VBA
内部也被强制转换为Long
. 所以最好先使用Long
。