学习资源:《Excel VBA从入门到进阶》第10集 by蓝色幻想

一、Excel工作表的分类

Excel工作表有两大类,一类是我们平常用的工作表(worksheet),另一类是图表、宏表等。这两类的统称是sheets。

在工作表的标签页上右击—选择插入,可以看到所有工作表类型。
  • Sheets("A"),名称为A的excel工作表。
  • workbooks(2),按从左到右的排列顺序(包含隐藏工作表),第二个打开的工作簿。
  • ActiveSheet ,正在操作的那个就是ActiveSheet。

二、Excel工作表的操作

  1. 判断A工作表文件是否存在
  • 利用for循环和if语句,查找工作表的名称是否为"A"。
  • 查到后弹出窗口显示“A工作表存在”(MsgBox "......"),并退出整段程序停止操作(Exit Sub);
  • 反之,继续查找直至所有工作表名称被比对完都没找到,并弹出窗口显示“A工作表不存在”。
Sub s1()
Dim X As IntegerFor X = 1 To Sheets.CountIf Sheets(X).Name = "A" ThenMsgBox "A工作表存在"Exit SubEnd If
NextMsgBox "A工作表不存在"
End Sub

2. 工作表的插入Sheets.Add

Sub 新建工作表()
Dim sh As WorksheetSet sh = Sheets.Addsh.Name = "模板"
sh.Range("a1") = 100End Sub

上面的代码是利用工作表变量给工作表赋值新名字,而下面的代码则是利用ActiveSheet的这一概念来给新工作表重命名。

Sub 新建工作表()Sheets.Add
ActiveSheet.Name = "模板"End Sub

3. 工作表隐藏和取消隐藏

是否可视是工作表的一种属性,隐藏就是更改这一属性。

Sub s3()Sheets(2).Visible = False  '隐藏第二个工作表,或可写为Sheets(2).Visible = 0
Sheets(2).Visible = True  '取消隐藏第二个工作表,或可写为Sheets(2).Visible = -1End Sub

4. 工作表的移动

Sub s4()Sheets("Sheet2").Move before:=Sheets("sheet1") 'sheet2移动到sheet1前面
Sheets("Sheet1").Move after:=Sheets(Sheets.Count) 'sheet1移动到所有工作表的最后面End Sub

Sheets.Count 获取本工作簿工作表的数目

5. 工作表的复制

(1)在本工作簿中复制,原表和复制到的表都在同一个工作簿中。

先来一波不用VBA的正常操作:

在“模板”工作表标签页右击,选择“移动或复制”
勾选“建立副本”,把副本放在“1日”工作表前
重命名复制的“模板2”工作表为“测试”。
Sub s5() '在本工作簿中Sheets("模板").Copy before:=Sheets(1)
ActiveSheet.Name = "1日"
ActiveSheet.Range("a1") = "测试"End Sub

(2)把复制的工作表另存为新工作簿。

相当于在移动或复制工作表时,选择”将选定工作表移至新工作簿“,然后把新工作簿另存为当前工作簿保存的路径下,并命名为”1日“工作簿。

Sub s6() '另存为新工作簿Activesheet.copy '复制工作表
ActiveWorkbook.SaveAs ThisWorkbook.Path & "/1日.xls"  '另存为新工作簿
ActiveWorkbook.Close True  '关闭工作簿End Sub

6. 保护工作表

完整:表达式.Protect(密码, 形状,内容,方案,保护用户界面)

简洁:表达式.Protect"密码"

Sub s7()Sheets("sheet2").Protect "123"End Sub

判断工作表是否添加了保护密码:

   Sub s8() If Sheets("sheet2").ProtectContents = True ThenMsgBox "工作簿保护了"ElseMsgBox "工作簿没有添加保护"End IfEnd Sub

7. 删除工作表

     Sub s9()Application.DisplayAlerts = FalseSheets("模板").DeleteApplication.DisplayAlerts = TrueEnd Sub

删除工作表时,EXCEL会弹出警告,可设置关闭该警告。

Application.DisplayAlerts = False

删除完成后记得打开警告,不然以后都不会弹出警告。

8. 工作表的选取

     Sub s10()Sheets("sheet2").SelectEnd Sub

三、练习

题目1:

复制“日报表模板”工作表(已隐藏)至本工作簿最后一个位置,复制后的工作表名称为最后的日期天数+1&"报表"的格式。点击“生成日报”按钮就生成一个新的日报表。

如:当前情况下,没有任何一天的日报表,则新复制的工作表名称是“1日报表”,如果再点击添加时就是1+1=2日报表。如果目前已存在5天的日报表,则复制后的工作表名称应为“6日报表”

PS:“日报表模板”工作表要用代码取消隐藏,复制后要隐藏起来。

Sub 日报表格式生成()Dim i As IntegerDim ws As WorksheetSet ws = Sheets("日报表模板")ws.Visible = True'显示"日报表模板"工作表,它是第二个工作表。i = Sheets.Count'数当前工作表的数量。ws.Copy after:=Sheets(Sheets.Count)'复制"日报表模板"工作表,并放在所有工作表的最后。EXCEL会停留在当前工作簿。ActiveSheet.Name = i - 1 & "日报表"'重命名当前工作表ws.Visible = False'隐藏"日报表模板"工作表Sheets(1).Select'回到题目所在工作表
End Sub

题目2:

把所有日报表另存为工作簿到本文夹下,工作簿名称为工作表的名称。

Sub 另存报表()
Dim i As Integer
Dim sh As WorksheetApplication.ScreenUpdating = False'取消屏幕更新,加快代码运行速度For i = 1 To Sheets.CountIf Sheets(i).Name Like "*日报表" Then'如果工作簿名称包含“日报表”,则复制该工作表,并另存为当前工作表到当前工作簿路径下Sheets(i).CopySet sh = ActiveSheetActiveWorkbook.SaveAs ThisWorkbook.Path & "" & sh.Name & ".xls"ActiveWorkbook.Close TrueEnd IfNextApplication.ScreenUpdating = True'恢复屏幕刷新End Sub

经评论蔡花花同学指出:原来写的sh.SaveAs ThisWorkbook.Path & "" & sh.Name & ".xls",修改为ActiveWorkbook.SaveAs ThisWorkbook.Path & "" & sh.Name & ".xls",只有工作簿才能使用saveas.

题目3:

删除所有日报表。

Sub 清除日报表()
Dim i As Integer
Dim sh As WorksheetFor Each sh In SheetsIf sh.Name Like "*日报表" ThenApplication.DisplayAlerts = Falsesh.DeleteApplication.DisplayAlerts = TrueEnd IfNextEnd Sub

vba移动文件_VBA学习笔记8:工作表操作相关推荐

  1. 陈表达VBA学习笔记-新建工作表鼠标右键菜单按钮

    陈表达VBA学习笔记-新建工作表鼠标右键菜单按钮:新建一个我的菜单按钮 设置对应的宏过程名称为 [我的菜单宏] 点击按钮弹窗信息,信息可自定义设置 详细代码如下: Sub 新建右键菜单()Dim 菜单 ...

  2. Hive学习笔记三之函数操作

    文章目录 5 函数 5.1 系统内置函数 5.2 常用内置函数 5.2.1 空字段赋值 5.2.2 CASE WHEN THEN ELSE END(类似于java中的switch case) 5.2. ...

  3. 从滚动条到画布的几个代码文件——Python学习笔记之十七

    从滚动条到画布的几个代码文件--Python学习笔记之十七 这一章的继续学习,比在前的照片涉及代码要轻松一些,代码打完后的预期结果总能实现.特别让人欣慰的一点,文本上的文字理解好像上了一个台阶,不用多 ...

  4. TI CC1101学习笔记:工作原理简单入门

    众所周知,在IOT的市场应用中,从通信协议细分的话,有SUB-1G,2.4G,3G, 4G,以及最新推出的5G,虽然5G通信协议已经在崭露头角,但是不同的通信协议在不同的应用领域之中还是占据着一定的重 ...

  5. JPA学习笔记---JPA数据的操作:增加,删除,修改,获取,使用JPQL进行查询

    JPA学习笔记---JPA数据的操作:增加,删除,修改,获取,使用JPOL进行查询 创梦技术交流平台:资源下载,技术交流,网络赚钱: 交流qq群:1群:248318056 2群:251572072 技 ...

  6. HTML/CSS学习笔记02【表单标签】

    w3cschool菜鸟教程.CHM(腾讯微云):https://share.weiyun.com/c1FaX6ZD HTML/CSS学习笔记01[概念介绍.基本标签.表单标签][day01] HTML ...

  7. Polyworks脚本开发学习笔记(三)-TREEVIEW进阶操作

    Polyworks脚本开发学习笔记(三)-TREEVIEW进阶操作 移动/交换对象的顺序 移动对象的顺序 TREEVIEW FEATURE MOVE ( 1,2 ) 将索引号为1和2的特征交换位置 T ...

  8. 在php中表单传值怎么用,PHP学习笔记 01 之表单传值

    一.HTML传值/PHP接收方法 1.GET(地址栏+问号+数据信息) (1)方式一:表单Form: method = 'get' GET接收数据方式: $_GET['表单元素name对应的值] (2 ...

  9. C# 学习笔记(19)操作SQL Server下

    C# 学习笔记(19)操作SQL Server下 ADO.net操作数据库 这应该是比较老的技术了,以后有空的话学学 Linq /// <summary> /// 数据库使用类 /// & ...

最新文章

  1. win7 cmd 操作mysql数据库
  2. vue项目设置img标签的默认图片
  3. leetcode 105. 从前序与中序遍历序列构造二叉树 c语言递归解法
  4. linux 系统 权限
  5. C#实现人脸识别【SqlHelper】
  6. C++学习之路 | PTA乙级—— 1020 月饼 (25分)(精简)
  7. 程序员画图工具Draw.io
  8. angular 字符串转换成数字_3种方法搞定Excel中数字大小写转换? 123...变为壹贰叁......
  9. “双减”后首份半年报 新东方在线营收亏损双减
  10. final关键字_夯实基础:Java中final关键字的几种用法
  11. 数 AI 人物还看今朝!CCAI 2017 人工智能青年论坛即将启航
  12. python怎么命名未知数_怎样用Python计算含有未知数的方程式-百度经验
  13. GoogleAdSense高价关键字排行榜
  14. oracle undo head,一次悬挂事务的处理思路
  15. 黑暗欺骗恐怖游戏c++代码完整
  16. java 因数分解_java因数分解实例源码
  17. 【树】B056_LQ_三角形面积 阅兵方阵 版本分支(递归预处理)
  18. 鞍点Saddle Point Locator
  19. require.js的简单使用
  20. 【MySQL基础知识】查询、过滤数据关键字

热门文章

  1. YOLOV4垃圾检测召回率提升
  2. c语言60题,C语言复习60题
  3. 自定义异常:运行时期和编译时期的区别
  4. IOS 制作证书,推送 , 打包发布。
  5. Ruby On Rails-2.0.2源代码分析(1)-Rails的启动
  6. 【考研英语语法】口语语法
  7. (附源码)基于ssm技术的校自助阅览室的设计与实现 毕业设计242326
  8. tesseract验证码训练部骤
  9. Unity用UnityWebRequest和 BestHttp的GET和POST表单提交,与php交互
  10. NMS、Soft-NMS、Softer-NMS