如何在excel宏中将字符串转换为long。 CLng给出了类型不匹配错误
Dim wStr As String
Dim w As Long
wStr = "=RAND() * 0.3 + 0.35"
w = CLng(wStr)
答案 0 :(得分:4)
尝试以下w的公式。
w = CLng(Evaluate(wStr))
或者忘记尝试使用“Excel公式”,然后直接使用随机函数对应的VBA
w = CLng(Rnd() * 0.3 + 0.35)
答案 1 :(得分:4)
错误的根本原因是CDbl
期望数字值或看起来的字符串就像一个数字。字符串"=RAND() * 0.3 + 0.35"
本身看起来不像数字,即使它评估到数字。
你到底想要实现的目标是什么?
如果要获得公式= RAND()* 0.3 + 0.35的长整数结果,请使用
Dim w as Long
w = Rnd() * 0.3 + 0.35
如果要模拟单元格公式,请使用
Dim w as Long
w = Application.Evaluate("=RAND() * 0.3 + 0.35")
至于公式本身,为什么这个构造?它将在[0.35,0.65]范围内返回Single,当舍入为Long时,将返回0或1,每个概率为50%。
为什么不使用
w = Rnd()
或
w = Application.Evaluate("=RAND()")
或
w = Application.WorksheetFunction.RandBetween(0, 1)
还是有其他原因我错过了?