Excel工作表名称的使用
来源:互联网 发布:新水浒q传源码 编辑:程序博客网 时间:2024/04/30 22:47
Sheets集合与Worksheets集合的区别
Sheets集合代表当前工作簿中的所有工作表,包括图表工作表、对话框工作表和宏表。
Worksheets集合仅代表当前工作簿中的所有工作表。
如下图1所示的工作簿。
图1
在VBE编辑器中输入如下代码进行测试:
MsgBox Sheets(1).Name ‘返回Chart1
MsgBox Worksheets(1).Name ‘返回Sheet1
MsgBox Sheets.Count ‘返回6
MsgBox Worksheets.Count ‘返回3
Activate方法与Select方法的区别
当需要激活或者是选择某个工作表时,使用Sheets(1).Activate和Sheets(1).Select的作用表面上看起来是相同的。但是,如果将需要激活或者是选择的工作表隐藏后,使用Sheets(1).Select将会出现错误,而使用Sheets(1).Activate则会正常运行。如下代码:
‘- - - 下面的代码运行正常 - - - -
Sub test1()
Sheets(1).Visible = xlHidden
Sheets(1).Activate
End Sub
‘- - - 下面的代码运行错误,作用于对象的方法无效 - - - -
Sub test2()
Sheets(1).Visible = xlHidden
Sheets(1).Select
End Sub
Activate方法是用来激活对象的方法,而Select方法是用来选取对象的方法,能使用Select方法一次选取多个工作表,但不能使用Activate方法一次激活多个工作表,一次只能激活一个工作表。见下面的代码示例:
‘- - - 下面的代码运行正常 - - - -
Sub Test3()
ActiveWorkbook.Sheets(Array(1, 2, 3)).Select
End Sub
‘- - - 下面的代码运行错误,对象不支持该属性和方法 - - - -
Sub Test4()
ActiveWorkbook.Sheets(Array(1, 2, 3)).Activate
End Sub
当然,上述内容同样适用于Worksheets集合。
工作表名称的使用
可以在代码中采用下面的三种方式引用工作表:
(1) 该工作表在工作簿中的位置(索引号)。索引号自工作表标签最左边向右依次计数,最左边的是第1个工作表,依次为第2个、3个……等等。
(2) 该工作表的名称,即在工作表左下角中看到的工作表标签中的名称。
(3) 该工作表的对象名称,即在创建工作表时自动分配给该工作表的名称(在VBE编辑器中的工程窗口中可以看到)。
通常,在代码中引用工作表时,我们所使用的是工作表对象的Index属性和Name属性,例如 Worksheets(1).Select或者Worksheets(“Sheet1”).Select。
但是,如果工作表的名称被改变或者工作表被重新排序或者删除其中的一些工作表后,则不能使用工作表对象的Name属性或Index属性引用所需要的工作表,这可能使已经编写好的代码出现错误。因此,我们应该考虑虽然工作簿中的工作表改变但不影响工作表引用的办法,可以使用工作表对象的名称避免这种情况,即上面所讲的第3种方式,无论是在工作簿中增加或删除其它工作表,还是对工作表排序,或者是重命名需要引用的该工作表,其对象名都不变(除非您删除该工作表,或者是在VBE窗口中重命名该对象)。工作表对象的名称可以在VBE编程器中看到,如下图2所示。例如,Sheet1(Sheet1),左边是工作表对象的名称,右边的括号中是工作表名,括号中的工作表名可以通过在工作簿界面中改变相应的工作表标签名来改变,如果在工作表中重命名Sheet1工作表为“数据工作表”,则工程属性窗口中的名称为:Sheet1(数据工作表)。在下图2中,工作表Sheet3的对象名称是“主工作表”,而在Excel中,如果改变工作表Sheet3的名称为“数据工作表”,在VBE编程器的工程窗口中,“Sheet3”将变成“数据工作表”,但是该工作表的对象名称仍为“主工作表”,如下图3所示。
图2 图3
改变工作表对象名称的方法是,通过改变属性窗口中的(名称)或者在代码中使用Properties("_CodeName")。下面的代码将会添加一个工作表并将该工作表的对象名称命名为"ws_main",这样,在以后的代码中就可以使用该对象名称来引用这个工作表,而不必担心工作表名称改变或工作表顺序改变。
Sub ChageWksObjectName()
Dim ws As Worksheet
Dim sPrevCodeName As String
Dim sNewCodeName As String
'设置新对象的名称
sNewCodeName = "ws_main"
'增加新工作表
Set ws = Worksheets.Add
'获取新增工作表的对象名称
sPrevCodeName = ws.CodeName
'变化新增工作表的对象名称
ThisWorkbook.VBProject.VBComponents(sPrevCodeName). _
Properties("_CodeName") = sNewCodeName
End Sub
‘- - - - - - - - - - - - - - - - - - - - - -
Sub Test()
ws_main.Range("A1").Value = "This is it!"
End Sub
下面的示例简单的介绍了工作表的引用方法。在示例中,使用了工作表Sheet1。
(1) 指定工作表的位置激活工作表。下面的代码激活工作簿中的第1个工作表,即工作表标签最左边的工作表。(如果增加或删除了其中某工作表,或者是对工作表进行排序后,可能引用的不是您想引用的工作表)
Sub ActivateFirstsheetInBook()
Sheets(1).Activate
End Sub
或者:
Sub ReferenceShtByIndexNumber()
Sheets(1).[A1:D4].Copy Sheets(2).[A1]
End Sub
(2) 通过工作表的名称激活工作表,而不管工作表处于工作簿中的什么位置以及工作表对象的代码名称。(如果该工作表被重命名后,运行代码会出错)
Sub ActivateSheet1_1()
Sheets("Sheet1").Activate
End Sub
或者:
Sub ReferenceShtByGivenName()
[Sheet1!A1:D4].Copy [Sheet2!A1]
End Sub
(3) 通过工作表对象的名称激活工作表,而不管该工作表处于工作簿中的什么位置以及该工作表的名称)
Sub ActivateSheet1_2()
Sheet1.Activate
End Sub
或者:
Sub ReferenceShtByCodeName()
Sheet1.[A1:D4].Copy Sheet2.[A1]
End Sub
Sheets集合代表当前工作簿中的所有工作表,包括图表工作表、对话框工作表和宏表。
Worksheets集合仅代表当前工作簿中的所有工作表。
如下图1所示的工作簿。
图1
在VBE编辑器中输入如下代码进行测试:
MsgBox Sheets(1).Name ‘返回Chart1
MsgBox Worksheets(1).Name ‘返回Sheet1
MsgBox Sheets.Count ‘返回6
MsgBox Worksheets.Count ‘返回3
Activate方法与Select方法的区别
当需要激活或者是选择某个工作表时,使用Sheets(1).Activate和Sheets(1).Select的作用表面上看起来是相同的。但是,如果将需要激活或者是选择的工作表隐藏后,使用Sheets(1).Select将会出现错误,而使用Sheets(1).Activate则会正常运行。如下代码:
‘- - - 下面的代码运行正常 - - - -
Sub test1()
Sheets(1).Visible = xlHidden
Sheets(1).Activate
End Sub
‘- - - 下面的代码运行错误,作用于对象的方法无效 - - - -
Sub test2()
Sheets(1).Visible = xlHidden
Sheets(1).Select
End Sub
Activate方法是用来激活对象的方法,而Select方法是用来选取对象的方法,能使用Select方法一次选取多个工作表,但不能使用Activate方法一次激活多个工作表,一次只能激活一个工作表。见下面的代码示例:
‘- - - 下面的代码运行正常 - - - -
Sub Test3()
ActiveWorkbook.Sheets(Array(1, 2, 3)).Select
End Sub
‘- - - 下面的代码运行错误,对象不支持该属性和方法 - - - -
Sub Test4()
ActiveWorkbook.Sheets(Array(1, 2, 3)).Activate
End Sub
当然,上述内容同样适用于Worksheets集合。
工作表名称的使用
可以在代码中采用下面的三种方式引用工作表:
(1) 该工作表在工作簿中的位置(索引号)。索引号自工作表标签最左边向右依次计数,最左边的是第1个工作表,依次为第2个、3个……等等。
(2) 该工作表的名称,即在工作表左下角中看到的工作表标签中的名称。
(3) 该工作表的对象名称,即在创建工作表时自动分配给该工作表的名称(在VBE编辑器中的工程窗口中可以看到)。
通常,在代码中引用工作表时,我们所使用的是工作表对象的Index属性和Name属性,例如 Worksheets(1).Select或者Worksheets(“Sheet1”).Select。
但是,如果工作表的名称被改变或者工作表被重新排序或者删除其中的一些工作表后,则不能使用工作表对象的Name属性或Index属性引用所需要的工作表,这可能使已经编写好的代码出现错误。因此,我们应该考虑虽然工作簿中的工作表改变但不影响工作表引用的办法,可以使用工作表对象的名称避免这种情况,即上面所讲的第3种方式,无论是在工作簿中增加或删除其它工作表,还是对工作表排序,或者是重命名需要引用的该工作表,其对象名都不变(除非您删除该工作表,或者是在VBE窗口中重命名该对象)。工作表对象的名称可以在VBE编程器中看到,如下图2所示。例如,Sheet1(Sheet1),左边是工作表对象的名称,右边的括号中是工作表名,括号中的工作表名可以通过在工作簿界面中改变相应的工作表标签名来改变,如果在工作表中重命名Sheet1工作表为“数据工作表”,则工程属性窗口中的名称为:Sheet1(数据工作表)。在下图2中,工作表Sheet3的对象名称是“主工作表”,而在Excel中,如果改变工作表Sheet3的名称为“数据工作表”,在VBE编程器的工程窗口中,“Sheet3”将变成“数据工作表”,但是该工作表的对象名称仍为“主工作表”,如下图3所示。
图2 图3
改变工作表对象名称的方法是,通过改变属性窗口中的(名称)或者在代码中使用Properties("_CodeName")。下面的代码将会添加一个工作表并将该工作表的对象名称命名为"ws_main",这样,在以后的代码中就可以使用该对象名称来引用这个工作表,而不必担心工作表名称改变或工作表顺序改变。
Sub ChageWksObjectName()
Dim ws As Worksheet
Dim sPrevCodeName As String
Dim sNewCodeName As String
'设置新对象的名称
sNewCodeName = "ws_main"
'增加新工作表
Set ws = Worksheets.Add
'获取新增工作表的对象名称
sPrevCodeName = ws.CodeName
'变化新增工作表的对象名称
ThisWorkbook.VBProject.VBComponents(sPrevCodeName). _
Properties("_CodeName") = sNewCodeName
End Sub
‘- - - - - - - - - - - - - - - - - - - - - -
Sub Test()
ws_main.Range("A1").Value = "This is it!"
End Sub
下面的示例简单的介绍了工作表的引用方法。在示例中,使用了工作表Sheet1。
(1) 指定工作表的位置激活工作表。下面的代码激活工作簿中的第1个工作表,即工作表标签最左边的工作表。(如果增加或删除了其中某工作表,或者是对工作表进行排序后,可能引用的不是您想引用的工作表)
Sub ActivateFirstsheetInBook()
Sheets(1).Activate
End Sub
或者:
Sub ReferenceShtByIndexNumber()
Sheets(1).[A1:D4].Copy Sheets(2).[A1]
End Sub
(2) 通过工作表的名称激活工作表,而不管工作表处于工作簿中的什么位置以及工作表对象的代码名称。(如果该工作表被重命名后,运行代码会出错)
Sub ActivateSheet1_1()
Sheets("Sheet1").Activate
End Sub
或者:
Sub ReferenceShtByGivenName()
[Sheet1!A1:D4].Copy [Sheet2!A1]
End Sub
(3) 通过工作表对象的名称激活工作表,而不管该工作表处于工作簿中的什么位置以及该工作表的名称)
Sub ActivateSheet1_2()
Sheet1.Activate
End Sub
或者:
Sub ReferenceShtByCodeName()
Sheet1.[A1:D4].Copy Sheet2.[A1]
End Sub
- Excel工作表名称的使用
- 获取Excel工作表的名称
- 列出excel所有工作表名称
- net 获取Excel所有工作表名称
- Excel取当前工作表名称
- Excel技能——批量生成excel的工作表名称目录链接
- java jxl excel 数据导出 重新命名无效的工作表名称
- C#读取excel工作表(sheet)中的内容-----采用名称的方法
- 怎样提取Excel工作表中排名前几名的名称和数据
- 使用OleDb读取Excel所有的Table并用Sheet名称作为表名称
- 使用OleDb读取Excel所有的Table并用Sheet名称作为表名称
- Excel VBA 将当前活动工作表中的图片保存到以工作表名称命名的文件夹内
- Excel中:利用公式获取工作表名称
- excel文件中的多个工作表按名称排序
- 列出所有工作表的名称
- 使用 Excel 2003 工作表的 VBA 示例
- 使用 Excel 2003 工作表的 VBA 示例
- 使用 Excel 2003 工作表的 VBA 示例 (From MSDN)
- SMTP协议原始命令码和工作原理
- 比尔盖茨给刚毕业程序员的10点忠告
- (忽然觉得,我的这个博客更像是记录我生活的日常博客,而不是技术,这与CSDN的技术风格,有点相悖,嘿嘿)
- 不做人生规划,你离挨饿只有三天(转)
- C#实践—简单的事件设计
- Excel工作表名称的使用
- C经典案例
- 在BREW中打造自己的GUI(5)-滚动条的实现
- 预编译头文件(precompiled header)
- 关于initializer list
- 特别报道:改革开放30年 中国IT产业品牌之殇
- Java中方法重载和方法重写区别
- 3月4日,天晴,心阴
- 深入理解C语言指针的奥秘