使用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樣式地址。 –