Range.Address
ist eine parametrisierte Eigenschaft. Sie können mit dem Object Browser (drücken Sie einfach F2) an seiner Definition peek:
Wie Sie sehen können, die Definition lautet wie folgt:
Property Address([RowAbsolute], [ColumnAbsolute], [ReferenceStyle As XlReferenceStyle = xlA1], [External], [RelativeTo]) As String
Eckige Klammern bezeichnen optionale Parameter, wenn Sie dies tun:
foo = ActiveCell.Address
Du eigentlich so etwas wie dies zu tun:
foo = ActiveCell.Address(_
RowAbsolute:=True, _
ColumnAbsolute:=True, _
ReferenceStyle:=xlA1, _
External:=False, _
RelativeTo:=Nothing)
Hinweis der xlA1
Wert des ReferenceStyle
Argument; die andere Möglichkeit dafür ist xlR1C1
.
Wenn Sie RefersToR1C1
zuweisen möchten, müssen Sie eine R1C1
Adresse liefern, die einen Nicht-Standardwert zum ReferenceStyle
Parameter beinhaltet Versorgung:
ActiveWorkbook.Names.Add _
Name:="BuBatch", _
RefersToR1C1:="='Business Units'!" & ActiveCell.Address(ReferenceStyle:=XlR1C1)
Oder verwenden Sie die Standard-Adressierung Stil und zuweisen RefersTo
statt:
ActiveWorkbook.Names.Add _
Name:="BuBatch", _
RefersTo:="='Business Units'!" & ActiveCell.Address
ich die Verwendung von ActiveCell
Frage würde Hier: Es bedeutet, dass Sie an einer anderen Stelle in Ihrem Code diese bestimmte Zelle aktivieren. Nicht. Arbeiten Sie stattdessen mit dem Objektmodell:
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
Entfernen Sie den 'R1C1', da Sie ihm eine A1-Adresse geben. –