如何在VBA for Excel中使用r1c1格式进行绝对引用?

fro*_*key 14 excel vba excel-vba

我正在使用VBA(r1c1格式)为Excel编写一个宏,我想引用一个始终位于E3位置的单元格.是否有我可以使用的语法将以r1c1格式进行绝对引用?或者有没有办法切换到A1并返回到r1c1?

我到处寻找,我找不到答案...提前谢谢.

Jer*_*iah 21

如果我坚持=E3G5=$E$3G6,然后启动一个VB窗口和即时窗口中做到这一点:

? ActiveSheet.Range("G5").Formula
=E3
? ActiveSheet.Range("G5").FormulaR1C1
=R[-2]C[-2]
? ActiveSheet.Range("G6").Formula
=$E$3
? ActiveSheet.Range("G6").FormulaR1C1
=R3C5
Run Code Online (Sandbox Code Playgroud)

所以R和C使它相对于当前的细胞.当数字为负时,您需要使用方括号,否则Excel认为您从无效的单元格引用中减去一个数字.

编辑:值得一提的是,当绝对与相对时,引用的处理方式不同.

  • 对于相对引用您从单元格的公式是计数.E3R[-2]C[-2]远离G5.即2行,2列.

  • 对于绝对值,您从左上角开始计算.所以E3R3C5.即3行向下,5列以上.(感谢@GeorgeDooling的澄清)

  • 小澄清。您不是从A1算起的,而是从表算起的,有点像0,0。因此,R1C1将从0,0点下降一倍多,最终到达第1行第1列(A)。括号中的数字表示“将这个位置的数字从当前位置移开”。不带括号的数字表示“使用此确切位置”。这就是为什么不能使用R0C0或R-1C-1等的原因。Excel中没有行/列零或负数的位置。 (2认同)