Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4432|回复: 7

[分享] 【烟花原创】VBA零基础之第45篇 Worksheets对象

[复制链接]
发表于 2013-12-9 19:42 | 显示全部楼层 |阅读模式
  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要么就当成了普通的变量,要么在编译时就会产生错误。
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-12-9 19:46 | 显示全部楼层
老师辛苦了{:1112:}

点评

云影也学得很快呀。  发表于 2013-12-9 21:34
回复

使用道具 举报

发表于 2013-12-11 18:29 | 显示全部楼层
回复

使用道具 举报

发表于 2013-12-11 20:08 | 显示全部楼层
{:1112:}
回复

使用道具 举报

发表于 2013-12-15 08:50 | 显示全部楼层
老师辛苦
回复

使用道具 举报

发表于 2014-6-18 11:16 | 显示全部楼层
回复

使用道具 举报

发表于 2014-6-18 13:56 | 显示全部楼层
{:35:}
回复

使用道具 举报

发表于 2014-6-24 21:35 | 显示全部楼层
谢谢老师分享,标记,四十五
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-2 10:33 , Processed in 0.285514 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表