VBA实战技巧精粹004:在工作簿中添加新工作表

使用Worksheets集合或Sheets集合的Add方法可以实现在指定位置添加新工作表,并且添加后的新工作表自动为活动工作表。

Sub 插入新工作表并改名()
    With Worksheets
        .Add after:=Worksheets(Worksheets.Count)
        ActiveSheet.Name = "ExcelHome"
    End With
End Sub
上面的程序可以实现在当前工作簿中的所有工作表后面添加一个新工作表,并将其名称重命名为“ExcelHome”

需要解释一下Add方法后的参数:

expression.Add(Before, After, Count, Type)

expression      必需。该表达式返回上面的对象之一。

Before      Variant 类型,可选。指定工作表对象,新建的工作表将置于此工作表之前。

After      Variant 类型,可选。指定工作表对象,新建的工作表将置于此工作表之后。

Count      Variant 类型,可选。要新建的工作表的数目。默认值为 1。

Type      Variant 类型,可选。指定工作表类型。可为以下 XlSheetType 常量之一:xlWorksheet、xlChart、xlExcel4MacroSheet 或 xlExcel4IntlMacroSheet。如果要基于现有模板插入工作表,则请指定该模板的路径。默认值为 xlWorksheet。

说明

如果 Before 和 After 两者均省略,则新建的工作表将插入到活动工作表之前。

这里提到了Count参数,什么意思?可以指定一次插入多少张工作表!

Sub 插入新工作表并改名2()
    With Worksheets
        Debug.Print .Count
        .Add after:=Worksheets(Worksheets.Count), Count:=10
        ActiveSheet.Name = "ExcelHome"
        Debug.Print .Count
    End With
End Sub

有个问题,当工作簿窗口隐藏时,再运行上面的程序就会报错:

如何解决?将工作表的创建进行实例化,可以解决这个问题。

Sub 插入新工作表并改名改进()
    Dim sht As Worksheet
    With ThisWorkbook
        Set sht = .Worksheets.Add(after:=.Worksheets(.Worksheets.Count))
        sht.Name = "Excelhome"
    End With
    Set sht = Nothing
End Sub

仔细对比上两段代码,有个地方:Add方法第一段代码加括号不能通过,而第二段代码中必须用括号括起来,不然也无法通过,为什么?哪位大侠知道望能不吝赐教。

 

43 Things: Excel VBA
BuzzNet: Excel VBA
del.icio.us: Excel VBA
Flickr: Excel VBA
IceRocket: Excel VBA
LiveJournal: Excel VBA
Technorati: Excel VBA
菊子曰 这就是菊子曰啦!
posted @ 2011-04-11 20:33  surfacetension  阅读(3334)  评论(0编辑  收藏  举报