关于评估,我几乎没有什么“为什么?”的问题...
Sub TestEvaluate()
Dim Tag As String
Tag = "5"
Tag = Evaluate(Tag) 'works fine
Tag = "1"
Tag = Evaluate(Tag) 'error 438 wrong property or method(-> my 1st "Why?")
但是好吧,我可以处理它:
Tag = "1"
Tag = [Tag] 'works fine
现在我需要评估某个对象的属性:
Dim Object As cObject
Set Object = New cObject
Object.pProperty = "5"
Tag = Evaluate(Object.pProperty) 'Works fine
再次出现与上面相同的问题:
Object.pProperty = "1"
Tag = Evaluate(Object.pProperty) '438 wrong property or method
但现在我被困住了,因为:
Tag = [Object.pProperty] 'generates error 13 type mismatch(-> my 2nds "Why?")
有没有不需要使用新变量的解决方案?
Dim TempTag As String
TempTag = Object.pProperty
Tag = [TempTag] 'everything fine again
End Sub
我发现,在我的例子中,VBA.Evaluate("1") 根据生成一个对象
debug.print VBA.VarType(evauate("1"))
这只是一个错误? (win8.1 xl2007)
最佳答案
我把表达式放在括号里,问题就消失了;现在工作正常:
Tag = Evaluate("(" & Tag & ")")
关于vba - 评估 ("1")给出错误 438,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26895441/