《跟着王老师学Excel VBA》的笔记
先安利一款VBA的IDE(VBA代码宝): https://charltsing.lanzous.com/ic9qvzi
一、基础语法
'创建子程序
sub abc()
.....
end sub'程序调用
call abc '注意:不用加括号'定义自变量的类型
Dim i=.... 'For循环
for i = 1 to 5 Step 2 'Step定义步长
...
Next '循环结构(循环五次)'IF判断语句
If ... then '如果...那么
... '...
else '否则
... '....
End If '切勿忘记End If'多重判断
If Range("a" & i) = "理工" Then
Range("b" & i) = "LG"
ElseIf Range("a" & i) = "文科" Then '再如果...那么
Range("b" & i) = "WK" '....
Else
Range("b" & i) = "CJ"
End If '使用IF语句,控制For循环
If Range("a" & i) = "" ThenExit For '退出For循环
End If
- 删表格时,从下往上删,可避免错误。
- ElseIf 可多次使用
- 单元格的表示与操作
'单元格的表示
Range("a1") '表示a1单元格
Range("a" & i) '表示ai单元格
Sheet5.Range("a" & i) '工作表5的ai单元格
Range("a1").value '单元格的值(此属性为默认值,大多数情况下可省略)
Range("a1").Offset(2,3) '由a1单元格下移2行,右移3列
Range("A1048576").End(xlUp).Select '选中空白单元格的上边界
Range("A1048576").End(xlUp).Row 'A列非空单元格的个数
Range("b1").Resize(2, 4).Select '选中b1为起点的2行4列的区域
Range("c3").EntireColumn.Select '选中c3所在的整列
Range("c3").EntireRow.Select '选中c3所在的整行
Range("a1").EntireColumn.Copy Range("c1") '将a1所在的整列复制到c列
Range("a1:b3").ClearContents '清除A1:B3的内容Sheet1.Cells(1, 2) = 99 '令工作表1的第1行第2列等于99
二、Worksheets(工作表)对象
- 工作表的选择(Select)
Sheet1.Select '选择工作表1
Sheets(3).Select '选择第3个工作表(从左往右数)
Sheets("一月").Select '选择名称为‘一月’的工作表
- 插入工作表
Sheets.Add '在当前工作表前面插入新sheetSheets.Add after:=Sheet3 '在sheet3后面插入新sheet'在sheet3后面插入100个新sheet
Dim i As Integer
For i = 1 To 100Sheets.Add after:=sheet3
Next'统计工作簿中所有工作表的数量
Sheet5.Range("a1") = Sheets.Count '在工作表5的A1单元格中输出工作簿中所有工作表的数量
Sheet5.Range("a1") = Sheet1.Name '在工作表5的A1单元格中输出工作表1的名称
Sheet1.Name = "小驴嗷嗷叫" '将工作表1的名称改为‘小驴嗷嗷叫’'使其总是在最后一张工作表后面插入新表
Sheets.Add after:=Sheets(Sheets.Count)'
Dim i As Integer
For i = 1 To 100Sheets.Add after:=Sheets(Sheets.Count)Sheets(Sheets.Count).Name = i & "月" '总是将最后一张工作表的名称改为‘i月’
Next
- ‘Sheets.Count’ 的差异
- 删除工作表(Delete)
Excel.Application.DisplayAlerts = False '关闭Excel的报错机制
sheet3.Delete '删除工作表3
Excel.Application.DisplayAlerts = True '开启Excel的报错机制'插入100张工作表
Sheets.Add Count:=100'删除100张工作表
Dim i As Integer
Excel.Application.DisplayAlerts = FalseFor i = 1 To 100Sheets(1).Delete '总是删除左起第一张工作表Next
Excel.Application.DisplayAlerts = True
- 复制工作表(copy)
'复制工作表1,并且将其置于左起第二张工作表之后
Sheet1.Copy after:=Sheets(2)'复制工作表1,并且始终将其置于最后端
Sheet1.Copy after:=Sheets(Sheets.Count)
三、Workbooks(工作簿)对象
1.顺序循环每个单元格(For Each)
Dim rng As Range '定义rng为单元格变量
Dim x As Integer '注意x是初始值是 0 !!!
For Each rng In Range("a1:a10") 'rng的范围为A1至A10的每一个单元格x = x + 1rng=x 'x顺序给A1至A10的每一个单元格(rng)赋值
Next
2.顺序循环每个工作表
Dim sht As Worksheet '定义sht为工作表变量
Application.DisplayAlerts = False '关闭警告
For Each sht In Sheets If sht.Name <> "小驴嗷嗷叫" Then '如果单元格名称不等于“小驴嗷嗷叫”,则sht.Delete '删除单元格(sht)End If
Next
Application.DisplayAlerts = True
3.工作簿的打开、操作、保存与关闭
Application.ScreenUpdating = False '关闭屏幕刷新
Application.DisplayAlerts = False '关闭警告Workbooks.Open Filename:="d:\小驴\嗷嗷叫.xlsx" '打开EXCEL文件ActiveWorkbook.Sheets(1).Range("a1") = "五一学习VBA" '向当前文件中写入ActiveWorkbook.Save '保存ActiveWorkbook.Close '关闭
Application.DisplayAlerts = True '开启警告
Application.ScreenUpdating = True '开启屏幕刷新
4.新建工作表
Workbooks.Add
ActiveWorkbook.Sheets(1).Range("a1") = "五一学习VBA"
ActiveWorkbook.SaveAs Filename:="d:\小驴\嗷嗷叫.xlsx" '将工作薄保存到 d:\小驴,并命名为 嗷嗷叫.xlsx
ActiveWorkbook.Close
- 注意:执行Sheet1.copy(复制工作表1)时,VBA会自动新建一个工作薄,然后将复制的Sheet1粘贴过去。
5.拆分工作薄
Dim sht As Worksheet
For Each sht In Sheetssht.Copy '复制工作表ActiveWorkbook.SaveAs Filename:="d:\小驴\" & sht.Name & ".xlsx" '保存ActiveWorkbook.Close '关闭
Next
6.新建表(避免重名)----第6课
Dim sht As Worksheet
Dim k As IntegerFor i = 1 To 3k = 0 '每次循环后,再重新定义K为0For Each sht In SheetsIf sht.Name = Sheet1.Range("a" & i) Thenk = 1End IfNextIf k = 0 ThenSheets.Add after:=Sheets(Sheets.Count)Sheets(Sheets.Count).Name = Sheet1.Range("a" & i)End IfNext
7.VBA的输入框
i = InputBox("请输入你要按哪列分") '将用户的输入值赋给i
8.VBA的消息提示框
MsgBox "小驴嗷嗷叫"
七、VBA事件与典型应用案例
With sheet2.range("a1").range("a3")
End With
'上下两端代码意义相同,此即为With语法的作用
sheet2.range("a1")
sheet2.range("a3")
1.对齐方式
2.字体格式
3.工作簿事件
4.工作表事件
复试已过,继续VBA
八、在VBA中使用公式
《跟着王老师学Excel VBA》的笔记相关推荐
- 《js中原型和原型链的深入理解》的笔记
前言:在微信公众号前端大全上看过<js中原型和原型链的深入理解>,个人认为这是我看过的js原型链的文章中,在思维结构上理解最清楚的一个文章了,本着温故而知新,有害怕找不到这个文章,我就把文 ...
- JS 中原型和原型链深入理解
作者: erdu segmentfault.com/a/1190000014717972 首先要搞明白几个概念: 函数(function) 函数对象(function object) 本地对象(nat ...
- 前端开发:JS中原型和原型链的介绍
前言 在前端开发过程中,涉及到JS原理相关的内容也就是常用的几大模块,不仅常用而且很重要,但是涉及到原理的话会有点难懂,尤其是对JS接触不太久的开发者来讲.本篇博文就来分享一下关于JS的原型和原型链相 ...
- JS中的原型链(超清晰理解)
什么是原型链 原型链,所有的原型构成了一个链条,这个链条我们称之为原型链(prototype chain). 原型链的案例 如果我们执行下面这段代码,因为没有定义address这个属性,程序结果理所当 ...
- JS原型链的一些理解
关于原型链我的理解是一个构造函数的原型作为另一个构造函数的实例形成的继承关系 在JS高级程序设计中有这样一个图 当我们定义一个函数时会有一个原型,即图中的SuperType Prototype,这时原 ...
- JS题目总结:原型链/new/json/MVC/Promise
JS题目总结:原型链/new/json/MVC/Promise 1原型链相关 解读: 上图中,Object,Function,Array,Boolean都是构造函数 第一个框: object是实例对象 ...
- 【JS继承】JS继承之原型链继承
自我介绍:大家好,我是吉帅振的网络日志:微信公众号:吉帅振的网络日志:前端开发工程师,工作4年,去过上海.北京,经历创业公司,进过大厂,现在郑州敲代码. JS继承专栏 1[JS继承]什么是JS继承? ...
- [js] js怎样避免原型链上的对象共享?
[js] js怎样避免原型链上的对象共享? 组合继承 优势 公有的写在原型 私有的卸载构造函数 可以向父类传递参数 劣势 需要手动绑定constructor 封装性一般 重复调用父类性能损耗
- 理解js中的原型链,prototype与__proto__的关系
说到prototype,就不得不先说下new的过程. 我们先看看这样一段代码: 1 <script type="text/javascript"> 2 var Pers ...
- JS三座大山之原型链
在JS中原型链的概念刚开始可能一直迷惑着大多数人,我也一样,不过花点时间仔细的梳理梳理,还是很容易理解的.本文就着重介绍一下原型链,如有不对之处,欢迎指正,共同探讨,共同进步. 在面试时,面试官可能会 ...
最新文章
- matlab-矩阵应用
- Java NIO:浅析I/O模型
- C#连接池的详细分析(转)
- Memcached 使用 及.NET客户端调用
- 【实操手册】如何把一场直播录制下来?
- python土味情话_Python 将土味情话语录设置为桌面壁纸
- UVA340 ​​​​​​​Master-Mind Hints【数组】
- MediaWiki/升级
- ROI坐标点提取(python)
- Exynos4412 BSP平台搭建(详细图解)
- centos java jdk 升级_centos jdk 升级到1.7.0_45方法
- 一次荒唐的技术决策过程:排除研发总监,无技术参与
- 菜鸟电子面单,自定义区设置方法
- 82C55控制交通灯
- 200万年薪请不到!清华姚班到底有多牛X?
- 25 | 业务安全体系:对比基础安全,业务安全有哪些不同?
- hc05刷hid固件_Arduino使用HC05蓝牙模块与手机连接
- Linux——Vim编辑器三种模式(命令模式、输入模式、末行模式)的基本使用总结
- Dubbo协议模块源码剖析
- android新浪微博改进版