Range在Excel VBA的代码中主要是为我们定位到某个单元格或单元格区域。回到之前所使用的案例数据中,我们期望VBA代码所要到达的效果是选中并复制首行的数据表头,在选择“插入复制的单元格”,我们可以不用选中整个第三行,而只是仅选中A3单元格时,同样能实现插入复制的数据表头。

点击“开发工具”选项卡下的“录制宏”,不点击“使用相对引用”,按照上面的步骤完成宏的录制。

我们再打开VBA程序的编程环境,在相应的模块下找到录制的宏代码,如下:
Rows("1:1").Select Selection.Copy Range("A3").Select Selection.Insert Shift:=xlDown
我们来对比一下使用相对引用时录制的宏代码:
ActiveCell.Rows("1:1").EntireRow.Select Selection.Copy ActiveCell.Offset(2, 0).Rows("1:1").EntireRow.Select Selection.Insert Shift:=xlDown ActiveCell.Select
相比之下,在不使用相对引用时,代码会更简单一些,并且不受ActiveCell的影响,即必须是活动单元格的情况下宏才会生效。
在不使用相对引用的代码基础上,我们重新编写一个过程“生成成绩条”,在此过程中将以上的代码复制粘贴,并使用一个For循环进行控制,这样可以循遍数据表中所有的学生数。

新过程的完整代码如下:
Sub 生成成绩条()Dim i As IntegerFor i = 3 To 31 Step 2 Rows("1:1").Select Selection.Copy Range("A" & i).Select Selection.Insert Shift:=xlDownNextEnd Sub
执行“生成成绩条”的过程,我们可以一键完成所有学生的成绩都单独添加一行对应的数据表头。

我们已经从多次执行一个宏完成数据处理,到现在可以实现通过一个宏完成数据处理了,Excel VBA的强大功能也越发凸显,重要的是我们可以根据数据情况有所选择,选择更适合和便利的方式完成数据的处理。