分享

跟烟花入门VBA之43:sheets对象(二)

 fzchenwl 2015-04-01

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多