WorkSheets对象与之前讲过的Sheets对象不同之处在于Sheets对象可以包含图表工作表,而WorkSheets只包含工作表。 看下面的代码: Dim sht As Object Dim str$ '定义字符串类型的变量的省写 '常规则写法为 dimstr as string 'Sheets.Add Type:=xlChart, Count:=3 '在当前活动工作簿中插入3个图表工作表 str = "Sheets集合包含以下成员:" & vbCrLf For Each sht In Sheets str = str & sht.Name & vbCrLf Next MsgBox str
str = "WorkSheets集合包含以下成员:" & vbCrLf For Each sht In Worksheets str = str & sht.Name & vbCrLf Next MsgBox str
代码运行后,两次消息框显示的内容基本不同。
两者的属性和方法基本相同,相同的地方就不做介绍了,这里只介绍不同之处。 Worksheets.Add方法 语法:Add(Before, After,Count, Type) Type参数不能指定为xlChart,否则在执行时会报1004错误。该参数的其他三个可以指定。 其他三个参数可以参照Sheets.add方法。
另外在用代码操作工作表时(狭义的工作表集合专指Worksheets,广义的则指Sheets),如果操作的对象非图表工作表,则尽量用WorkSheets来引用工作表。避免操作到图表工作表时发生运行错误。图表工作表里可没有Range对象供你操作。
补充知识点: 这两天在论坛答题时,发现很多童鞋的代码中在批量处理单一对象时,多次操作却没有利用With语句,看着不是个滋味呀。 With 语句可以对某个对象执行一系列的语句,而不用重复指出对象的名称。例如,要改变一个对象的多个属性,可以在 With 控制结构中加上属性的赋值语句,这时候只是引用对象一次而不是在每个属性赋值时都要引用它。 先看示例代码,没有用到With语句。 ListView2.View = lvwReport ListView2.FullRowSelect = True ListView2.Gridlines = True ListView2.FullRowSelect = True ListView2.ColumnHeaders.Add , , "申请编号", 40 ListView2.ColumnHeaders.Add , , "区域", 40 ListView2.ColumnHeaders.Add , , "姓名", 60 这一段代码是在窗体初始化时针对Listview2对象的一系列操作,执行的话肯定是没有错的。
可如果用上With语句优化后,代码带来的视觉效果,层次结构,逻辑性就不一样了,关键是还可以偷不少懒嘛,少敲不少对象名,何乐而不为呢(兴许你会说不是有CTRL+V嘛,高手还会说有CTRL+SPACE,可用了这,你都不需要按这些键或狂按鼠标了)。 With ListView2 .View = lvwReport
.FullRowSelect = True .Gridlines = True .FullRowSelect = True .ColumnHeaders.Add , , "申请编号",40 .ColumnHeaders.Add , , "区域", 40 .ColumnHeaders.Add , , "姓名", 60 End With 针对ColumnHeaders如果再优化的话,可以这样写 With ListView2 .View = lvwReport .FullRowSelect = True .Gridlines = True .FullRowSelect = True With .ColumnHeaders .Add , , "申请编号",40 .Add , , "区域", 40 .Add , , "姓名", 60 End With End With 经过这一番的打扮后,是不是有种脱胎换骨的感觉。 先看看语法: With Object [语句] End With 注意: 当程序一旦进入 With 块,object 就不能改变。因此不能用一个 With 语句来设置多个不同的对象。 可以将一个 With 块放在另一个之中,而产生嵌套的 With 语句。
但是,由于外层 With 块成员会在内层的 With 块中被屏蔽住,所以必须在内层的 With 块中,使用完整的对象引用来指出在外层的 With 块中的对象成员。 在使用了With语句后,如果引用Object的属性和方法,在方法和属性的前面.号是不能少的。 With ListView2 .View = lvwReport
End with 如果把.view=lvwReport写成view=lvwReport时,这里的view要么就当成了普通的变量,要么在编译时就会产生错误。 |