在MSDN documentation中,它表示Application.Evaluate
方法采用单个参数,称为Name
且数据类型为Variant
。 Name
在此上下文中的含义是:
使用 Microsoft Excel命名约定的公式或对象名称。名称的长度必须小于或等于255个字符。
*强调我自己的
Excel命名约定究竟是什么意思?有哪些规则可以管理它们以及这些规则记录在哪里?
在本文的备注部分中,有一些可以使用的Name
可能类型的示例 - 但是可以在方法中使用的一种类型
定义名称。您可以使用宏的语言指定任何名称。
这引出了一个问题;什么是宏的语言中的“名称”定义为?
或者将其与我正在努力解决的具体编程问题更紧密地联系起来; blah
Application.Evaluate(blah)
可以正确评估函数的内容是什么?
答案 0 :(得分:6)
在Excel中,Name
(在范围的上下文中)可能意味着一些事情:
定义名称
例如,如果您选择单元格“A1”并在屏幕的左上角将“A1”更改为"MyCellName"
,那么您现在拥有Named Range
。这样,您就可以在公式中引用"MyCellName"
而不是"A1"
。这对于常量输入范围或定义更大范围的名称特别有用。
命名范围可以重叠
说,例如,您现在突出显示"A1-B3"
并将Name
更改为"MyNamedRange"
。您和以前一样,可以在公式中使用此名称。尽管"MyCellName"
位于"A1"
之内,您仍然可以引用"MyNamedRange"
来引用Table
。
自动名称
曾创建过PivotTable
或Table1
?实质上,这些也成为了名字。他们可以用他们的名字来提及。例如,如果创建表,则默认名称为Table1
。在公式中,您可以使用"A1"
来引用整个表格(对VLOOKUPS非常有用)。
默认名称
最常见的名称是普通范围。 "A1"
是指向单元格Application.Evaluate "MyNamedCell"
的名称。每个其他细胞都一样。即使具有已定义名称的单元格仍可通过其范围引用引用。
用于文章的目的
所有文章都说,您可以使用引用范围的标准方法来引用范围。如果我执行"A1"
,则会评估Application.Evaluate "A1"
,如果我"A1"
,则会再次评估Application.Evaluate
。
为了评估变量,实际发生的是Range
首先解析范围引用(弄清楚传递的参数是什么意思)然后在该对象上运行。只要您传递了可以评估的有效Dim SomeFoo as Range
Set SomeFoo = ThisWorkbook.Sheets(1).Range
' Isnt what we need since evaluate wants a string
' NOTE: This will implicitly take the .Value property of SomeFoo and
' try to evaluate that. This is fine, but bad coding practice (assuming SomeFoo's value is the address)
Application.Evaluate(SomeFoo).Value = "SomeString"
' The address can be successfully evaluated as a string
Application.Evaluate(SomeFoo.Address).Value = "SomeString"
' If SomeFoo contains an address/name it can be successfully evaluated
Application.Evaluate(SomeFoo.Value).Value = "SomeString"
引用,它就会对其进行评估。这意味着您可以将一堆范围引用放入一个类中的数组数组中,该类是...的属性...请参阅我要使用的内容? 使用你想要的任何东西,但最后它需要知道范围在哪里。
编辑:关于“名称是什么?”的更新编辑,您需要一些可以传入和评估的字符串。非常直截了当。
:car_brand_eq