“a”是什么意思;名称“;在excelvba中

“a”是什么意思;名称“;在excelvba中,vba,excel,Vba,Excel,在中,它表示Application.Evaluate方法采用单个参数,该参数称为Name,属于Variant数据类型。在此上下文中,Name的含义描述如下: 使用Microsoft Excel的命名约定的公式或对象名称。名称的长度必须小于或等于255个字符 *强调我自己 Excel命名约定的确切含义是什么?什么规则管理它?这些规则记录在哪里 在本文的备注部分中,有一些可以使用的名称的可能类型的示例-但是在方法中可以使用的一种类型是 定义的名称。可以用宏的语言指定任何名称 这回避了这个问题;“宏语

在中,它表示
Application.Evaluate
方法采用单个参数,该参数称为
Name
,属于
Variant
数据类型。在此上下文中,
Name
的含义描述如下:

使用Microsoft Excel的命名约定的公式或对象名称。名称的长度必须小于或等于255个字符

*强调我自己

Excel命名约定的确切含义是什么?什么规则管理它?这些规则记录在哪里

在本文的备注部分中,有一些可以使用的
名称
的可能类型的示例-但是在方法中可以使用的一种类型是

定义的名称。可以用宏的语言指定任何名称

这回避了这个问题;“宏语言中的名称”定义为什么


或者将其与我试图解决的特定编程问题更紧密地联系起来;
blah
Application.Evaluate(blah)
中可以包含哪些内容才能正确计算函数?

在Excel中,一个
名称(在范围上下文中)可能意味着几件事:

定义的名称

例如,如果您选择单元格“A1”,并在屏幕左上角将“A1”更改为
“MyCellName”
,您现在有了一个
命名范围。这允许您在公式中引用
“MyCellName”
,而不是
“A1”
。这对于恒定的输入范围或为更大的范围定义名称特别有用

命名范围可以重叠

例如,您现在突出显示
“A1-B3”
,并将
名称更改为
“MyNamedRange”
。与以前一样,您可以在公式中使用此名称。您仍然可以参考
“MyCellName”
,也可以参考
“A1”
,尽管它位于
“MyNamedRange”

自动命名

是否创建过
数据透视表
?从本质上讲,它们也成为了名字。可以用他们的名字来指代他们。例如,如果创建表,默认名称为
Table1
。在公式中,您可以使用
Table1
引用整个表(对于VLOOKUPS非常有用)

默认名称

最常见的名称是普通范围<代码>“A1”
是指向单元格的名称
“A1”
。其他每一个细胞也是如此。即使已定义名称的单元格也可以通过其范围引用进行引用

就本文而言

本文的意思是,您可以使用引用范围的标准方法来引用范围。如果我执行
Application.Evaluate“MyNamedCell”
它将评估
“A1”
,如果执行
Application.Evaluate“A1”
它将再次评估
“A1”

对于计算变量,实际发生的是
应用程序。Evaluate
首先解析范围引用(找出所传递参数的含义),然后对该对象进行操作。只要您传递的是一个可以计算的有效
范围
引用,它就会对其进行计算。这意味着您可以将一组范围引用放入一个类中的数组数组中,该类是。。。明白我要说什么了吗?你想用什么就用什么,但最后它需要知道范围在哪里

编辑:关于“名称可以是什么?”的更新编辑,您需要一些可以传入和计算的字符串。很简单

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"

您在“备注”下的链接中提供的示例清楚地显示了该方法可以使用何种类型的参数来正确工作。我不明白混淆的地方。@sgdva是的,也许我在问题中不清楚,但在备注部分有一行“定义的名称。您可以用宏的语言指定任何名称。”-这就是让我混淆的地方(我假设的是“命名约定”)我引用的摘录中提到的是——某种神秘的“宏观语言”)。也许pnuts的链接会给我们带来一些启示,但是我会看一看。检查下面的答案,我发现它对这件事非常有用,而且我认为它也非常清楚:名称不需要指向范围,它可以指一个常量值,例如“10”或“随便什么”^了解了一些新的东西:)。