为什么在VBA中的GetValue函数中使用单元格"A1"?

sha*_*uya 5 excel vba excel-vba

我正在使用此函数从已关闭的工作簿中检索值.在这段代码的第8行中,我不明白为什么使用"A1".整个第8行究竟发生了什么?我也对xlR1C1参数感到困惑.

Private Function GetValue(path, file, sheet, ref)

    Dim arg As String
    If Right(path, 1) <> "\" Then path = path & "\"
    If Dir(path & file) = "" Then
        GetValue = "File Not Found"
        Exit Function
    End If
    arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
      Range(ref).Range("A1").Address(, , xlR1C1)
    GetValue = ExecuteExcel4Macro(arg)

End Function
Run Code Online (Sandbox Code Playgroud)

lay*_*nee 1

xlR1C1是一种参考样式,用于指定公式的工作方式。使用这种样式时,您的公式的工作方式和外观将与您预期的非常不同。R1C1 规范基本上意味着使用行和列序号而不是字母名称来不同地引用单元格。例如,当使用 xlR1C1 时,您可以使用=R2C2(row2,column 2)访问单元格 B2。另一个例子,单元格 C10 可以称为=R10C3

至于第 8 行发生的情况...您正在构建一个如下所示的单元格引用:(请注意,您的单元格引用将有所不同,因为它有一个文件路径)

='[Myfilename.xlsx]Sheet1'!R1C1
Run Code Online (Sandbox Code Playgroud)

您可以使用调试器查看变量中包含的字符串arg