【问题标题】:Extract current cell address提取当前单元格地址
【发布时间】:2021-11-10 10:01:38
【问题描述】:

我需要在 VBA 中提取当前单元格而不将其传递给函数的参数。

我的意思是,例如,如果公式在单元格 B35 中,我想在公式的 VBA 代码中提取地址(行 = 35,列 = 2)。

我以为活动单元格会这样做,但不,它会提取光标所在单元格的地址。

你知道我该怎么做吗?

提前感谢您的帮助。

【问题讨论】:

  • 活动单元格光标所在的单元格。根据定义。
  • 分享您使用的代码并举例说明您需要的单元格地址。
  • 如果光标所在的不是活动单元格,你如何定义“当前单元格”?如果它是代码中的范围变量(在本例中,我将其称为“currentcell”),那么您可以使用currentcell.address 获取完整地址或使用currentcell.rowcurrentcell.column 分别获取行号和列号。
  • 您好,谢谢您的回复。 @Spencer Barnes,当前单元格是调用公式的单元格。如果在单元格 B35 中调用它,我希望地址行 = 35,列 = 2

标签: excel vba


【解决方案1】:

我认为您的意思是Application.Caller,它是调用 VBA 的对象。可以在函数内部使用它来返回调用 UDF 的单元格,而不是 ActiveCell

Application.Caller property (Excel)

一个简单的例子是这样的:

Public Function ThisCell() As String


ThisCell = "ROW:" & Application.Caller.Row & " - COLUMN:" & Application.Caller.Column

End Function

如果您现在在任何单元格中输入=ThisCell(),它将返回其行和列:

请注意,它们的输出都不同,即使它们使用相同的不带参数的 UDF。

【讨论】:

  • 还有一个内置的ThisCell函数。
  • 我的错,函数名应该是不同的
【解决方案2】:

类似于 Foxfire And Burns And Burns 的回答,但不需要 vba。

应用此公式,然后将其复制并粘贴为值。

="line = "&ROW()& " column= "&COLUMN()

【讨论】:

    【解决方案3】:

    试试下面的代码

    Sub ExAddress()
        MsgBox "Row: " & ActiveCell.Row & vbNewLine & _
                "Column: " & ActiveCell.Column
    End Sub
    

    【讨论】:

      猜你喜欢
      • 2015-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多