【问题标题】:VBA: How to fix cells positions in the OFFSET functionVBA:如何在 OFFSET 函数中修复单元格位置
【发布时间】:2017-03-12 11:14:28
【问题描述】:

我想知道这是如何编码的:

OFFSET($F$52, 0, ($D342 - $D$342),1,1)

由于单元格的位置不同,为了表示单元格 D342,我将使用例如 Cells(300 + i, 5 + j)。

我想知道如何使用 VBA 代码修复单元格: i) 修复行 ii) 固定柱子 iii) 固定行和列

谢谢:)

【问题讨论】:

  • 不清楚你在问什么。与 Excel 公式不同,VBA 为您提供了定义变量 的可能性。您可以修复它们、更改它们或根据您的应用程序使用它们。
  • @A.S.H.,如果想修复一行,我想知道如何编码来表示 D$342。如果我想修复一个列,我想知道如何编码 $D342。如果我想同时解决这两个问题,那么我该如何编写 $D$342 的代码这就是我要问的。

标签: vba rows offset fixed dynamic-columns


【解决方案1】:

当您有一个范围并且想要在公式中插入其地址时,您可以使用其.Address。这个属性非常灵活,允许您控制很多事情,包括最重要的是,您希望事情是绝对的(固定的)还是相对的(复制时可移动的)。

为了解决您的问题,您可以使用.Address method 的参数RowAbsoluteColumnAbsolute。例如,Cells(300 + i, 5 + j).Address(RowAbsolute=False)。请记住,这些参数的默认值为True

下面的代码sn-p会告诉你怎么做,包括解释。

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$3 (default)
   Debug.Print r.address(ColumnAbsolute:=False) ' D$3
   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$3

   ' You can also get R1C1 format using the ReferenceStyle Parameter
   Debug.Print r.address(ReferenceStyle:=xlR1C1) ' R3C4. default format is xlA1
End Sub

【讨论】:

  • 感谢@A.S.H 的帮助!
猜你喜欢
  • 2019-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多