评估(" 1")给出错误438

时间:2014-11-12 19:56:30

标签: excel vba excel-vba

我很少"为什么?" 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)

1 个答案:

答案 0 :(得分:2)

我将表达式放入括号中,问题就消失了;现在工作正常:

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