评估(“1”)给出错误438

我有几个“为什么?”关于评估…

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?") 

有没有需要使用一个新的variables的一些解决scheme?

 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)

我把这个expression式放在括号里,问题就消失了; 现在工作正常:

 Tag = Evaluate("(" & Tag & ")")