全民一起VBA(基础篇)
2019-03-18 15:55:21 44 举报
AI智能生成
全民一起VBA(基础篇)是一本面向所有Excel用户的学习指南,旨在帮助初学者掌握VBA编程的基础知识。本书通过简单易懂的语言和丰富的实例,详细介绍了VBA的基本概念、语法规则和常用功能。无论你是想要提高工作效率,还是对编程感兴趣,这本书都能为你提供实用的指导。在阅读过程中,你将逐步掌握如何使用VBA编写简单的宏代码,实现自动化操作和数据处理。此外,本书还提供了一些常见问题的解答和技巧分享,帮助你更好地应用VBA解决实际问题。快来加入我们的学习行列吧!
作者其他创作
大纲/内容
章节8. 录制宏
章节9. 面向对象
要点
类:
什么是类:规定事物是什么样子(例如人、妖、武器)
同类对象特征相同
属性:
什么是属性:每类事物有那么特征(例如:姓名、战斗力)
不同类事物之间可以互相持有(如人的属性可以包含武器)
方法:
什么是方法:每类事物可以执行什么动作/发生什么变化(例如:攻击、防御、变身)
对象:
什么是对象:系统中每一个具体的事物(类的概念具体化)
类和对象的区别:类可以比为印刷朝钞票的模板,并不是钞票;而对象为印制出来的钞票
运作原理
创建对象
设置属性
调用方法
excel基本对象结构
application:代表正在运行的excel系统本身
cells属性:指当前处于激活状态(显示在最前面)的工作表的单元格
range属性
Application.ActiveWorkbook:指当前处于激活状态的工作簿
Application.ActiveSheet:指当前处于激活状态的工作表
WorksheetFunction属性:Application.WorksheetFunction.函数名 可以直接调用excel内置的函数
DisplayAlerts属性 :是否显示警告框;False为关闭excel的系统警告框
Quit方法:Application.Quit退出excel应用程序
workbook:代表一个打开的excel文件
open方法:workbooks.open打开指定路径的excel文件并返回一个workbook对象
close方法:wb.close 关闭wb代表的这个文件
add方法:workbooks.add新建一个excel文件
SaveAs方法:wb.saveas“路径及文件名”将wb对象代表的工作表的工作簿保存在指定路径和名称excel文件
worksheet:代表一张工作表
查找指定工作表并修改
未指明工作表时,cells(x,y)代表当前显示在最上面的工作表中,第X行第Y列单元格
查找途径
通过位置查找工作表:worksheet(1) 第一张工作表
通过名称查找工作表:worksheets("工作表1")
代码编写
小数点代表“的”
as 指明变量属于哪一类;dim w1 as worksheet即为w1是一个worksheet的对象
给对象赋值时,需要使用set
扫描所有工作表并添加新工作表
count属性:worksheets.count代表了所属工作簿中工作表总数
add方法:worksheets.add新增一个工作表
name属性:worksheets.name可以获取/修改工作表名称
汇总多张工作表数据
多个工作表时,需要注意变量初始化操作语句的位置(可能在上张工作表的数据加在下张工作表中)
range:代表一个或若干个单元格组成的内容区域
cells(行,列)是获得单元格对象过的方法,不是单元格对象本身(如经纬度定位岛屿,是个位置,并不是岛屿本身)
range属性:返回任一单元格的范围
value属性 :单元格内容
r.value=a为r范围内所有单元格都变成a,可简化为r=a
a=r.value为a=r范围内左上角单元格的内容
clear方法
clear方法:Range.Clear将内容和格式全部清除
ClearContents方法:清除内容;r.ClearContents将r范围内所有单元格的内容全部清空,格式保留不变
ClearFormats方法:清楚格式;r.ClearFormats将r范围内所有单元格的格式全部清楚,内容保留不变
font属性:控制range范围内所有单元格的字体
Range.Font.Size:文字大小
Range.Font.Color:文字颜色
Range.Font.Bold:是否粗体
Range.Font.Italic:是否斜体
Interior属性:单元格内部特征
Range.Interior.Color:单元格颜色
Range.Interior.Pattern:
Merge方法:将该Range对象中所有单元格合并为一个单元格
UnMerge方法:取消本Range中的单元格合并,将其全部拆分
代码大量前缀重复时,可以使用代码:with 共同前缀...end with
章节10. 过程与函数
过程
子过程
每个宏本质上就是一个个VBA子过程
多个宏合并在同个按钮上
直接将其中一个的宏代码复制粘贴到按钮对应的那一个宏中并统一变量名
在循环范围相同时,仅仅复制循环体也可以,且较上一方法更为高效
在一个宏中写入执行其他宏的命令:call 宏名
调用程序可以省略call,直接写子过程的名字
模块化设计的优点
代码清晰,易于维护
灵活扩展,轻松修改
代码重用,提高效率
函数
函数:过程的一种,执行结束后可以将运行结果返回给调用者,而子过程无此功能
参数:传递两个过程中同名变量的值(因为不同过程中相同名字的变量,彼此不相关)
不同参数用逗号隔开 eg: function 求和(a,b)
开发公式(使用函数的参数和返回值)
定义的公式只能在当前工作簿中使用
系统函数
字符串函数
len(s):返回字符串s的长度,空格也计算在字符长度里
Trim(s) :返回新字符串,为将字符串s两端的空格去掉后的字符串;
Replace(s,a,b):返回新字符串,该字符串将字符串s中的a替换为b
LCase(s):返回新字符串,将字符串s中所有英文字母变成小写
UCase(s):返回新字符串,将字符串s中所有英文字母变成大写
子串函数
Left(s,a) :从字符串s左边取a 个字符
Mid(s,i,a):从字符串s的第i个字符开始,取a个字符的左边
Right(s,a) :从字符串s右边取a 个字符
InStr(s,a) :在s中查找a,如果找到返回a出现的位置(如第2个字符,返回2),没有找到返回0。
InStr(i,s,a) :从i个字符开始找a。
InStr(i,s,a) :从i个字符开始找a。
(语句:msgbox 变量):将结果显示在消息框里弹出
章节1. 开篇导言
什么是VBA
针对微软公司office软件推出的VB语法的编程语言
针对机械重复、规则明确的操作,自动化输出
章节2. VBA开发环境设置
如何进入VBA开发环境
文件-选项-自定义功能区-主选项卡-开发工具,点击确定
允许excel运行VBA
设置允许:开发工具-宏安全性-启用宏-重启excel
打开:开发工具-visual basic-VBA编辑器(VBE)
VBA编辑器主要功能和界面
代码区域
工程资源管理器(界面左上方)
事件编程代码
发生内容变化事件时excel自动运行程序
写在事件的发生场所(选择子表)
窗体程序代码
标准代码
如点击按钮激活的程序
写在模块里
插入模块:在工程资源管理器里,鼠标右键-插入-模块
类代码
章节3. 读写单元格
怎么在表格中添加按钮,点击运行自己的程序
控件类型:按钮、复选框等
插入:开发工具-插入-表单控件
怎么编写宏
性质:一段VBA小程序
建立:创建控件时,会自动弹出“指定宏”,自定义宏的名称后会自动弹出VBE窗口
代码结构:Sub 宏名()...End Sub
怎么用代码直接操作excel单元格
定义单元格:cells(行,列)
作业:增加按钮,实现公式自动加减计算
章节4. 变量
如何使用变量使程序灵活控制不同单元格
VBA对变量的命名有什么要求
尽量使用有意义的变量名
尽量使用英文字母作变量名
不要使用特殊字符
可以使用英文字母、中文、数字、下划线
变量名第一位不能是数字
不能使用系统的保留字
保留字定义:在VBA中有固定含义,不能再作变量名或宏名
不区分大小写
变量本质
可以理解为用来存放数值的小空间
赋值语句从右往左
强制声明
背景:VBA中遇到新变量时会自动创建该变量,默认值为0,无需事先声明;而写代码时笔误,创建了新变量,系统无法识别
option explicit:强制声明,写在模块第一行
如何定义和使用变量
dim:声明本宏内将用到的变量名称,变量用逗号隔开,写在Sub下一行
const:声明常量,并给常量复制
章节5. 基本流程控制语句
循环结构
代码缩进
根据语句从属关系,使用tab键(使用一次,代码缩进一层)
For循环
step 1可省略,步数默认为1,根据实际而定,在需要逆循环时,step应为负值
next 变量 中next可不写,但为规范编程习惯,还是要加上
必须指明循环次数
While循环
条件满足时执行循环体;直到不满足条件,结束循环
条件满足时执行循环体;直到不满足条件,结束循环
使用空单元格判断循环是否应该结束,不适合存在空行的数据表
Do While
更常用
多重循环(嵌套循环)
注意:
代码注意缩进
写注释(用单引号' 加 注释的内容)
For Each循环语句
循环扫描多张工作表
For Each a In b
Next a
Next a
复杂表格汇总(如表格中数据顺序、格式不一致)
使用多重循环,记住汇总表中的姓名、类型,再去月表中一个个找对应数值
用串函数LCase(Trim()),保证即使姓名误打了空格,或者大小写没有区分,也能找到所有的姓名。
判断(分支)结构
If语句
if语句的操作写在同一行时,可以不使用End if ,但在实际编程中,为使程序有更高的可读性,不建议书写在同一行
关系运算符
=,>,<,>=,<=,<>
嵌套语句
注意:满足条件1后即执行语句,后续条件不会再执行判断,故需注意条件之间的包容、前后顺序
章节6. 程序调试
程序调试
定义:程序运行出错后,在代码中定位问题并修改
错误类型
VBA自动报错范围
语法错误(如IF写成IE)
编译错误(如调用了未声明的变量)
运行时错误(如数字/0)
程序调试内容
逻辑错误(如求A、B平均值,代码写为A+B/2)
调试工具
断点
设置:找到希望暂停的代码行,左侧灰色处按下左键,即在该行代码处设置了断点,代码从头运行到断点处会自动暂停
清除
单个:同样在代码左侧灰色处单击
批量:VBE菜单栏-调试-清除所有断点
单步执行
按F8键执行“单步执行”的操作
监视变量
操作:VBE菜单栏-调试-添加监视-将想监视的内容输入表达式中-确定
作用:更加方便直观地看到变量的变化
章节7. 字符串
字符串特点
需用双引号括起来
字符串中可以包括特殊字符(如空格、换行符等)
字数为零也可以存在(空字符串“”也是字符串)
字符串里区分大小写
由数字构成的字符串不是数值(1+1=2,"1"+"1"="11")
逻辑运算
and(并且)
or (或者)
not(不是)
优先级:not>and>or
收藏
0 条评论
下一页