关闭录制的VBA宏的R1C1参考样式

关闭录制的VBA宏的R1C1参考样式,vba,excel,Vba,Excel,在录制的VBA宏中,它们的公式似乎使用了R1C1参考样式。例如,用B2+1填写B4: Range("B4").Select ActiveCell.FormulaR1C1 = "=R[-2]C+1" 有人知道是否可以关闭此模式吗?例如,让录制的宏看起来像: Range("B4").Select ActiveCell.Formula = "=B2+1" 我相信你不能那样做。宏将始终以R1C1样式记录 您始终可以切换样式,但它将仅应用于工作表,如果录制宏,它仍将显示R1C1参考样式 R1C1样式很

在录制的VBA宏中,它们的公式似乎使用了
R1C1参考样式
。例如,用
B2+1
填写
B4

Range("B4").Select
ActiveCell.FormulaR1C1 = "=R[-2]C+1"
有人知道是否可以关闭此模式吗?例如,让录制的宏看起来像:

Range("B4").Select
ActiveCell.Formula = "=B2+1"

我相信你不能那样做。宏将始终以R1C1样式记录

您始终可以切换样式,但它将仅应用于工作表,如果录制宏,它仍将显示R1C1参考样式

R1C1样式很容易理解

在R1C1引用样式中,范围是指单元格与正在调用的单元格之间的距离。例如,如果从R1C1到R5C1有5个值,并且范围是从R7C2调用的,那么范围将是R[-6]C[-1]:R[-2]C[-1]。这里,范围中的第一个单元格在单元格R7C2之前有6行,在单元格R7C2之前有1列,类似地,范围中的最后一个单元格也是如此

如果我举你的例子,那么
“=R[-2]C+1”
意味着公式所指的是一行,该行向上两行(-2),位于同一列(0)中。您的公式与
“=R[-2]C[0]+1”

编辑

下面是我编写的一个小函数,它可以帮助您将R1C1转换为A1字符串

Sub Sample()
    '~~> This will give you $B$2
    Debug.Print R1C12A1("B4", "R[-2]C")

    '~~> This will give you E227
    Debug.Print R1C12A1("O9", "R[218]C[-10]", True)

    '~~> This will give you $Y$217
    Debug.Print R1C12A1("O9", "R[208]C[10]")
End Sub

Function R1C12A1(baseCell As String, sRC As String, Optional RemDollar As Boolean = False) As String
    Dim MyArray() As String
    Dim r As Long, c As Long

    sRC = Replace(sRC, "R", "")     

    If Left(sRC, 1) = "C" Then
        r = 0
    Else
        r = Replace(Replace(Split(sRC, "C")(0), "[", ""), "]", "")
    End If

    If Right(sRC, 1) = "C" Then
        c = 0
    Else
        c = Replace(Replace(Split(sRC, "C")(1), "[", ""), "]", "")
    End If

    If RemDollar = False Then
        R1C12A1 = Range(baseCell).Offset(r, c).Address
    Else
        R1C12A1 = Replace(Range(baseCell).Offset(r, c).Address, "$", "")
    End If
End Function

注意:我在这里没有做任何错误处理。我相信,如果需要的话,您可以将其合并。

在录制宏时,过去有一种切换相对引用的工具

开始录制时,在宏工具栏中“停止”按钮附近有一个按钮,用于切换相对参照;这与切换R1C1不一样吗?或者这个不再可用了

我从来没有像Siddharth说的那样费心自己去切换它,R1C1不太难理解,而且,不管你做什么,VBA都需要一些编辑,所以同时如果你想使用其他语法,很容易修改

我只是玩了一下下面的内容,但似乎没有什么帮助,所以我可能把这个按钮的使用和R1C1混淆了


使用相对引用仍然存在。它位于功能区中“停止录制”的正下方,但不影响R1C1样式。