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要么就当成了普通的变量,要么在编译时就会产生错误。
联系客服