.png)
Ich versuche, mit VBA einen benannten Bereich zu erstellen. Sowohl FirstBodyCell
als auch ColumnCode
sind einzelne Zellen. Ich möchte, dass der benannte Bereich letztendlich so definiert wird, dass er so aussieht (je nachdem, FirstBodyCell
in welcher Spalte sich das befindet):
=Offset(Sheet1!$E$8,0,0,COUNTA(Sheet1!$E:$E)-COUNTA(Sheet1!$E$1:$E$7),1)
Die Verwendung des folgenden Subs erhöht
Laufzeitfehler '438': Objekt unterstützt diese Eigenschaft oder Methode nicht
und zeigt auf die Zeile mit .Name = ColumnCode.Value
. Irgendeine Idee, was mit diesem Code nicht stimmt?
Sub CreateNamedRange(FirstBodyCell As Range, ColumnCode As Range)
With ActiveWorkbook.Names
.Name = "col_" & ColumnCode.Value
.RefersToR1C1 = "=Offset(" & FirstBodyCell & ",0,0," & _
"COUNTA(" & Columns(FirstBodyCell.Column) & ")-COUNTA(" & _
Range(Cells(1, FirstBodyCell.Column), FirstBodyCell.Offset(-1, 0)) & _
"),1)"
End With
End Sub
Antwort1
Workbook.Names
ist eine Eigenschaft, die eine Names
Sammlungsklasse ergibt, die Mitglieder wie Add
, Count
, Parent
, und verfügbar macht Item
.
Einem Names
Objekt fehlt eine Name
Eigenschaft oder ein RefersToR1C1
Mitglied (daher Fehler 438 – Mitglied/Eigenschaft wird vom Objekt nicht unterstützt/nicht verfügbar gemacht).
Sie möchten das Add
Mitglied dieses Objekts aufrufen. Diese Funktion verwendet als Parameter die Werte, die Sie dort zuweisen möchten. Außerdem .Address
wird eine Adresse zurückgegeben, die nicht im R1C1-Format vorliegt. Versuchen Sie es mit RefersTo
anstelle von RefersToR1C1
.
With ActiveWorkbook.Names.Add( _
Name:="col_" & ColumnCode.Value, _
RefersTo:="=Offset(" & FirstBodyCell & ",0,0," & _
"COUNTA(" & Columns(FirstBodyCell.Column) & ")-COUNTA(" & _
Range(Cells(1, FirstBodyCell.Column), FirstBodyCell.Offset(-1, 0)) & _
"),1)")
'the With block variable is the Name object that was created+added to the Names collection:
Debug.Print .Name
End With
NotizScott Craner.Address
weist darauf hin, dass Sie wahrscheinlich die der Objekte verwenden möchten, die Range
Sie dort angeben. Der tatsächliche Wert für RefersToR1C1
wäre also:
RefersTo:="=Offset(" & FirstBodyCell & ",0,0," & _
"COUNTA(" & Columns(FirstBodyCell.Column).Address & ")-COUNTA(" & _
Range(Cells(1, FirstBodyCell.Column), FirstBodyCell.Offset(-1, 0)).Address & _
"),1)")