【问题标题】:Macro Recording to define cell name宏录制定义单元格名称
【发布时间】:2015-02-17 06:45:43
【问题描述】:

我已经录制了一个带有相对引用的宏,其中第一个单元格是我想要给出范围的名称,所以我选择我想要命名的范围 -> 右键单击​​ -> 定义名称 -> 因为名称已经包含在第一个单元格中,我不需要更改任何内容,因此 -> 我单击“确定”。

Example
A1:B5 - I want to name it TSLA56
then I go to D1 to run the recorded macro to name D1:E5 to TSLA23

宏运行完成后仍称为 D1

我做错了什么?这甚至可能吗?

录制宏:

Sub DefineName()
'
' DefineName Macro
'

'
    ActiveCell.Range("A1:B5").Select
    ActiveWorkbook.Names.Add Name:="TSLA56", RefersToR1C1:="=Sheet1!R1C1:R5C2"
    ActiveWorkbook.Names("TSLA56").Comment = ""
End Sub

1:

【问题讨论】:

  • 您正在命名 D1:E5,因此在选择整个范围之前,该名称不会显示在单元格引用中。您还可以检查名称管理器以查看已创建的定义

标签: vba excel


【解决方案1】:

虽然您的操作被记录为相对,但在定义名称时,诸如Name:=.RefersTo:= 之类的某些内容不会相对。您可以通过编辑选择地址并将其传递到宏代码行来进行调整。

ActiveWorkbook.Names.Add Name:=selection.cells(1,1).value, refersTo:="=" & selection.address

selection.cells(1,1).value 指任何单个或多个单元格选择的左上角单元格中的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多