VBA: 如何修复 OFFSET 函数中的单元格位置
VBA: How to fix cells positions in the OFFSET function
我想知道这是如何编码的:
OFFSET($F, 0, ($D342 - $D2),1,1)
由于单元格位置不同,为了表示单元格 D342,我将使用例如 Cells(300 + i, 5 + j)。
我想知道如何使用 VBA 代码修复单元格:
i) 固定行
ii) 固定柱子
iii) 固定行和列
谢谢:)
当你有一个范围并且你想在公式中插入它的地址时,你可以使用它的.Address
。 属性 非常灵活,允许您控制很多事情,包括最重要的是,您希望事情是绝对的(固定的)还是相对的(复制时可移动的)。
为了您的问题,您可以使用 .Address method
的参数 RowAbsolute
和 ColumnAbsolute
。例如,Cells(300 + i, 5 + j).Address(RowAbsolute=False)
。请记住,这些参数的默认值为 True
。
以下代码片段将告诉您如何操作,其中包含解释。
Sub TestUsingAddress()
Dim r As Range
Set r = Sheet1.Cells(3, 4) ' (D3)
' You can control the parameters RowAbsolute and ColumnAbsolute
Debug.Print r.address ' $D (default)
Debug.Print r.address(ColumnAbsolute:=False) ' D
Debug.Print r.address(RowAbsolute:=False) ' $D3
Debug.Print r.address(RowAbsolute:=False, ColumnAbsolute:=False) ' D3
'and you can get the sheet's name with the address using the External parameter
Debug.Print r.address(external:=True) ' [SOTest.xlsm]Sheet1!$D
' You can also get R1C1 format using the ReferenceStyle Parameter
Debug.Print r.address(ReferenceStyle:=xlR1C1) ' R3C4. default format is xlA1
End Sub
我想知道这是如何编码的:
OFFSET($F, 0, ($D342 - $D2),1,1)
由于单元格位置不同,为了表示单元格 D342,我将使用例如 Cells(300 + i, 5 + j)。
我想知道如何使用 VBA 代码修复单元格: i) 固定行 ii) 固定柱子 iii) 固定行和列
谢谢:)
当你有一个范围并且你想在公式中插入它的地址时,你可以使用它的.Address
。 属性 非常灵活,允许您控制很多事情,包括最重要的是,您希望事情是绝对的(固定的)还是相对的(复制时可移动的)。
为了您的问题,您可以使用 .Address method
的参数 RowAbsolute
和 ColumnAbsolute
。例如,Cells(300 + i, 5 + j).Address(RowAbsolute=False)
。请记住,这些参数的默认值为 True
。
以下代码片段将告诉您如何操作,其中包含解释。
Sub TestUsingAddress()
Dim r As Range
Set r = Sheet1.Cells(3, 4) ' (D3)
' You can control the parameters RowAbsolute and ColumnAbsolute
Debug.Print r.address ' $D (default)
Debug.Print r.address(ColumnAbsolute:=False) ' D
Debug.Print r.address(RowAbsolute:=False) ' $D3
Debug.Print r.address(RowAbsolute:=False, ColumnAbsolute:=False) ' D3
'and you can get the sheet's name with the address using the External parameter
Debug.Print r.address(external:=True) ' [SOTest.xlsm]Sheet1!$D
' You can also get R1C1 format using the ReferenceStyle Parameter
Debug.Print r.address(ReferenceStyle:=xlR1C1) ' R3C4. default format is xlA1
End Sub