我很少"为什么?" s关于评估......
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)
答案 0 :(得分:2)
我将表达式放入括号中,问题就消失了;现在工作正常:
Tag = Evaluate("(" & Tag & ")")