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

标签 vba excel

关于评估,我几乎没有什么“为什么?”的问题...

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/

相关文章:

vba - 通过 VBA 调整 Excel 中命名范围的大小

excel - 将字母数字文本按字母顺序排序 VBA

excel - 如何根据条件删除 Excel 工作表中的行

excel - 尝试比较两列中的日期,如果 18 岁或以下将单元格涂成红色

r - 将数值向量作为字符导出到 CSV

excel - 在不同区域设置日期格式

VBA:如何使用 if 条件检查列的单元格(已知列号)是否等于某个值?

excel - 读取选择,将其加载到数组,处理并将其打印到下一列

python - 值错误 : No engine for filetype: 'xlsk'

vba - 工作簿。添加不添加新工作簿