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方法第一段代码加括号不能通过,而第二段代码中必须用括号括起来,不然也无法通过,为什么?哪位大侠知道望能不吝赐教。
BuzzNet: Excel VBA
del.icio.us: Excel VBA
Flickr: Excel VBA
IceRocket: Excel VBA
LiveJournal: Excel VBA
Technorati: Excel VBA