今天我们讲讲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个工作表。
|