使用VBA细胞我有这样的代码:。命名在Excel
ActiveWorkbook.Names.Add Name:="BuBatch", RefersToR1C1:= _
"='Business Units'" & ActiveCell.Address
我使用“ActiveCell.Address因为细胞的变化,但我得到一个错误说有公式中的错误我不不知道错误是什么 欣赏任何帮助
使用VBA细胞我有这样的代码:。命名在Excel
ActiveWorkbook.Names.Add Name:="BuBatch", RefersToR1C1:= _
"='Business Units'" & ActiveCell.Address
我使用“ActiveCell.Address因为细胞的变化,但我得到一个错误说有公式中的错误我不不知道错误是什么 欣赏任何帮助
假设ActiveCell
位于“业务单位”工作表上(并且您并未尝试为“业务单位”表单上的单元格设置名称,位于某个位置作为其他工作表上的当前单元格),则可以将代码简化为:
ActiveCell.Name = "BuBatch"
固定现有公式要求除去R1C1
引用类型的(如在由斯科特克拉纳的评论中提及)和!
的插入以分离从所述地址表名称,即
ActiveWorkbook.Names.Add Name:="BuBatch", RefersTo:= _
"='Business Units'!" & ActiveCell.Address
非常感谢\ – aoswald
Range.Address
是一个参数化属性。您可以使用对象浏览器在其定义PEEK(只打F2):
正如你所看到的,这个定义去如下:
Property Address([RowAbsolute], [ColumnAbsolute], [ReferenceStyle As XlReferenceStyle = xlA1], [External], [RelativeTo]) As String
方括号表示可选参数,当您这样做时:
foo = ActiveCell.Address
你实际上在做这样的事情:
foo = ActiveCell.Address(_
RowAbsolute:=True, _
ColumnAbsolute:=True, _
ReferenceStyle:=xlA1, _
External:=False, _
RelativeTo:=Nothing)
注意ReferenceStyle
参数的xlA1
值;另一种可能性是xlR1C1
。
如果你想分配RefersToR1C1
,您需要提供一个R1C1
地址,其中包括提供非默认值的ReferenceStyle
参数:
ActiveWorkbook.Names.Add _
Name:="BuBatch", _
RefersToR1C1:="='Business Units'!" & ActiveCell.Address(ReferenceStyle:=XlR1C1)
或者,使用默认寻址风格,并分配到RefersTo
代替:
ActiveWorkbook.Names.Add _
Name:="BuBatch", _
RefersTo:="='Business Units'!" & ActiveCell.Address
我会质疑使用ActiveCell
在这里:它意味着你的代码中的其他地方,你正在激活特定的单元格。别。使用对象模型,而不是工作:
Dim targetBook As Workbook
Set targetBook = Application.Workbooks.Open(path)
Dim target As Range
Set target = targetBook.Worksheets("Sheet1").Range("A1") 'whatever the actual target cell is
targetBook.Names.Add Name:="BuBatch", RefersTo:="='Business Units'!" & target.Address
删除'R1C1',你给它一个A1样式地址。 –