ExcelVBA>>ExcelVBA编程入门范例>>工作表对象(fanjy)
End Sub
[示例04-05-02]
Sub WorksheetNum() Dim i As Long i = Sheets.Count
MsgBox \当前工作簿的工作表数为:\End Sub
示例说明:在一个包含图表工作表的工作簿中运行上述两段代码,将会得出不同的结果,原因是对于Sheets集合来讲,工作表包含图表工作表。应注意Worksheets集合与Sheets集合的区别,下同。
[示例04-06]获取或设置工作表名称(Name属性)
[示例04-06-01]
Sub NameWorksheet()
Dim sName As String, sChangeName As String sName = Worksheets(2).Name
MsgBox \当前工作簿中第2个工作表的名字为:\ sChangeName = \我的工作表\
MsgBox \将当前工作簿中的第3个工作表名改为:\ Worksheets(3).Name = sChangeName End Sub
示例说明:使用Name属性可以获取指定工作表的名称,也可以设置工作表的名称。 [示例04-06-02]重命名工作表 Sub ReNameSheet() Dim xStr As String Retry:
Err.Clear
xStr = InputBox(\请输入工作表的新名称:\ , \重命名工作表\ If xStr = \ On Error Resume Next ActiveSheet.Name = xStr If Err.Number <> 0 Then
MsgBox Err.Number & \ Err.Clear GoTo Retry End If
On Error GoTo 0 '......... End Sub
- 3 -http://fanjy.blog.excelhome.net ExcelVBA>>ExcelVBA编程入门范例>>工作表对象(fanjy)
[示例04-07]激活/选择工作表(Activate方法和Select方法)
[示例04-07-01]
Sub SelectWorksheet()
MsgBox \激活当前工作簿中的工作表sheet2\ Worksheets(\
MsgBox \激活当前工作簿中的工作表sheet3\ Worksheets(\
MsgBox \同时选择工作簿中的工作表sheet2和sheet3\ Worksheets(Array(\End Sub
示例说明:Activate方法只能激活一个工作表,而Select方法可以同时选择多个工作表。 [示例04-07-02]
Sub SelectManySheet()
MsgBox \选取第一个和第三个工作表.\ Worksheets(1).Select
Worksheets(3).Select False End Sub
[示例04-08]获取当前工作表的索引号(Index属性)
Sub GetSheetIndex() Dim i As Long
i = ActiveSheet.Index
MsgBox \您正使用的工作表索引号为\End Sub
[示例04-09]选取前一个工作表(Previous属性)
Sub PreviousSheet()
If ActiveSheet.Index <> 1 Then
MsgBox \选取当前工作簿中当前工作表的前一个工作表\ ActiveSheet.Previous.Activate Else
MsgBox \已到第一个工作表\ End If End Sub
示例说明:如果当前工作表是第一个工作表,则使用Previous属性会出错。
[示例04-10]选取下一个工作表(Next属性)
Sub NextSheet()
If ActiveSheet.Index <> Worksheets.Count Then
MsgBox \选取当前工作簿中当前工作表的下一个工作表\
- 4 -http://fanjy.blog.excelhome.net ExcelVBA>>ExcelVBA编程入门范例>>工作表对象(fanjy)
ActiveSheet.Next.Activate Else
MsgBox “已到最后一个工作表” End If End Sub
示例说明:如果当前工作表是最后一个工作表,则使用Next属性会出错。
[示例04-11]工作表行和列的操作
[示例04-11-01]隐藏行 Sub HideRow()
Dim iRow As Long
MsgBox \隐藏当前单元格所在的行\ iRow = ActiveCell.Row
ActiveSheet.Rows(iRow).Hidden = True MsgBox \取消隐藏\
ActiveSheet.Rows(iRow).Hidden = False End Sub
[示例04-11-02]隐藏列 Sub HideColumn()
Dim iColumn As Long
MsgBox \隐藏当前单元格所在列\ iColumn = ActiveCell.Column
ActiveSheet.Columns(iColumn).Hidden = True MsgBox \取消隐藏\
ActiveSheet.Columns(iColumn).Hidden = False End Sub
[示例04-11-03]插入行 Sub InsertRow()
Dim rRow As Long
MsgBox \在当前单元格上方插入一行\ rRow = Selection.Row
ActiveSheet.Rows(rRow).Insert End Sub
[示例04-11-04]插入列 Sub InsertColumn()
Dim cColumn As Long
MsgBox \在当前单元格所在行的左边插入一行\ cColumn = Selection.Column
ActiveSheet.Columns(cColumn).Insert End Sub
[示例04-11-05]插入多行 Sub InsertManyRow()
MsgBox \在当前单元格所在行上方插入三行\
- 5 -http://fanjy.blog.excelhome.net ExcelVBA>>ExcelVBA编程入门范例>>工作表对象(fanjy)
Dim rRow As Long, i As Long For i = 1 To 3
rRow = Selection.Row
ActiveSheet.Rows(rRow).Insert Next i End Sub
[示例04-11-06]设置行高 Sub SetRowHeight()
MsgBox \将当前单元格所在的行高设置为25\ Dim rRow As Long, iRow As Long rRow = ActiveCell.Row
iRow = ActiveSheet.Rows(rRow).RowHeight ActiveSheet.Rows(rRow).RowHeight = 25 MsgBox \恢复到原来的行高\
ActiveSheet.Rows(rRow).RowHeight = iRow End Sub
[示例04-11-07]设置列宽 Sub SetColumnWidth()
MsgBox \将当前单元格所在列的列宽设置为20\ Dim cColumn As Long, iColumn As Long cColumn = ActiveCell.Column
iColumn = ActiveSheet.Columns(cColumn).ColumnWidth ActiveSheet.Columns(cColumn).ColumnWidth = 20 MsgBox \恢复至原来的列宽\
ActiveSheet.Columns(cColumn).ColumnWidth = iColumn End Sub
[示例04-11-08]恢复行高列宽至标准值 Sub ReSetRowHeightAndColumnWidth()
MsgBox \将当前单元格所在的行高和列宽恢复为标准值\ Selection.UseStandardHeight = True Selection.UseStandardWidth = True End Sub
[示例04-12]工作表标签
[示例04-12-01] 设置工作表标签的颜色 Sub SetSheetTabColor()
MsgBox \设置当前工作表标签的颜色\ ActiveSheet.Tab.ColorIndex = 7 End Sub
[示例04-12-01]恢复工作表标签颜色 Sub SetSheetTabColorDefault()
MsgBox \将当前工作表标签颜色设置为默认值\ ActiveSheet.Tab.ColorIndex = -4142 End Sub
- 6 -http://fanjy.blog.excelhome.net ExcelVBA>>ExcelVBA编程入门范例>>工作表对象(fanjy)
[示例04-12-03]交替隐藏或显示工作表标签 Sub HideOrShowSheetTab()
MsgBox \隐藏/显示工作表标签\
ActiveWindow.DisplayWorkbookTabs = Not ActiveWindow.DisplayWorkbookTabs End Sub
[示例04-13]确定打印的页数(HPageBreaks属性与VPageBreaks属性)
Sub PageCount() Dim i As Long
i = (ActiveSheet.HPageBreaks.Count + 1) * (ActiveSheet.VPageBreaks.Count + 1) MsgBox \当前工作表共\页.\End Sub
[示例04-14]保护/撤销保护工作表
[示例04-14-01] Sub ProtectSheet()
MsgBox \保护当前工作表并设定密码\ ActiveSheet.Protect Password:=\End Sub
示例说明:运行代码后,当前工作表中将不允许编辑,除非撤销工作表保护。 [示例04-14-02]
Sub UnprotectSheet()
MsgBox \撤销当前工作表保护\ ActiveSheet.Unprotect End Sub
示例说明:运行代码后,如果原保护的工作表设置有密码,则要求输入密码。 [示例04-14-03]保护当前工作簿中的所有工作表 Sub ProtectAllWorkSheets() On Error Resume Next Dim ws As Worksheet
Dim myPassword As String
myPassword = InputBox(\请输入您的密码\ \不输入表明无密码)\ \确保您没有忘记密码!\输入密码\ For Each ws In ThisWorkbook.Worksheets ws.Protect (myPassword) Next ws End Sub
[示例04-14-04]撤销对当前工作簿中所有工作表的保护 Sub UnprotectAllWorkSheets() On Error Resume Next
- 7 -http://fanjy.blog.excelhome.net