打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Excel【VBA教程】Worksheet对象工作表对象的基本用法
快速浏览
往期合集:【2023年3月】【2023年4月】【2023年5月】【2023年6月】【2023年7月】【2023年8月】【2023年9月
实用案例
|日期控件||简单的收发存||收费管理系(Access改进版)|
|电子发票管理助手||电子发票登记系统(Access版)|
|文件合并||表格拆分||审计凭证抽查底稿|
|中医诊所收费系统(Excel版)||中医诊所收费系统(Access版)|
收费使用项目
|财务管理系统||工资薪金和年终奖个税筹划|
内容提要
Worksheet对象的用法
大家好,我是冷水泡茶,前面我们讲过WorkBook对象【WorkBook工作簿对象基本用法】,今天我们一起来了解一下Worksheet对象。一、什么是Worksheet对象?
Worksheet,即“工作表”,就是我们最熟悉的Excel工作表,是WorkBook对象的一个子对象。二、常用的属性、方法1、定义一个Worksheet对象
Dim ws as Worksheet2、引用工作表
(1)通过工作表的名称(Name)引用工作表
Set ws = ThisWorkbook.Sheets("明细表")Set ws = ThisWorkbook.Worksheets("明细表")这种方法的好处是比较直观,我们可以清楚地看到引用的工作表的名称;
不好(也不应该说是不好吧?)的地方就是如果工作表的名称被改了,那么代码就得修改,否则肯定会出错;
当然,我们在写代码之前,应该把一些基础表格确定下来,定好名称,不再轻易修改;
worksheets,就是单纯的工作表集合,sheets的范围更广,不仅包括worksheets,还包括Charts等,我们右击工作表标签,插入工作表,可以看到这些类型:
(2)通过工作表的代码名称(CodeName)引用工作表
Set ws = Sheet1这里Sheet1就是CodeName,它只能在代码窗口修改。好处是,即便工作表名称被修改,代码仍可以正常运行。当然,还是那句话,我们在编写代码前,对一些基础表格设置好名称后,就不要轻易再去修改:
(3)使用工作表的索引号
Set ws = Worksheets(2)Set ws = Worksheets.Item(1)Set ws = Sheets.Item(2)使用索引号,就是指向第几个工作表。
(4)使用ActiveSheet方法,引用当前活动工作表
Set ws = ActiveSheet在我们插入工作表时,新插入的工作表即为当前活动工作表,我们可以对它进行操作:
Worksheets.AddSet ws = ActiveSheetws.Name = "new1"3、新建工作表:Worksheets.Add
'在活动工作表之前插入一张工作表(不带任何参数)Set ws = Worksheets.Add'在最前面插入一张工作表Set ws = Worksheets.Add(before:=Worksheets(1))'在最后一张表之前插入一张工作表Set ws = Worksheets.Add(before:=Worksheets(Worksheets.Count))'在第一张工作表之后插入一张工作表Set ws = Worksheets.Add(after:=Worksheets(1))'在最后面插入一张工作表Set ws = Worksheets.Add(after:=Worksheets(Worksheets.Count))4、Activate:激活工作表,使其成为活动工作表,一个工作簿只能有一个活动工作表。
ws.Activate  5、Name:获取或设置工作表的名称;
Set ws = Worksheets.Add(after:=Worksheets(Worksheets.Count))ws.Name = "最后"MsgBox ws.Name6、Copy:复制工作表
'复制到新建工作簿ws.CopyActiveSheet.Name = "New"'复制到当前工作簿,源工作表之前,自动改名ws.Copy before:=wsActiveSheet.Name = "LastSheet"7、Move:移动工作表
'把最后一个工作表移动到新的工作簿Set ws = Worksheets(Worksheets.Count)ws.Move'把中间的一个工作表移动到最前面Dim i As Integeri = Worksheets.Count / 2Set ws = Worksheets(i)ws.Move before:=Worksheets(1)8、Visible:隐藏和显示工作表
Set ws = Sheets("明细表")ws.Activate'隐藏工作表,在工作表右键可取消隐藏,亦可取值0或FALSEws.Visible = xlSheetHidden'深度隐藏工作表,在工作表右键不可取消隐藏,亦可取值2ws.Visible = xlSheetVeryHidden'显示工作表,亦可取值-1或true ws.Visible = xlSheetVisible9、Count:获取工作表的数量,前面代码中出现过
MsgBox Worksheets.Count  MsgBox Sheets.Count10、AutoFilterMode:自动筛选状态,返回TRUE或者FALSE,可以设为False以取消自动筛选,但不可设为TRUE。
MsgBox ws.AutoFilterMode'取消工作表的自动筛选ws.AutoFilterMode = False11、AutoFilter:设置自动筛选
ws.Range("A1:b10").AutoFilter Field:=1, Criteria1:="李四"12、Cells:工作表的所有单元格,这个内容非常多,待以后再详细了解。我们看一个常用操作,清空工作表所有单元格的内容或格式:
'清除内容和格式ws.Cells.Clear'清除内容ws.Cells.ClearContents'清除格式ws.Cells.ClearFormats不过,执行这个代码要谨慎,要防止误操作把别的表的数据给清除了。通常我们在写入一个工作表之前,执行清除操作。
13、Delete::删除工作表,谨慎操作,视需要屏蔽警告信息
'复制"明细表",清空复制的表,再把它删除'好象什么都没有发生,设置中断可以查看过程Set ws = Sheets("明细表")ws.Copy before:=wsSet ws = ActiveSheetws.Cells.ClearApplication.DisplayAlerts = Falsews.DeleteApplication.DisplayAlerts = True14、Index:返回工作表的索引号,工作表的排列位置,包括所有类型的表。
Debug.Print ws.Index15、Next:返回指定工作表(非最后一张)的下一张工作表
Set ws = Worksheets(Worksheets.Count - 1)Set ws = ws.NextDebug.Print ws.Name16、PageSetup:页面设置,PageSetup是Worksheet的属性,它也是一个对象
Dim ps As PageSetupSet ps = ws.PageSetupWith ps '设置打印区域 .PrintArea = ws.Range("A1:B10").Address '设置左右上下边距 .LeftMargin = Application.InchesToPoints(0.5) .RightMargin = Application.InchesToPoints(0.75) .TopMargin = Application.InchesToPoints(1.5) .BottomMargin = Application.InchesToPoints(1) '设置页眉页大小 .HeaderMargin = Application.InchesToPoints(0.5) .FooterMargin = Application.InchesToPoints(0.5) '设置为一页高一页宽 .Zoom = False .FitToPagesTall = 1 .FitToPagesWide = 1 '水平居中 .CenterHorizontally = True '垂直居中 .CenterVertically = True '横向与纵向来回变化 If .Orientation = xlLandscape Then .Orientation = xlPortrait '纵向 Else .Orientation = xlLandscape '横向 End IfEnd With‍PageSetup对象的属性非常多,想全面了解的可以录制一个宏来看一下。
17、Paste:粘贴
Set ws = Sheets("明细表")ws.Range("A1:B10").CopySet ws = Sheets("Sheet1")ws.Paste Destination:=ws.Range("b10")18、PrintOut:打印工作表
ws.PrintOut copies:=119、Protect:保护工作表
'保护工作表,密码123,仅在用户界面有效,用代码可以操作工作表 ws.Protect Password:=123, userinterfaceonly:=True20、Sort:工作表排序
With ws.Sort .SortFields.Clear .SortFields.Add Key:=Range("b2:b10"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal .SetRange Range("A1:B10") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .ApplyEnd With21、Tab:工作表标签属性,我们可以设置标签颜色
ws.Tab.Color = vbRed三、事件
工作表的事件不算多,在Worksheet对象中。
我们常用到的工作表事件有:
1、Activate:工作表激活事件。
Private Sub Worksheet_Activate() ......End Sub2、BeforeDoubleClick:鼠标双击之前事件。正常我们双击单元格会进入编辑状态,有了这个双击之前事件,就执行这个过程内的代码,比如,双击A1单元格,启动用户窗体,可以用来选择输入:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) '双击A1单元格,启动用户窗体 If Target.Address = "$A$1" Then UserForm1.Show End IfEnd Sub3、BeforeRightClick:鼠标右击之前事件。正常我们右击单元格会启动右键菜单,有了这个右击之前事件,就执行这个过程内的代码,比如,禁用右键菜单:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) '禁用右键菜单 Cancel = TrueEnd Sub4、Change:工作表发生改变事件,在单元格发生改变时发生。比如,可以用来判断单元格的值是否符合设定的条件。
Private Sub Worksheet_Change(ByVal Target As Range) '输入数字不大于10 If Target.Value > 10 Then Target.Value = 10 End IfEnd Sub5、SelectionChange:工作表选择目标发生改变时的事件,比如我们点击B1单元格,启动用户窗体,跟双击类似。
Private Sub Worksheet_SelectionChange(ByVal Target As Range) '点击B1单元格,启动用户窗体 If Target.Address = "$B$1" Then UserForm1.Show End IfEnd Sub四、总结
worksheet还有一个重要的属性Range,我们准备以后单独聊。
有部分内容参考了微软官方文档。
好,今天就到这吧。
~~~~~~End~~~~~~
喜欢就点个赞、点在看、留言评论、分享一下呗!感谢支持!
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Excel VBA入门(5)
Excel中各种VBA写法 - 彷徨......豁然开朗 - 博客园
神奇的Excel VBA系列之:制作工作表目录
VBA|使用工作表对象Worksheet操作和管理工作表
vba编程基础2
详解Excel VBA编程常用的4种对象,助你快速入门VBA编程
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服