|
今天我们讲讲Sheets对象的方法
Sheets.Add 方法
新建工作表、图表或宏表,新建的工作表将成为活动工作表
语法:Add(Before, After, Count, Type)
Before 可选 Variant 指定工作表的对象,新建的工作表将置于此工作表之前。
After 可选 Variant 指定工作表的对象,新建的工作表将置于此工作表之后。
Count 可选 Variant 要添加的工作表数。默认值为 1。
Type 可选 Variant 指定工作表类型。
可以为下列 XlSheetType 常量之一:xlWorksheet、xlChart、xlExcel4MacroSheet 或 xlExcel4IntlMacroSheet。
如果基于现有模板插入工作表,则指定该模板的路径,默认值为 xlWorksheet。
返回值:Object类型是,代表新的工作表,图表或宏表
如果同时省略 Before 和 After,则新工作表插入到活动工作表之前。
示例:
ActiveWorkbook.Sheets.Add Before:=Worksheets(Worksheets.Count)
'在最后一个工作表前插入一个工作表
ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count), Count:=3, Type:=xlChart
'在最后一个工作表之后插入3个图表工作表
Sheets.Copy 方法
将工作表复制到工作簿的另一位置
语法:Copy(Before, After)
Before 可选 Variant 将要在其之前放置所复制工作表的工作表。如果指定了 After,则不能指定 Before。
After 可选 Variant 将要在其之后放置所复制工作表的工作表。如果指定了 Before,则不能指定 After。
注意:如果既不指定 Before 也不指定 After,则 Microsoft Excel 将新建一个工作簿,其中包含复制的工作表。
在工作表标签上右键移动或复制操作时,细心的童鞋应该有注意过的。
复制的工作表将成为活动工作表。
示例:
ActiveWorkbook.Sheets(1).Copy After:=Sheets(Sheets.Count)
ActiveWorkbook.Sheets(1).Copy Before:=Sheets(1)
ActiveSheet.Copy
Sheets.Delete 方法
删除对象
示例:
Sheets(Array(1, 2, 3)).Delete
一次删除3个工作表,在运行的时候,中间会有对话框来确认是否删除数据。
在代码执行的时候,在代码运行的中间一般不推荐显示一个对话框来等用户确认,可以通过Application对象的DisplayAlerts属性来实现。
将此属性设置为 False 可在宏运行时禁止显示提示和警告消息;
当出现需要用户应答的消息时,Microsoft Excel 将选择默认应答。
如果将该属性设置为 False,则在代码运行结束后,Microsoft Excel 会将该属性设置为 True,除非运行的是跨进程代码。
对于不同的情况,有可能对话框的默认操作是不同的,所以有时需要注意下。
上述代码就可改为:
Application.DisplayAlerts = False
Sheets(Array(1, 2, 3)).Delete
Application.DisplayAlerts = True
当删除工作簿内的全部工作表时,会产生代码为1004的错误提示,所以删除时必须保证工作簿内至少有一个可见的工作表不会被删除。
Sheets.FillAcrossSheets 方法
将单元格区域复制到集合中所有其他工作表的同一位置
这个功能在10里叫 成组工作表,点击 开始 选项卡, 编辑 组,点击填充,在下拉菜单里就有 成组工作表。
语法:FillAcrossSheets(Range, Type)
Range 必选 Range 要填充到集合中所有工作表上的单元格区域。该区域必须来自集合中的某个工作表。
Type 可选 XlFillWith 指定如何复制区域。
Type可为以下三种值:
xlFillWithAll -4104 复制内容和格式。
xlFillWithContents 2 仅复制内容。
xlFillWithFormats -4122 仅复制格式。
示例:
Sheets(1).Select
With Range("A1:D8")
.FormulaR1C1 = "=ROW()&COLUMN()"
.Interior.Color = 49407
.Borders.LineStyle = xlContinuous
.Select
End With
Sheets(Array(1, 2, 3)).Select
Sheets("Sheet1").Activate
ActiveWindow.SelectedSheets.FillAcrossSheets Range:=Selection, Type:=xlAll
以上代码为录制的宏修改。
Dim rg As Range
Sheets.Add Count:=3
With Sheets(1)
Set rg = .Range("A1:D8")
With rg
.FormulaR1C1 = "=ROW()&COLUMN()"
.Interior.Color = 49407
.Borders.LineStyle = xlContinuous
End With
End With
Sheets(Array(1, 2, 3)).FillAcrossSheets Range:=rg, Type:=xlAll
手工录入的代码,为了避免工作簿中工作表的数量不够3个导致运行错误,先直接插入3个工作表。
|
|