Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA:如果名称是两个单词,如何声明变量?_Vba_Excel - Fatal编程技术网

VBA:如果名称是两个单词,如何声明变量?

VBA:如果名称是两个单词,如何声明变量?,vba,excel,Vba,Excel,这几乎只是一个一般性的问题,但我想这可能是一个例子 我有一张名为“所有股票”的工作表。由于名称是两个单词,我无法将其声明为工作表,您如何解决此问题 Dim all stocks as Worksheet ActiveWorkbook.Sheets.Add(After:=Sheets(Sheets.Count)).Name = "All Stocks" 变量必须有名称。名字写在单词的右边。命名变量时应遵循以下规则: 变量的名称必须以字母或下划线开头 以字母或下划线开头后,名称可以由字母、下划线和

这几乎只是一个一般性的问题,但我想这可能是一个例子

我有一张名为“所有股票”的工作表。由于名称是两个单词,我无法将其声明为工作表,您如何解决此问题

Dim all stocks as Worksheet
ActiveWorkbook.Sheets.Add(After:=Sheets(Sheets.Count)).Name = "All Stocks"

变量必须有名称。名字写在单词的右边。命名变量时应遵循以下规则:

变量的名称必须以字母或下划线开头

以字母或下划线开头后,名称可以由字母、下划线和数字按任意顺序组成

变量的名称不能有句点

变量的名称最多可以包含255个字符

变量的名称在其使用区域中必须是唯一的

有些词不应该(必须)用来命名变量。这些字保留供VBA内部使用。因此,这些词被称为关键字。其中包括: And(按位)和(条件)作为布尔ByRef字节 ByVal调用案例CBool CByte CDate CDbl CInt CLng Const CSng CStr 日期:彼此加倍 ElseIf End EndIf错误为False 函数Get GoTo If Integer Let Lib Long Loop Me Mid Mod 新建下一个非空选项或(按位) 或(条件)私人/公共重拨REM恢复 选择“设置单个静态步骤字符串” Sub然后为True,直到vbCrLf 带whilexor的vbTab

如前所述,要声明变量,请键入Dim,后跟名称


来源:

变量必须有名称。名字写在单词的右边。命名变量时应遵循以下规则:

变量的名称必须以字母或下划线开头

以字母或下划线开头后,名称可以由字母、下划线和数字按任意顺序组成

变量的名称不能有句点

变量的名称最多可以包含255个字符

变量的名称在其使用区域中必须是唯一的

有些词不应该(必须)用来命名变量。这些字保留供VBA内部使用。因此,这些词被称为关键字。其中包括: And(按位)和(条件)作为布尔ByRef字节 ByVal调用案例CBool CByte CDate CDbl CInt CLng Const CSng CStr 日期:彼此加倍 ElseIf End EndIf错误为False 函数Get GoTo If Integer Let Lib Long Loop Me Mid Mod 新建下一个非空选项或(按位) 或(条件)私人/公共重拨REM恢复 选择“设置单个静态步骤字符串” Sub然后为True,直到vbCrLf 带whilexor的vbTab

如前所述,要声明变量,请键入Dim,后跟名称

资料来源:

我无法将此声明为工作表,您如何解决此问题

Dim all stocks as Worksheet
ActiveWorkbook.Sheets.Add(After:=Sheets(Sheets.Count)).Name = "All Stocks"
嗯,您不需要声明工作表,因为它们已经存在,并且可以通过名称、索引或代码名进行访问

Worksheets("Sheet1")   'Name
Worksheets(1)          'Index
Sheet1                 'CodeName
您可以将其中任何一个赋值给
工作表
类对象变量,结果相同:

Dim ws as Worksheet
Set ws = Worksheets(1)
MsgBox ws.Name
Set ws = Sheet1
MsgBox ws.Name
Set ws = Worksheets("Sheet1")
MsgBox ws.Name
您只需重新指定即可更改指向另一个对象的指针:

Set ws = Worksheets("Sheet2")  'Now ws represents Sheet2 instead of Sheet1
等等

此外,(通用)变量容器没有理由需要与对象的字符串文字名称完全对应,您可以声明
工作表
类型的变量:

Dim ws as Worksheet
Set ws = ActiveWorkbook.Sheets.Add(After:=Sheets(Sheets.Count))
ws.Name = "All Stocks"
我无法将此声明为工作表,您如何解决此问题

Dim all stocks as Worksheet
ActiveWorkbook.Sheets.Add(After:=Sheets(Sheets.Count)).Name = "All Stocks"
嗯,您不需要声明工作表,因为它们已经存在,并且可以通过名称、索引或代码名进行访问

Worksheets("Sheet1")   'Name
Worksheets(1)          'Index
Sheet1                 'CodeName
您可以将其中任何一个赋值给
工作表
类对象变量,结果相同:

Dim ws as Worksheet
Set ws = Worksheets(1)
MsgBox ws.Name
Set ws = Sheet1
MsgBox ws.Name
Set ws = Worksheets("Sheet1")
MsgBox ws.Name
您只需重新指定即可更改指向另一个对象的指针:

Set ws = Worksheets("Sheet2")  'Now ws represents Sheet2 instead of Sheet1
等等

此外,(通用)变量容器没有理由需要与对象的字符串文字名称完全对应,您可以声明
工作表
类型的变量:

Dim ws as Worksheet
Set ws = ActiveWorkbook.Sheets.Add(After:=Sheets(Sheets.Count))
ws.Name = "All Stocks"

我像你一样定义它;但让我再深入一点:
设置所有股票=工作表(“所有股票”)
。如果您要求在VBA中定义一个名称中带有空格的变量,那么我应该说您不能这样做。您的问题完全不清楚。定义某物意味着什么?什么是某物,您如何尝试将其定义为工作表?请把你的问题弄清楚你在问什么,请记住,在这样做的同时,我们完全不知道你想做什么,除了你在帖子中的文字解释之外——我们无法看到你的屏幕或读懂你的心思来理解你的要求。变量名只能包含某些字符——空格不是其中之一。你可以随意称呼它,所以@Masoud有很好的建议,而你没有。这是明确不允许的。解决方案是使用命名约定,以前称为
PascalCase
:将每个单词的第一个字母大写;用于模块及其成员、公共字段和全局变量、常量。然后对局部变量和参数使用
camelCase
(第一个字母小写,然后每个单词的第一个字母大写)。请注意,VBA不区分大小写,这使得为事物命名要找到好的名称有点困难。无论你做什么,都要避免公众成员的蛇案;但让我再深入一点:
设置所有股票=工作表(“所有股票”)
。如果您要求在VBA中定义一个名称中带有空格的变量,那么我应该说您不能这样做。您的问题完全不清楚。定义是什么