1. 激活工作表 Active

    Dim ws As WorksheetSet ws = Application.WorkBooks(1).Worksheets(2)ws.Activate

激活了第一个工作簿的Sheet2

2. 复制工作表 Copy([before], [after])

将当前工作表复制一份, 名字为"当前工作表名字(2)"

    Dim ws As WorksheetSet ws = Application.ActiveWorkbook.Worksheets(1)ws.Copy after:=Worksheets(1)

该代码将Sheet1的内容拷贝到新表Sheet1(2)

如果不指定before或after, 同样会生成一个新表, 注意, before和after不能同时使用

另外, 工作表的复制可以跨工作簿之间进行

    Dim wbSrc As WorkbookDim wbDes As WorkbookDim ws As WorksheetSet wbSrc = Application.WorkBooks(1)Set wbDes = Application.WorkBooks.AddSet ws = wbSrc.Worksheets(1)ws.Copy after:=wbDes.Worksheets(1)

将当前工作表的内容复制到新工作簿的第2个工作表

3. 将剪贴板的内容粘贴到工作表Paste([destination], [link])

    Dim ws As WorksheetSet ws = Application.ActiveWorkbook.ActiveSheetws.range("A1:A3").Copyws.Paste destination:=ws.range("F1:F3")

先将A1:A3的内容复制到剪贴板, 然后利用Paste方法, 粘贴到F1:F3区域, 亦或者直接:

    ws.range("A1:A3").Copyws.Paste destination:=ws.range("F1")

Worksheet事件:

和Workbook的事件类似, 在"工程资源管理器"中, 双击一个工作表, 在右边代码区上面选择Worksheet, 然后再选择相应的事件

选择一个事件会自动列出事件代码

常用的操作工作表的方法

1. 访问工作表

两种方式: a. 根据索引号(从1开始) b.根据工作表名称

    Dim wb As WorkbookDim ws As WorksheetDim wsCount As IntegerDim i As IntegerDim sheetnames() As StringSet wb = Application.WorkBooks(1)wb.ActivatewsCount = wb.Worksheets.CountReDim sheetnames(1 To wsCount)PrintInfo "当前工作簿共包含" & CStr(wsCount) & "个工作表"For i = 1 To wsCountSet ws = wb.Worksheets(i)Debug.Print Space(5) & ws.namesheetnames(i) = ws.nameNextDebug.PrintDebug.Print "使用Sheets集合按名称访问工作表"For i = 1 To wsCountSet ws = wb.Worksheets(sheetnames(i))Debug.Print Space(5) & ws.nameNextSet ws = NothingSet wb = Nothing

例子比较简单, 说明一下Space(5)的意思是五个空格, CStr()是把参数转换为字符串

核心就是 Worksheets(1) 和Worksheets("Sheet1") 是等效的 (默认没有改工作表名字而且没有移动工作表顺序的情况下)

另外在遍历工作表的时候使用的是Worksheets属性, 如果使用Sheets属性则需要判断工作表的类型是普通工作表还是图表工作表

根据Type属性判断:   If ws.Type = xlWorksheet Then

2. 判断工作表是否存在

判断工作表是否存在就是用指定的名称遍历所有工作表, 没什么难点

    Dim wb As WorkbookDim ws As WorksheetDim i As IntegerDim count As IntegerDim flag As BooleanDim findName As StringfindName = "Sheet7"Set wb = Application.ActiveWorkbookcount = wb.Worksheets.countflag = FalseFor i = 1 To countIf wb.Worksheets(i).name = findName Thenflag = TrueExit ForEnd IfNextIf flag ThenMsgBox "存在" & findNameElseMsgBox "不存在" & findNameEnd IfSet ws = NothingSet wb = Nothing

这段代码不用解释了

3.新建工作表 Application.ActiveWorkbook.Worksheets.Add([Before], [After], [Count], [Type]) As Object

新建工作表和之前的新建工作簿类似

    Dim ws As WorksheetSet ws = Worksheets.AddDebug.Print ws.name

完整写法Set ws = Application.ActiveWorkbook.Worksheets.Add(before:=Worksheets(8), count:=2, Type:=xlWorksheet)

意思是在第8个表前加入两个工作表

同样的Before和After不能同时使用

4. 重命名工作表

直接设置工作表的name属性即可, 但是要先判断该名称是否已经存在, 否则会报错

为了简单说明, 这里就不作判断了

    Dim ws As WorksheetSet ws = Application.WorkBooks(1).Worksheets(1)ws.name = "SheeT1"

将"Sheet1"重命名为了"SheeT1"

5. 移动工作表

    Dim wb As WorkbookDim ws As WorksheetSet wb = Application.WorkBooks(1)wb.ActivateSet ws = wb.Worksheets(1)ws.Move after:=ws.NextSet wb = NothingSet ws = Nothing

道理和复制一样, ws.Move after:=ws.Next 将第一个工作表向后移动一次

同理, 移动也可以跨工作簿进行

    Dim wbSrc As WorkbookDim wbDes As WorkbookDim ws As WorksheetSet wbSrc = Application.WorkBooks(1)Set wbDes = Application.WorkBooks.AddSet ws = wbSrc.Worksheets(1)ws.Move after:=wbDes.Worksheets(1)

将当前工作簿的Sheet1 移动到新的工作簿的Sheet1后

6. 删除工作表

注意: 删除前请保存重要数据

    Dim wb As WorkbookDim ws As WorksheetDim sheetName As StringDim count As IntegerSet wb = Application.WorkBooks(1)Set ws = wb.Worksheets(1)sheetName = ws.namecount = wb.Worksheets.countIf count > 1 ThenApplication.DisplayAlerts = Falsews.DeleteMsgBox "成功删除" & sheetName, vbOKOnly, "删除工作表"Application.DisplayAlerts = TrueElseMsgBox "工作表" & sheetName & "是工作簿的最后一张表, 无法删除", vbCritical, "删除工作表"End IfSet wb = NothingSet ws = Nothing

Excel VBA入门(6) - Worksheet对象常用方法事件相关推荐

  1. Excel VBA 入门(零)

    本教程所用系统环境: Windows 10 Excel 2013 1. 添加开发工具 打开Excel,依然找到"文件"->"选项"->"自 ...

  2. Excel VBA 入门demo,单元格json格式校验

    需求才是学习的第一生产力,学习VBA是因为要帮测试同学解决excel中的值校验问题.具体来讲,需要对指定单元格做数据格式校验,必须是json,不是json或者格式不对的,要有提示. 解决问题的方案很多 ...

  3. Excel VBA入门的基础语句

    选择当前活动的工作簿: ThisWorkbook.Activate 如果选择其他工作簿,注意该工作簿一定是打开的,并且不要忘记加上后缀".xls" ,例如: Windows(&qu ...

  4. excel vba 入门语句精选

    VBA语句集 (第1辑) 定制模块行为 (1) Option Explicit '强制对模块内所有变量进行声明 Option Private Module '标记模块为私有,仅对同一工程中其它模块有用 ...

  5. 【Excel VBA和Python对照学习】创建字典

    Excel VBA和Python双语对照学习 我们从小学习语文,都用过字典.查字典时可以从第一页开始,一页一页地往下找,直到找到为止.这样做明显效率低下,特别是字的位置比较靠后的时候.所以查字典时不这 ...

  6. Excel 2010 VBA 入门 072 工作表事件之activate

    目录 示例 实现代码1 工作表(Worksheet)对象的Select方法 实现代码2 附件:显示所有工作表 目录工作表中加入事件 其它工作表中加入事件 实现代码3 工作簿事件 类模块和Me变量 示例 ...

  7. vba 判断控件有无_6小时,写了一篇适合Excel小白学的VBA入门教程

    一.excel vba是什么? Visual Basic for Applications(VBA)是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言.主要能用来扩展Window ...

  8. Excel VBA设计测绘工程电子计算表格从入门到入土(待完结)- 开发方法举例

    Excel VBA设计测绘工程表格从入门到入土 从第一个宏程序入门 如何设计电子表格 如何使用VBA开发应用实际 如何编辑VBA代码 一.了解界面 二.组织结构 三.如何添加代码和窗口 四.编辑代码 ...

  9. Excel VBA属性、方法、事件大全——Part1(Complete List of Excel VBA attribute/method and event)

    为了提取这个列表,也算是费了九牛二虎之力了. VBA调试了不下十遍,但是,能得到这么完整的列表,绝对是值得的.不学好VBA,都有点对不起这么好的资料了,哈哈. Attribute/Method/Eve ...

  10. excel公式编辑器_6小时,写了一篇适合Excel小白学的VBA入门教程

    一.excel vba是什么? Visual Basic for Applications(VBA)是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言.主要能用来扩展Window ...

最新文章

  1. 用VS(c#)创建、调试windows service以及部署卸载
  2. volcanol_Linux_问题汇总系列_1_系统引导过程中到check filesystem时就无法继续引导问题解决方法。...
  3. 070901css基础知识
  4. Java Jersey2使用总结
  5. Linux 网络编程 常用socket函数详解 常用的函数讲解
  6. 恩施软件开发人员每月多少钱_软件开发人员外包报价表
  7. 倍福 (BeckHOFF)PLC 使用随笔小记1
  8. 飞信2009_我的移动互联网十年经历 (一):飞信时代
  9. \u5168\u56fd\u7f8e\u5bb9\u5927\u592b数据采集数据(\u82b1\u5bb9\u7f51 huaroo 公开数据),爬虫120例之26例
  10. python数据表盘_构建一个简单地分析表盘
  11. Mac连局域网打印机
  12. LM2596开关电源 多路开关电源 DC-DC降压电源 固定/可调输出 原理图和PCB
  13. python中for循环的代码_Python中的九九乘法表(for循环)
  14. 程序员的奋斗史(二十八)——寒门再难出贵子?
  15. 友盟集成第三方分享和登录
  16. LowRankGAN
  17. 剑指offter 数据结构之数组
  18. Codex Network经济模型篇 (PoA、PoV、CPoA)
  19. 基于SSM在线学习网站包含课程管理-错题-收藏-考试测试-学生教师管理员58198(idea-javaweb-javaee-j2ee-springboot)
  20. 光纤之父高锟获英女王封爵

热门文章

  1. 计算机系统限制某个用户只允许,Win10系统如何设置某些用户只能运行指定应用程序...
  2. [雅礼集训]xiz(字符串匹配)
  3. python 正则表达式 ,看这篇就够了
  4. 【转载】2021互联网行业术语@20210311
  5. 02.使用fmod实现QQ变声效果
  6. linux查看压缩文件的大小,Linux下不解压压缩文件如何直接查看某个文件大小
  7. block与“阻塞(pend)”与“挂起(suspend)”的区别?
  8. hdu5956, The Elder (树型dp, 斜率优化)
  9. uniapp(APP)打开高德导航
  10. 南京财经的计算机科学与技术,2021年南京财经大学计算机科学与技术(081200)考研专业目录_硕士研究生考试范围 - 学途吧...