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中定义一个名称中带有空格的变量,那么我应该说您不能这样做。您的问题完全不清楚。定义是什么