大家好,我是永不止步的老牛。
上一篇我们介绍了VBA的过程和函数,本篇我们介绍Excel宏。
Excel宏是一些VBA代码的集合,宏可以被执行,宏可以进行录制,保存下来方便多次执行,宏录制就是将我们在Excel中进行的一些操作记录下来,并转换成VBA代码,因为宏是一段可执行代码的集合,所以有可能被病毒或别有用心的人利用,Excel有宏安全性设置,可以根据需要进行设置。
有很多同学想学VBA,又不知该如何下手,其实只要我们掌握了Excel和VBA的一些基本概念后,宏可以帮助我们学习VBA的一些写法,比如说你想设置列宽,不知用VBA怎么写,可以录制宏,手动去操作一下,Excel就把你的操作记录成VBA代码了,我们下来只要去分析转换好的VBA代码就行,所以宏是我们使用VBA编程的好帮手。
个人认为,宏生成的VBA代码存在冗余,我们进行VBA编程时,可以参考宏录制的代码,但不建议直接使用。
如果要保存含有宏的Excel文件,则需要将文件保存为启用宏的格式*.xlsm。
有关宏的操作项在顶部菜单“开发工具”里。
- “宏”:指的是执行宏。
- “录制宏”:点击后变成“停止录制”,指的是开始录制我们接下来的操作,直到点击“停止录制”。
- “使用相对引用”:Excel默认是按照绝对引用录制宏,点击“使用相对引用”后,“使用相对引用”按钮显示成选中状态,此时Excel录制宏就使用相对引用。绝对引用指的是你在F4输入了1,在F5输入了2, VBA代码中记录的就是F4和F5单元格,不论你此刻选中哪个单元格,执行录制的宏,都会把1赋值到F4,2赋值到F5。而使用相对引用,则是根据选择的区域的第一个单元格进行应用录制,上面的同样操作,不会记录F4和F5,会记录录入了1,然后在往下1个单元格,录入了2,此时假如你选中G100后执行录制的宏,那么G100就是1,G101就是2。
- “宏安全性”是对宏设置。
- “宏”:既然是执行宏,宏又是一段VBA代码的集合,那么上一篇我们编写的过程是不是宏呢?能不能执行?函数又能不能被执行呢?我们看一下。
我们可以看见,我们写的过程就是宏,可以成功被执行,而函数GetBMI并没有出现在可执行列表中,说明不能被直接执行。
下来我们看看如何录制宏,点击“录制宏”,出现如下窗口:
“宏名”就是给宏起一个名字,名字中不能包含空格,不能和已经有的宏名字重复,可以设置一个按键,和Ctrl组成快捷键来执行宏如果已经有这个快捷键,就和Ctrl Shift组合,最好给每个正式的宏书写说明,方便后续能明白这个宏的作用。
我们实际操作一下,用录制宏来记录设置H4:O8区域的样式,看看生成的VBA代码。
A.加上边框
我们给H4:O8区域设置边框,选中H4:O8区域,录制宏。
我们可以看到录制好了宏就是生成了一些VBA代码,我们再看一下执行这个宏的效果,我们先把边框清除掉,然后执行刚录制的宏。
一切OK,以后我们只要选中一个区域,执行宏“加边框”,就会给选中区域加上边框。
B.居中对齐
我们给H4:O8区域设置居中对齐,选中H4:O8区域,录制宏。
自动生成以下VBA代码,
C.给表头设置背景
我们给H4:O4区域设置背景色,选中H4:O4区域,录制宏。
我们分析下生成的VBA代码,发现第一句是Range("H4:O4").Select,这句的意思是选中区域H4:O4,后面的代码是设置背景色,意味着每次执行这个宏,都会选中H4:O4并设置背景色,如果我们想执行这个宏改变的是我们当前选中区域的背景色,那么就删除掉第一句,通过这段代码,我们学会了VBA选中区域用Range(区域).Select。
D.将H:O列设置成自适应宽度
原来自适应列宽就一句代码,Columns("H:O").EntireColumn.AutoFit。
目前我们录制了4个宏,都设置了快捷键,下来我们把样式恢复成初始状态,分别按4个快捷键去执行宏。
是不是很方便,如果我们把VBA代码修改一下,并把4个宏合并成1个,那么以后我们只要选中一个区域,执行这个宏,就一次设置好边框、居中对齐、表头背景、自适应列宽。下面是我改好的代码,大家可以实验一下:
Sub 设置样式()
' 设置选中区域样式
' 快捷键: Ctrl Shift P
With Selection
' 给单元格区域添加边框线
.BorderAround LineStyle:=xlContinuous
.Borders(xlInsideVertical).LineStyle = xlContinuous
.Borders(xlInsideHorizontal).LineStyle = xlContinuous
' 设置选中区域居中对齐
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
' 给选择区域设置背景色
.Rows(1).Interior.ThemeColor = xlThemeColorAccent6
.Rows(1).Interior.TintAndShade = 0.799981688894314
' 设置选择列为自适应
.EntireColumn.AutoFit
End With
End Sub
我么现在基本明白宏有两大基本功能。
1.执行重复、相同的工作,就好像你用Ctrl C复制(录制宏),然后去好多个需要的地方进行Ctrl V粘贴(执行宏)。
2.帮助学习VBA代码的写法。
还有Excel宏表函数,大家有兴趣的可以了解一下,有些功能还很有用,比如evalUATE函数、GET.document函数、GET.CELL函数、GET.WORKBOOK函数、FILES函数等。
Excel宏是个好东西,今天就简单介绍到这,大家最好能自己实际练习一下,下一篇文章我们介绍VBA的判断语句。
001.了解VBA基本概念
002.了解VBA编辑器
003.VBA过程和函数-干货
,