新手学习VBA,一定是从录制宏开始,才是最快的路径。
即使是有经验的老手,录制宏也是不可缺少的代码生成方式。
录制宏,可以让用户不需要背熟对象模型的所有对象、方法、属性、事件,而简单的按按键盘,点点鼠标就可以完成大量代码的生成,然后根据经验,对代码做精简和提炼封装,就是高效的VBA代码。
废话少说,开始录制
1.1、改变一段文字的格式(以Microsoft Word 2010为例)
a.先打开开发工具选项
打开这个之后,上方Ribbon菜单界面才会有“开发工具”菜单
文件-选项-自定义功能区-勾选开发工具
b.强烈建议打开“显示所有格式标记”
打开这个选项之后,所有文档里的打印字符和非打印字符都会展示出来,这样方便你更清除的认识你的Word文档结构。
开始-选项-显示-显示所有格式标记
c.新建一个Word文档,随机生成一些文字:
d.然后鼠标选中文字,并点击 开发工具-录制宏
为什么要选中文字再开始?
哪里那么多问题,让你选你就选,哈哈。
因为,进入录制宏状态后,鼠标就不能在Word文档区域操作了,如果需要变更位置或者选择文字,就只能通过纯键盘操作了。
当然,如果你跟本人一样,具备全程无鼠标办公的无(shǎ)敌(diǎo)实力的话,你也可以不按套路出牌。
如果有空,我们以后也可以扒一扒最实用的键盘操作技能。
开始录制
确认录制
Normal.dotm是啥?
你就把它理解为一个默认的通用的模板,所有的用户文档在打开时默认都会附带打开这个货,所以你一些常用的代码都可以放在这个模板里。
这里我们就选择录制到我们自己的文档里,后续修改完善后,仍然可以复制粘贴到通用模板中去。
e.修改内容包括:字体、加粗、文字大小、文字颜色
录制完成的代码如下:
Sub 第1个录制宏()' 第1个录制宏 宏 With Selection.Font .NameFarEast = "新宋体" .NameAscii = "Times New Roman" .NameOther = "Times New Roman" .Name = "+中文正文" .Size = 9 .Bold = True .Italic = False .Underline = wdUnderlineNone .UnderlineColor = wdColorAutomatic .StrikeThrough = False .DoubleStrikeThrough = False .Outline = False .Emboss = False .Shadow = False .Hidden = False .SmallCaps = False .AllCaps = False .Color = 10498160 .Engrave = False .Superscript = False .Subscript = False .Spacing = 0 .Scaling = 100 .Position = 0 .Kerning = 1 .Animation = wdAnimationNone .DisableCharacterSpaceGrid = False .EmphasisMark = wdEmphasisMarkNone .Ligatures = wdLigaturesNone .NumberSpacing = wdNumberSpacingDefault .NumberForm = wdNumberFormDefault .StylisticSet = wdStylisticSetDefault .ContextualAlternates = 0 End WithEnd Sub做一下精简如下:Sub 第1个录制宏() With Selection.Font .NameFarEast = "新宋体" .NameAscii = "Times New Roman" .Size = 9 .Bold = True .Color = 10498160 End WithEnd Sub
怎么精简,这个就是经验了,本文主要讲IDE,代码精简暂时不讲。
f.怎么使用刚才录制的这个宏?
①宏列表访问执行
如下图操作,或者按快捷键Alt+F8,直接弹出宏列表界面。
②加入快捷工具栏
③定义快捷键
现在如果要使用这个宏,选定文本,然后快捷Alt+F8,或者点击快捷工具栏的图标,或者按键Alt+1,都可以完成执行。
1.2、修改表格的边框(以Excel为例)
Excel里的个人宏工作簿(Personal.xlsb)跟Word里的Normal.dotm很相似。
录制过程省略,录制代码如下:
Sub 宏1() Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlInsideVertical) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlInsideHorizontal) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End WithEnd Sub然后精简如下:Sub 表格边框() Dim i As Long For i = 7 To 12 With Selection.Borders(i) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With Next iEnd Sub
后续使用和Word相比,前两种(Alt+F8,快速工具栏)是一样的操作,不赘述
第3种定义快捷键,略有不同,相比Word的快捷键自定义,Excel里的快捷键自定义比较弱,能够定义的快捷键组合比较受限。
当然,所有office组件都可以通过代码加入快捷键,只不过大家提供的接口不一样。
并且,代码添加的快捷键可以不受限制。
在Excel VBA里添加快捷键的基本方法是Application.OnKey
在Word VBA里添加快捷键的基本方法是KeyBindings.Add
具体的实现,以后再慢慢扒。