EXCELVBA工作表操作全能方法小结.docx
《EXCELVBA工作表操作全能方法小结.docx》由会员分享,可在线阅读,更多相关《EXCELVBA工作表操作全能方法小结.docx(14页珍藏版)》请在冰点文库上搜索。
EXCELVBA工作表操作全能方法小结
EXCELVBA工作表操作全能方法小结
[示例04-01]增加工作表(Add方法)
SubAddWorksheet()
MsgBox"在当前工作簿中添加一个工作表"
Worksheets.Add
MsgBox"在当前工作簿中的工作表sheet2之前添加一个工作表"
Worksheets.Addbefore:
=Worksheets("sheet2")
MsgBox"在当前工作簿中的工作表sheet2之后添加一个工作表"
Worksheets.Addafter:
=Worksheets("sheet2")
MsgBox"在当前工作簿中添加3个工作表"
Worksheets.AddCount:
=3
EndSub
示例说明:
Add方法带有4个可选的参数,其中参数Before和参数After指定所增加的工作表的位置,但两个参数只能选一;参数Count用来指定增加的工作表数目。
--------------------------------------------------------------------------------
[示例04-02]复制工作表(Copy方法)
SubCopyWorksheet()
MsgBox"在当前工作簿中复制工作表sheet1并将所复制的工作表放在工作表sheet2之前"
Worksheets("sheet1").CopyBefore:
=Worksheets("sheet2")
MsgBox"在当前工作簿中复制工作表sheet2并将所复制的工作表放在工作表sheet3之后"
Worksheets("sheet2").CopyAfter:
=Worksheets("sheet3")
EndSub
示例说明:
Copy方法带有2个可选的参数,即参数Before和参数After,在使用时两个参数只参选一。
--------------------------------------------------------------------------------
[示例04-03]移动工作表(Move方法)
SubMoveWorksheet()
MsgBox"在当前工作簿中将工作表sheet3移至工作表sheet2之前"
Worksheets("sheet3").MoveBefore:
=Worksheets("sheet2")
MsgBox"在当前工作簿中将工作表sheet1移至最后"
Worksheets("sheet1").MoveAfter:
=Worksheets(Worksheets.Count)
EndSub
示例说明:
Move方法与Copy方法的参数相同,作用也一样。
--------------------------------------------------------------------------------
[示例04-04]隐藏和显示工作表(Visible属性)
[示例04-04-01]
SubtestHide()
MsgBox"第一次隐藏工作表sheet1"
Worksheets("sheet1").Visible=False
MsgBox"显示工作表sheet1"
Worksheets("sheet1").Visible=True
MsgBox"第二次隐藏工作表sheet1"
Worksheets("sheet1").Visible=xlSheetHidden
MsgBox"显示工作表sheet1"
Worksheets("sheet1").Visible=True
MsgBox"第三次隐藏工作表sheet1"
Worksheets("sheet1").Visible=xlSheetHidden
MsgBox"显示工作表sheet1"
Worksheets("sheet1").Visible=xlSheetVisible
MsgBox"第四隐藏工作表sheet1"
Worksheets("sheet1").Visible=xlSheetVeryHidden
MsgBox"显示工作表sheet1"
Worksheets("sheet1").Visible=True
MsgBox"第五隐藏工作表sheet1"
Worksheets("sheet1").Visible=xlSheetVeryHidden
MsgBox"显示工作表sheet1"
Worksheets("sheet1").Visible=xlSheetVisible
EndSub
示例说明:
本示例演示了隐藏和显示工作表的各种情形。
其中,使用xlSheetVeryHidden常量来隐藏工作表,将不能通过选择工作表菜单栏中的“格式”——“工作表”——“取消隐藏”命令来取消隐藏。
--------------------------------------------------------------------------------
[示例04-04-02]
SubShowAllSheets()
MsgBox"使当前工作簿中的所有工作表都显示(即将隐藏的工作表也显示)"
DimwsAsWorksheet
ForEachwsInSheets
ws.Visible=True
Nextws
EndSub
--------------------------------------------------------------------------------
[示例04-05]获取工作表数(Count属性)
[示例04-05-01]
SubWorksheetNum()
DimiAsLong
i=Worksheets.Count
MsgBox"当前工作簿的工作表数为:
"&Chr(10)&i
EndSub
--------------------------------------------------------------------------------
[示例04-05-02]
SubWorksheetNum()
DimiAsLong
i=Sheets.Count
MsgBox"当前工作簿的工作表数为:
"&Chr(10)&i
EndSub
示例说明:
在一个包含图表工作表的工作簿中运行上述两段代码,将会得出不同的结果,原因是对于Sheets集合来讲,工作表包含图表工作表。
应注意Worksheets集合与Sheets集合的区别,下同。
--------------------------------------------------------------------------------
[示例04-06]获取或设置工作表名称(Name属性)
[示例04-06-01]
SubNameWorksheet()
DimsNameAsString,sChangeNameAsString
sName=Worksheets
(2).Name
MsgBox"当前工作簿中第2个工作表的名字为:
"&sName
sChangeName="我的工作表"
MsgBox"将当前工作簿中的第3个工作表名改为:
"&sChangeName
Worksheets(3).Name=sChangeName
EndSub
示例说明:
使用Name属性可以获取指定工作表的名称,也可以设置工作表的名称。
--------------------------------------------------------------------------------
[示例04-06-02]重命名工作表
SubReNameSheet()
DimxStrAsString
Retry:
Err.Clear
xStr=InputBox("请输入工作表的新名称:
"_
"重命名工作表",ActiveSheet.Name)
IfxStr=""ThenExitSub
OnErrorResumeNext
ActiveSheet.Name=xStr
IfErr.Number<>0Then
MsgBoxErr.Number&""&Err.Description
Err.Clear
GoToRetry
EndIf
OnErrorGoTo0
'.........
EndSub
--------------------------------------------------------------------------------
[NextPage][示例04-07]激活/选择工作表(Activate方法和Select方法)
[示例04-07-01]
SubSelectWorksheet()
MsgBox"激活当前工作簿中的工作表sheet2"
Worksheets("sheet2").Activate
MsgBox"激活当前工作簿中的工作表sheet3"
Worksheets("sheet3").Select
MsgBox"同时选择工作簿中的工作表sheet2和sheet3"
Worksheets(Array("sheet2","sheet3")).Select
EndSub
示例说明:
Activate方法只能激活一个工作表,而Select方法可以同时选择多个工作表。
--------------------------------------------------------------------------------
[示例04-07-02]
SubSelectManySheet()
MsgBox"选取第一个和第三个工作表."
Worksheets
(1).Select
Worksheets(3).SelectFalse
EndSub
--------------------------------------------------------------------------------
[示例04-08]获取当前工作表的索引号(Index属性)
SubGetSheetIndex()
DimiAsLong
i=ActiveSheet.Index
MsgBox"您正使用的工作表索引号为"&i
EndSub
--------------------------------------------------------------------------------
[示例04-09]选取前一个工作表(Previous属性)
SubPreviousSheet()
IfActiveSheet.Index<>1Then
MsgBox"选取当前工作簿中当前工作表的前一个工作表"
ActiveSheet.Previous.Activate
Else
MsgBox"已到第一个工作表"
EndIf
EndSub
示例说明:
如果当前工作表是第一个工作表,则使用Previous属性会出错。
--------------------------------------------------------------------------------
[示例04-10]选取下一个工作表(Next属性)
SubNextSheet()
IfActiveSheet.Index<>Worksheets.CountThen
MsgBox"选取当前工作簿中当前工作表的下一个工作表"
ActiveSheet.Next.Activate
Else
MsgBox“已到最后一个工作表”
EndIf
EndSub
示例说明:
如果当前工作表是最后一个工作表,则使用Next属性会出错。
--------------------------------------------------------------------------------
[示例04-11]工作表行和列的操作
[示例04-11-01]隐藏行
SubHideRow()
DimiRowAsLong
MsgBox"隐藏当前单元格所在的行"
iRow=ActiveCell.Row
ActiveSheet.Rows(iRow).Hidden=True
MsgBox"取消隐藏"
ActiveSheet.Rows(iRow).Hidden=False
EndSub
--------------------------------------------------------------------------------
[示例04-11-02]隐藏列
SubHideColumn()
DimiColumnAsLong
MsgBox"隐藏当前单元格所在列"
iColumn=ActiveCell.Column
ActiveSheet.Columns(iColumn).Hidden=True
MsgBox"取消隐藏"
ActiveSheet.Columns(iColumn).Hidden=False
EndSub
--------------------------------------------------------------------------------
[示例04-11-03]插入行
SubInsertRow()
DimrRowAsLong
MsgBox"在当前单元格上方插入一行"
rRow=Selection.Row
ActiveSheet.Rows(rRow).Insert
EndSub
--------------------------------------------------------------------------------
[示例04-11-04]插入列
SubInsertColumn()
DimcColumnAsLong
MsgBox"在当前单元格所在行的左边插入一行"
cColumn=Selection.Column
ActiveSheet.Columns(cColumn).Insert
EndSub
--------------------------------------------------------------------------------
[示例04-11-05]插入多行
SubInsertManyRow()
MsgBox"在当前单元格所在行上方插入三行"
DimrRowAsLong,iAsLong
Fori=1To3
rRow=Selection.Row
ActiveSheet.Rows(rRow).Insert
Nexti
EndSub
--------------------------------------------------------------------------------
[示例04-11-06]设置行高
SubSetRowHeight()
MsgBox"将当前单元格所在的行高设置为25"
DimrRowAsLong,iRowAsLong
rRow=ActiveCell.Row
iRow=ActiveSheet.Rows(rRow).RowHeight
ActiveSheet.Rows(rRow).RowHeight=25
MsgBox"恢复到原来的行高"
ActiveSheet.Rows(rRow).RowHeight=iRow
EndSub
--------------------------------------------------------------------------------
[示例04-11-07]设置列宽
SubSetColumnWidth()
MsgBox"将当前单元格所在列的列宽设置为20"
DimcColumnAsLong,iColumnAsLong
cColumn=ActiveCell.Column
iColumn=ActiveSheet.Columns(cColumn).ColumnWidth
ActiveSheet.Columns(cColumn).ColumnWidth=20
MsgBox"恢复至原来的列宽"
ActiveSheet.Columns(cColumn).ColumnWidth=iColumn
EndSub
--------------------------------------------------------------------------------
[示例04-11-08]恢复行高列宽至标准值
SubReSetRowHeightAndColumnWidth()
MsgBox"将当前单元格所在的行高和列宽恢复为标准值"
Selection.UseStandardHeight=True
Selection.UseStandardWidth=True
EndSub
--------------------------------------------------------------------------------
[示例04-12]工作表标签
[示例04-12-01]设置工作表标签的颜色
SubSetSheetTabColor()
MsgBox"设置当前工作表标签的颜色"
ActiveSheet.Tab.ColorIndex=7
EndSub
--------------------------------------------------------------------------------
[示例04-12-01]恢复工作表标签颜色
SubSetSheetTabColorDefault()
MsgBox"将当前工作表标签颜色设置为默认值"
ActiveSheet.Tab.ColorIndex=-4142
EndSub
--------------------------------------------------------------------------------
[示例04-12-03]交替隐藏或显示工作表标签
SubHideOrShowSheetTab()
MsgBox"隐藏/显示工作表标签"
ActiveWindow.DisplayWorkbookTabs=NotActiveWindow.DisplayWorkbookTabs
EndSub
--------------------------------------------------------------------------------
[NextPage][示例04-13]确定打印的页数(HPageBreaks属性与VPageBreaks属性)
SubPageCount()
DimiAsLong
i=(ActiveSheet.HPageBreaks.Count+1)*(ActiveSheet.VPageBreaks.Count+1)
MsgBox"当前工作表共"&i&"页."
EndSub
--------------------------------------------------------------------------------
[示例04-14]保护/撤销保护工作表
[示例04-14-01]
SubProtectSheet()
MsgBox"保护当前工作表并设定密码"
ActiveSheet.ProtectPassword:
="fanjy"
EndSub
示例说明:
运行代码后,当前工作表中将不允许编辑,除非撤销工作表保护。
--------------------------------------------------------------------------------
[示例04-14-02]
SubUnprotectSheet()
MsgBox"撤销当前工作表保护"
ActiveSheet.Unprotect
EndSub
示例说明:
运行代码后,如果原保护的工作表设置有密码,则要求输入密码。
--------------------------------------------------------------------------------
[示例04-14-03]保护当前工作簿中的所有工作表
SubProtectAllWorkSheets()
OnErrorResumeNext
DimwsAsWorksheet
DimmyPasswordAsString
myPassword=InputBox("请输入您的密码"&vbCrLf&_
"(不输入表明无密码)"&vbCrLf&vbCrLf&_
"确保您没有忘记密码!
","输入密码")
ForEachwsInThisWorkbook.Worksheets
ws.Protect(myPassword)
Nextws
EndSub
--------------------------------------------------------------------------------
[示例04-14-04]撤销对当前工作簿中所有工作表的保护
SubUnprotectAllWorkSheets()
OnErrorResumeNext
DimwsAsWorksheet
DimmyPasswordAsString
myPassword=InputBox("请输入您的密码"&vbCrLf&_
"(不输入表示无密码)","输入密码")
ForEachwsInThisWorkbook.Worksheets
ws.Unprotect(myPassword)
Nextws
EndSub
--------------------------------------------------------------------------------
[示例04-14-05]仅能编辑未锁定的单元格
SubOnlyEditUnlockedCells()
Sheets("Sheet1").EnableSelection=xlUnlockedCells
Acti