所以我有下面这个测试代码:
Public Sub runTest()
Dim result As String
result = Application.Evaluate("4")
MsgBox "ss"
End Sub
每当我尝试将数字1、2、3、4作为参数添加到Application.Evaluate时,它都会失败,并出现以下错误:
我有以下Excel版本:微软® Excel® a微软365 MSO(2206构建版本16.0.15330.20260)64位
我所能抓到的东西多了一件:如果我选择运行时对象Application.Evaluate(“4”),它会返回一个OLE对象(?),但Application.Evaluate(“5”)是双精度的。
为什么?这有什么意义?
---更新---
我添加了这张图片,以查看我所知道的关于这件事的所有信息:
2条答案
按热度按时间9avjhtql1#
正如documentation中所解释的,
Application.Evaluate
的目的是 * 将Microsoft Excel名称转换为对象或值 *,而不是其他任何东西。这与它的规则有关,其中一个规则是:此方法可使用Microsoft Excel中的下列名称类型:
***表单控件编号。**您可以指定编号和名称来引用工作表上的表单控件。例如,对于工作表上的标签(“开发工具”选项卡-“插入”-“表单控件”-“标签”),
Evaluate("Label 1").Caption = "Hello"
和Evaluate("1").Caption = "Hello"
的作用相同。该工作表上必须有四个Form控件,因此
Evaluate("1")
-Evaluate("4")
会传回它们。Evaluate("5")
不会传回,因为您没有第五个Form控件。8yoxcaq72#
我也遇到过类似的情况,我想让用户输入简单的数学表达式作为数量。他们可以输入.5 + .5,它会计算为1。但如果他们输入1,它会失败,因为1被解释为工作表上的按钮。
我想出了这个解决办法: