Namen für Zeilen deklarieren und verwenden in VBA

joburg

Grünschnabel
Ich habe folgendes Problem mit Namen in VBA, welches ich auch mit diversen Foren nicht bewältigen kann.

Ich möchte einer Zeile einen Namen geben mit:

Visual Basic:
Sub Benamung()
With Worksheets("Angaben").Rows("34").Name = "Quartalszahlen"
End With
End Sub

Danach möchte ich diese Zeile 34 ansprechen und beispielsweise beim klicken des button diese Zeileverstecken.

Visual Basic:
Private Sub button_Click()
If button = True Then
Worksheets("Angaben").Names("Quartalszahlen").Hidden = False
Else
Worksheets("Angaben").Names("Quartalszahlen").Hidden = True
End If
End Sub

Ich habe verschieden Konstellationen versucht, die ich jetzt nicht alle aufzeigen möchte, aber es funktioniert nicht und es kommt ständig die Meldung 'Laufzeitfehler 1004 - Anwendungs- oder objektorientierter Fehler'.

Der Hintergrund meiner Namensvergabe ist, dass ich dynamische Zell-, Zeilen- und Spaltenbezüge verwenden möchte, was mit Namensvergabe möglich ist. Schreibe ich beispielsweise einen Befehl für Zeile 34 und ich füge eine neue Zeile darüber ein bezieht sich der Befehl nicht auf Zeile 35 sondern 34, was falsch ist.

Was kann ich machen?
 
Zuletzt bearbeitet von einem Moderator:
Wenn ich mich da recht erinnere, dann müsste Dein oberes Konstrukt so aussehen:
Visual Basic:
Sub Benamung()
With Worksheets("Angaben").Rows("34")
Name = "Quartalszahlen"
End With
End Sub
Außerdem kannst Du Dein unteres Konstrukt wie folgt vereinfachen:
Visual Basic:
Private Sub button_Click()
Worksheets("Angaben").Names("Quartalszahlen").Hidden = Not button
End Sub
 
Mein Vorschlag war irgendwie so
Visual Basic:
ActiveWorkbook.Names.Add Name:="Quartalszahlen", RefersToR1C1:="=Sheet1!R34"
ActiveSheet.Rows(Range("Quartalszahlen").Row).Hidden = True
 
Wow, es funktioniert!
Ein schönes Gefühl!!

Aber ich möchte es gern verstehen. Was ich nun letztlich ausgetauscht habe ist dieser Vorschlag von Yaslaw:

  1. ActiveSheet.Rows(Range("Quartalszahlen").Row).Hidden = True
gegen meine alte Version

  1. Worksheets("Angaben").Names("Quartalszahlen").Hidden = True
Ich tippe darauf, dass Rows(Range("Quartalszahlen").Row). den Unterschied macht. Aber warum? Warum reicht nicht Names("Quartalszahlen"). ???
 
Names("Quartalszahlen") ist nur ein Range. Per Zufall ist dieser Range eine ganze Zeile. Muss aber nicht sein.
Darum gehe ich den Weg über die Rownumer des Ranges.
 
Nun habe ich ein ähnliches Problem.
Ich möchte mehrere Zeilen (5 bis 44) mit einem einzigen Namen versehen:

Sub System1()
With Worksheets("Angaben").Rows("5:44")
Name = "System1"
End With
End Sub

Und diese dann Schließen bei Auswahl 1 mit der ComboBox1 ausblenden; Ansonsten einblenden.

Private Sub ComboBox1_Click()
ComboBox1.ListFillRange = "Tabelle1!B4:B14"
If ComboBox1.Value = ("1") Then
ActiveSheet.Rows(Range("System1").Row).Hidden = True
Else
ActiveSheet.Rows(Range("System1").Row).Hidden = False
End If
End Sub

Warum zeigt er mir diesmal eine Fehlermeldung "Die angegebene Dimension ist ungültig für den aktuellen Diagrammtyp"?

Welche Stelle muss ich wie korrigieren, damit es funktioniert?
 
Zuletzt bearbeitet:
Ich möchte gern mehrere Zeilen (5 bis 44) mit einem einzigen Namen versehen:

Sub System1()
With Worksheets("Angaben").Rows("5:44")
Name = "System1"
End With
End Sub

Und diese dann Schließen bei Auswahl 1 mit der ComboBox1 ausblenden; Ansonsten einblenden.

Private Sub ComboBox1_Click()
ComboBox1.ListFillRange = "Tabelle1!B4:B14"
If ComboBox1.Value = ("1") Then
ActiveSheet.Rows(Range("System1").Row).Hidden = True
Else
ActiveSheet.Rows(Range("System1").Row).Hidden = False
End If
End Sub

Warum zeigt er mir diesmal eine Fehlermeldung "Die angegebene Dimension ist ungültig für den aktuellen Diagrammtyp"?

Welche Stelle muss ich wie korrigieren, damit es funktioniert?
 
Hab mal die 2 Threads zusammengeführt. Ist ja dasselbe Problem.

Was mich verwundert. Was für ein Diagramm? Gem. Fehlermeldung sollte da irgend wo ein Diagramm sein.
 
Es ist kein Diagramm in der gesamten Exceldatei enthalten. Es geht nur darum mehrere Zeilen mit einer entsprechenden Auswahl in der Combobox zu einzublenden und zu auszublenden. Mit dem Button eine Zeile einzublenden und auszublenden wende ich nun an und es funktioniert einwandfrei.
 
Habe es nun nochmal probiert und jetzt zeigt er mir wieder an: 'Laufzeitfehler 1004 - Anwendungs- oder objektorientierter Fehler'
 
Zurück