2、宏的录制和查看宏代码
>
2、宏的录制和查看宏代码

了解Excel VBA 从录制宏开始

录制宏是一个非常好的入门方式,它就像给你的操作“录像”,Excel 会自动将你的操作转换为 VBA 代码,通过录制宏,你可以直观地看到 VBA 代码是如何生成的。即使没有任何编程经验,也可以通过录制宏快速上手,逐步理解VBA的基本结构和语法,并且往往只需要在录制后简单修改优化代码,就可以无数次重复你的“录像”操作。

录制宏能为你打开一扇通往 Excel 高级功能的大门!

为便于逐步对照操作步骤和宏代码,了解代码是如何记录操作步骤的,我们先假设一个案例:

案例:集团公司收集的共享工作簿,有10个地市分公司的月累拜访客户统计,每个工作表就是一个分公司数据,表中有详细的日拜访量、留资量等信息,行数(日期)无限扩展,关键信息的合计数都是固定表头的“A2:D3”单元格,如何每日快速汇总到总表里?

这里我们手动执行两个城市(北京和上海)的数据汇总,看看宏代码都记录了写什么?

本节视频:

宏的录制和查看宏代码

视频原文:

1-如何录制宏?

在了解Excel 初始设置()后,可以通过以下方式找到录制宏的按钮:

方法一:进入“开发工具”选项卡点击“录制宏”;

方法二:或左下角“录制宏”快捷按钮 。

点击后进入宏的录制

弹出窗口的说明:

1)、输入宏名称(必填项):中英文均可,建议和宏执行的操作过程契合;

2)、设置快捷键(非必填项): 非必设置项通过设置的快捷键,可以快速执行宏命令, 一定注意设置的快捷键不应与Excel的默认快捷键冲突。执行宏的方式很多,Excel 默认的快捷键也很多,有较多不常用到的默认快捷键,为了避免冲突,不建议设置宏快捷键。

3)、保存在(必填项):

a:当前工作簿(建议):宏直接存储在当前打开的Excel文件中,仅在此文件打开时,宏才可用,文件关闭后,宏会随文件保存,下次打开可继续使用。因为宏常常是仅针对当前文件的特定需求,所以一般建议保存当前工作簿即可;

b:个人宏工作薄:宏存储在个人宏工作簿(隐藏文件PERSONAL.XLSB)中,默认保存在用户启动目录。所有 Excel 文件打开时均可调用此宏(需确保个人宏工作簿已加载),Excel启动时自动加载该文件(隐藏状态)。如果需要跨文件使用某个宏,可以考虑建一个宏工作簿,比如常用的格式设置、自定义函数,经常需要跨文件使用,不用在每个文件中都录制或保存相同的宏代码;

c:新工作薄(不常用):当需要临时测试或开发独立功能的宏时,才使用该保存位置,不与特定文件绑定。

4)、说明(非必填项):对宏的功能描述,如执行什么样的操作(建议写描述)。

点击“确定”进入录制宏

执行你的操作:常规的汇总方式,就是重复“选择”→“复制”→“粘贴”,直至汇总完成,执行该步骤即可;

完成后点击“停止录制”

方法一:进入“开发工具”选项卡点击“停止录制”;

方法二:或左下角“停止录制”快捷按钮 。

2-如何查看录制后的代码?

进入VBA编辑器:Excel 初始设置:(1、初始设置和编写第一个VBA程序)

打开模块:双击打开模块,就看了我们录制代码!

3-执行录制的代码

我们清空汇总表中的数据,再次执行该宏,看到数据又瞬间又被重新汇总了出来。对比第一次的手工一步步操作所耗费的时间和精力(一不小心复制粘贴错位置了咋办?),点击一个按钮就自动生成结果,这岂不是就是一个小的办公自动化的应用?

设想一下,如果有100个分公司呢?每天统计换成每小时跟进呢?用代码执行,能大大提升了工作效率和减少错误发生!

4-宏代码与操作步骤详解:

看到这么长的代码不必觉得头皮发麻,看不懂每行的意思也无关紧要,只要知道这些是你操作的过程即可。

每一步操作,映射到后端的代码是这样的!

Sub DataSum() '录制宏时,取的宏名称

'

' DataSum 宏 '录制宏时,写的宏说明

' 汇总各分公司的数据

'

'记录的操作步骤

‘第一大段--------

‘第一小段,从“北京”的工作表中,把“地区”值,复制粘贴到“汇总表中”

Sheets("北京").Select '选中名为“北京”的工作表

ActiveWindow.SmallScroll Down:=-3 '滚动鼠标,窗口小滚轮上升

Range("B2").Select '选中“北京”工作中表中的B2单元格

Selection.Copy '复制选中的单元格

Sheets("汇总").Select'选中名为“汇总”的工作表

Range("A3").Select'选中“北京”工作表中的A3单元格

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False’选择性粘贴,只粘贴内容

’第二小段,和第一小段类似,只不过是从“北京”的工作中复制粘贴“用户拜访数”

Sheets("北京").Select

Range("D2").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("汇总").Select

Range("B3").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

’第三小段,复制粘贴“留资数”

Sheets("北京").Select

ActiveWindow.SmallScroll Down:=-3

Range("D3").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("汇总").Select

Range("C3").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

’第四小段,复制粘贴“日期”

Sheets("北京").Select

Range("B3").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("汇总").Select

Range("D3").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

‘第一大段结束---------------

’第二大段-------

'和第一大段一样,无非是复制粘贴的,变成了“上海”

’第一小段,复制粘贴“地区”

Sheets("上海").Select

ActiveWindow.SmallScroll Down:=-6

Range("B2").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("汇总").Select

Range("A4").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

’第二小段,复制粘贴“拜访客户数”

Sheets("上海").Select

Range("D2").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("汇总").Select

Range("B4").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

’第三小段,复制粘贴“留资料数”

Sheets("上海").Select

Range("D3").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("汇总").Select

Range("C4").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

’第四小段,复制粘贴“日期”

Sheets("上海").Select

Range("B3").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("汇总").Select

Range("D4").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

' 第二大段结束-----------

End Sub '程序结束

把录制后的代码分段(两个大段\每个大段有四个小段,一个大段表示操作一个表的过程,四个小段表示操作四个单元格从分表汇总到总表的过程)后,了解第一个小段可大致知道整个代码的表示的操作过程了!

下一篇:了解循环,解锁剩余的20%:

本篇我们录制了宏,并且重复执行了录制的宏。如果我们在执行时的设想是真实的呢?——有100个分公司,录制宏就超过了半个小时,还不能出错(出错本身并没有关系,录制过程中误操作之后再修正,代码也会把这个修正过程记录下来,录制后的这段代码复用时,也会按照错误→修正的这一过程执行。,只不过会影响执行的效率罢了),工作量可想而知。

下一篇我们了解一个自动化处理数据的核心工具:循环代码,只要知晓其中的一到两种,就能举一反三,很快掌握其他适用于不同场景的不同类型的循环结构。循环代码不止在VBA中,其他程序语言也同样存在,只是语法\语句会有所不同。

Shopping Cart