excel学习库

excel表格_excel函数公式大全_execl从入门到精通

Excel录制宏时必须要使用相对引用吗?来看看不用相对引用会如何

在Excel中,当我们使用“开发工具”下的宏录制的功能时,我们可以快速处理一些已整理好的数据,例如在文章中,我们将一张汇总的学生成绩表制作成单个的学生成绩条,这样方便老师在告知学生成绩时无需公开所有人的成绩,而可以将每个学生的成绩单独以成绩条的形式告知每一位学生。而在这个演示案例中,我们注意到在录制宏之前需要先“使用相对引用”。 既然有需要使用相对引用录制宏的情况,那是否也可以不用相对引用呢?当然是没问题的,只不过我们就需要结合文章中所提到的Range来帮助实现。

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的强大功能也越发凸显,重要的是我们可以根据数据情况有所选择,选择更适合和便利的方式完成数据的处理。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接