Tina:我的VBA学习之旅(二)——相对引用绝对引用zhuanlan.zhihu.com
今天终于要看代码了呢,怎么样,有没有一点点小激动
就按照相对引用和绝对引用看一眼代码吧
可以按Alt+F11快捷键打开代码,也可以选择开发工具-Visual Basic,还可以选择开发工具-宏-编辑进入代码
就拿上两次的张三李四王五和两列数字相加为例
张三李四王五
相对引用
Sub 相对引用名字()
'
' 相对引用名字 宏
''ActiveCell.FormulaR1C1 = "张三"ActiveCell.Offset(1, 0).Range("A1").SelectActiveCell.FormulaR1C1 = "李四"ActiveCell.Offset(1, 0).Range("A1").SelectActiveCell.FormulaR1C1 = "王五"ActiveCell.Offset(1, 0).Range("A1").Select
End Sub
绝对引用
Sub 绝对引用名字()
'
' 绝对引用名字 宏
''ActiveCell.FormulaR1C1 = "张三"Range("A2").SelectActiveCell.FormulaR1C1 = "李四"Range("A3").SelectActiveCell.FormulaR1C1 = "王五"Range("A4").Select
End Sub
对比上面两个代码,相信都能看出来,在相对引用里面
ActiveCell.Offset(1, 0).Range("A1").Select
的代码到了绝对引用里面变成了
这两行代码各自代表什么意思呢
说实话,我也不是特别懂,所以只研究了一下它的数字
尝试更改相对引用里面的数字,发现(1, 0)是接下来要怎么走的路标,什么意思呢
(X, Y)中,X代表行,Y代表列,X是正值,代表往下走,是负值,代表往上走,Y是正值,代表往右走,是负值,代表往左走,数值代表步数
然后,在相对引用和绝对引用中,都有Range("A1")这个东西,代表什么意思呢
在相对引用中,前面按路标走完了,后面都是Range("A1"),代表以当前所在的单元格为A1,你要去的地方。比如说,我当前单元格是B5,相当于是A1的位置,那么Range("A1")出来之后,我就呆在B5,如果Range("A1")变成了Range("A2"),那么我要向下走一格,结果就是走到了B6
绝对引用里面的Range("A1")就是A1单元格,想指定哪个单元格就改成哪个单元格就行
ActiveCell.FormulaR1C1 = "张三"
这行代码里的数字我没弄明白是什么意思,可以度娘询问之。。前面的ActiveCell,顾名思义,活动单元格,就是选中的那个单元格
两列数字相加
相对引用
Sub 相对引用公式()
'
' 相对引用公式 宏
''Application.CutCopyMode = FalseActiveCell.FormulaR1C1 = "=RC[-1]+RC[-2]"ActiveCell.SelectSelection.AutoFill Destination:=ActiveCell.Range("A1:A10")ActiveCell.Range("A1:A10").Select
End Sub
绝对引用
Sub 绝对引用公式()
'
' 绝对引用公式 宏
''Application.CutCopyMode = FalseActiveCell.FormulaR1C1 = "=RC[-1]+RC[-2]"Range("C1").SelectSelection.AutoFill Destination:=Range("C1:C10")Range("C1:C10").Select
End Sub
这里的两种代码,前两行一样,差别就在后面三行了
那前两行什么意思咧
Application.CutCopyMode = False
这行我也不清楚它什么意思
ActiveCell.FormulaR1C1 = "=RC[-1]+RC[-2]"
这行表示,在活动单元格里面填充一个公式,公式是这个=RC[-1]+RC[-2],RC[-1]表示活动单元格左边的第一个格子,RC[-2]表示活动单元格左边的第二个格子,所以这个公式表达的就是把活动单元格左边的两个值加起来的意思
在相对引用中
表示,不管你是哪个单元格,我就选中你了,比如我选中了C5,那么C5就是活动单元格了,按上面公式,C5=B5+A5
Selection.AutoFill Destination:=ActiveCell.Range("A1:A10")
这一行呢,表示的意思是,我选中C5了,把C5当成是A1单元格,把上面的公式向下填充,直到C14为止
ActiveCell.Range("A1:A10").Select
这最后一行表示,把从活动单元格开始往下数十格全部选中,比如我活动单元格为C5,那么现在选中了C5:C14
在绝对引用中
表示选中C1单元格
Selection.AutoFill Destination:=Range("C1:C10")
表示把上面的公式填充到C1:C10中
表示选中C1:C10
绝对引用和相对引用这个大坑看明白了不?什么,不明白,那再从头看一遍,,记得自己改一下代码尝试一下代码里面的东西代表了什么意思,反正Excel大家都有
由于看书也看了一周了,东西也能做一点出来了,现在不知道下一篇该分享什么了。。
如果分享常量变量等等的基础知识,觉得太枯燥,而且这些东西完全可以从工具书上获取,如果不分享,那又会对后续造成极大的麻烦。
如果分享程序的顺序结构、分支结构、循环结构等基本结构,又感觉进阶太快,有编程基础的人在这一点上完全没有问题,没有编程基础的人学起来可能略吃力,就算不上小白入门VBA了。
等我纠结完了再分享吧= =