《VBA之Excel应用》(版权10178983)是非常经典的,是我推出的第七套教程,定位于初级,目前是第一版修订。这套教程从简单的录制宏开始讲解,一直到窗体的搭建,内容丰富,实例众多。大家可以非常容易的掌握相关的知识,这套教程共三册,十七章,都是我们在利用EXCEL工作过程中需要掌握的知识点,希望大家能掌握利用。今日讲解的内容是:VBA之Excel应用第五节:录制宏时,使用绝对(Absolute)引用和相对(Relative)引用
【分享成果,随喜正能量】放开心胸,堂堂正正,不计较眼前荣辱得失。一生做事光明磊落,心境恬然自得,自然吉祥遂愿,平安自在,乐享天年。 得此偈者,命途多舛,起起伏伏,时而阴云密布,时而朗天开。虽命途风雨阴晦,坡坎沟壑,但要堂堂正正做人,这样才能时来运转,祥光永照,天年长享。。
第五节 录制宏时,使用绝对(Absolute)引用和相对(Relative)引用的区别
大家好,我们继续VBA的学习,在上一讲中,我们讲到对于初学VBA人员,可以录制一段代码让一些重复的工作能自动完成。这不失为一种提高效率的方法。但我们在录制宏的时候,一定要注意区别绝对引用和相对引用。这节我将就这个问题给大家以详细讲解。
1 绝对引用时代码的录制效果
所谓绝对引用,是单元格中的绝对单元格引用(例如$A$1)总是在指定位置引用单元格。如果公式所在单元格的位置改变,绝对引用保持不变。如果多行或多列地复制公式,绝对引用将不作调整。默认情况下,新公式使用相对引用,需要将它们转换为绝对引用。例如,如果将单元格B2 中的绝对引用“=$A$1”复制到单元格B3,则在两个单元格中一样,都是 “=$A$1”。
在VBA录制宏的时候默认采用的是绝对引用的方式。
例如,我们要录制一段宏,录制的内容是:在单元格A1中录入:“VBA世界”,A2中录入“VBA学习”,A3中录入“VBA代码”
我们看一下录制的效果:
Sub 宏2()
Range("A1").Select
ActiveCell.FormulaR1C1 = "VBA世界"
Range("A2").Select
ActiveCell.FormulaR1C1 = "VBA学习"
Range("A3").Select
ActiveCell.FormulaR1C1 = "VBA代码"
End Sub
代码截图:
2 相对引用时代码的录制效果
所谓相对单元格引用(例如 A1)是基于包含公式和单元格引用的单元格的相对位置。如果公式所在单元格的位置改变,引用也随之改变。如果多行或多列地复制公式,引用会自动调整。默认情况下,新公式使用相对引用。例如,如果将单元格 B2 中的相对引用复制到单元格 B3,将自动从 =A1 调整到 =A2。
在录制宏的时候,如果需要相对引用,需要按如下的处理方式:
第一:先点击“使用相对应用”;第二:再点击“录制宏”
实现同样的录制内容:在单元格A1中录入:“VBA世界”,A2中录入“VBA学习”,A3中录入“VBA代码”的一段宏,我们看看在选择相对引用的情况下产生的代码:
Sub 宏3()
ActiveCell.FormulaR1C1 = "VBA世界"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "VBA学习"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "VBA代码"
End Sub
代码截图:
3 绝对引用录制宏和相对引用录制宏的效果区别
两种方法的代码在实现效果上有什么区别呢?我们先在工作表窗口建立两个运行按钮分别来实现这两种引用的效果,如下图所示的两个按钮。
同时我给出了当前活动单元格的位置;
我们先点击“绝对引用”的运行按钮,实现的效果如下:
我们仍旧把光标点到“C9”单元格的位置,点击“相对引用”的运行按钮,实现的效果如下:
此时我们发现,我们填入的三组字符出现在了C9,C10,C11 三个单元格内。也就是说,在相对引用条件下录入的代码是以相对于当前活动单元格的录入效果。
今日内容回向:
1)什么是绝对引用,什么是相对引用?
2)绝对引用和相对引用条件下录制的宏代码有何不同?
3) 绝对引用和相对引用条件下录制的宏代码在实现效果上有何不同?
本讲内容参考程序文件:工作簿01.xlsm
我20多年的VBA成果全在下面的资料中: