【问题标题】:Getting cell reference via VBA通过 VBA 获取单元格引用
【发布时间】:2018-07-04 10:51:10
【问题描述】:

在我的 Excel 电子表格中,我想通过 VBA 将 Cell A1 中的单元格引用插入 Cell B1
最后,电子表格应如下所示:

     A       B
1           A1
2
3
4

Cell B1 是通过运行从 Cell A1 获取单元格引用的 VBA 来填充的。
我尝试了以下 VBA,但无法使其工作(运行时错误 1001):

Sub test()
Sheet1.Range("B1").Value = Sheet1.Range(Sheet1.Range("A1").Value)
End Sub

我需要在 VBA 中进行哪些更改才能解决我的问题?

【问题讨论】:

  • 这行得通。我刚刚尝试了这个值“嗨!”在 C1 中,然后在单元格 A1 中写入值“C1”。运行时,单元格 B1 复制“嗨!” - 它应该做什么?
  • 你熟悉INDIRECT函数吗?这听起来像你正在尝试做的事情
  • 您可以在B1 中使用公式=CELL("address",A1) 并向下拖动。这将为您提供绝对地址 - $A$1。这就是你所追求的但使用 VBA 吗?
  • 哦,我想你想要Sheet1.Range("B1").Value = Sheet1.Range("A1").Address
  • 在这种情况下 - 这正是@jamheadart 评论的内容。

标签: excel vba


【解决方案1】:

要获取单元格 A1 的完整地址到单元格 B1 中,您可以使用以下函数:

Sub AdressCell ()
Sheet1.Range("B1").Value = Sheet1.Range("A1").Address
End Sub

要摆脱绝对引用,您可以使用:

Sub AdressCell ()
Sheet1.Range("B1").Value = Sheet1.Range("A1").Address(False, False)
End Sub

仅获取您可以使用的列:

Sub AdressColumn ()
Sheet1.Range("B1").Value = Sheet1.Range("A1").Column
End Sub

仅获取您可以使用的行:

Sub AdressRow ()
Sheet1.Range("B1").Value = Sheet1.Range("A1").Row
End Sub

【讨论】:

  • 如果你放置在一个函数中,你也可以将其用作工作表函数 - Public Function GetMyAddress(Cell_Ref As Range) As String: GetMyAddress = Cell_Ref.Address: End Function
  • 很好的补充 - Address 是我经常使用的一个非常方便的属性 - 虽然不太确定 OP 的最终目标是什么
  • @jamheadart:正是我想要的。非常感谢您的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-21
  • 1970-01-01
相关资源
最近更新 更多