Supportnet / Forum / Tabellenkalkulation
Mit Excel VBA Namen für Bereiche vergeben
Frage
Das folgende Makro vergibt 1 Namen für 1 Bereich. Ich möchte jedoch Namen für viele Bereiche vergeben. Die Namen sollen Block2, Block3, Block4 ... usw. bis Block195 heißen. Die Bereiche dazu sind alle gleich groß und schließen aneinander an. Für Block3 ist der Bereich B384 bis Z574. Ich schaffe es leider nicht, die entsprechenden Variablen zu deklarieren und einzubauen. Ich hoffe, es kann mir jemand helfen, denn ich würde mir ungeheuer viel Arbeit sparen.
Sub BereichBenennen()
Dim Bereich As Range
Worksheets("rohMW").Activate
Set Bereich = Sheets("rohMW").Range("B193:Z383")
ActiveWorkbook.Names.Add Name:="Block2", RefersTo:=Bereich
End Sub
Antwort 1 von fürLau
Hallo, Oma
Frohe Pfingsten
Nachfolgendes Makro sollte Dein Anliegen erfüllen:
Gruß[h3]{[h1]Ó¤[sup...fürLau
Signatur wurde ganz und gar ohne SNTool erstellt.
Frohe Pfingsten
Nachfolgendes Makro sollte Dein Anliegen erfüllen:
Sub Bereiche_benennen()
Dim bereich As Range, i As Long, zaehler%
zaehler = 1
Worksheets("rohMW").Activate
For i = 2 To 37245 Step 191
Debug.Print i
Set bereich = Sheets("rohMW").Range("B" & CStr(i) & ":Z" & CStr(i + 190))
ActiveWorkbook.Names.Add "Block" & Format(zaehler, "000"), RefersTo:=bereich
zaehler = zaehler + 1
Set bereich = Nothing
Next
End SubGruß[h3]{[h1]Ó¤[sup...fürLau
Signatur wurde ganz und gar ohne SNTool erstellt.
Antwort 2 von Oma
Hallo fürLau,
Du bist der/die Größte. Das mit der dreistelligen Formatierung ist genial. Da habe ich die Bereiche in richtiger Reihenfolge untereinander. Es hat noch besser funktioniert als ich es mir vorgestellt habe.
Was ich nicht ganz verstanden habe ist der Befehl Debug.Print i. Darüber hinaus weiß ich auch nicht genau was CStr bedeutet. Und für mich auch verwunderlich, dass hinter Next kein i steht.
Irgendwann werde ich hoffentlich auch mal ein Makro alleine schreiben können. Vielleicht kannst Du mir ein gutes Nachschlagewerk empfehlen? Wobei ich natürlich dieses Forum sehr schätze und vor allem die Supermakros von Dir.
Herzlichen Dank und auch noch einen schönen Pfingstmontag von Oma.
Du bist der/die Größte. Das mit der dreistelligen Formatierung ist genial. Da habe ich die Bereiche in richtiger Reihenfolge untereinander. Es hat noch besser funktioniert als ich es mir vorgestellt habe.
Was ich nicht ganz verstanden habe ist der Befehl Debug.Print i. Darüber hinaus weiß ich auch nicht genau was CStr bedeutet. Und für mich auch verwunderlich, dass hinter Next kein i steht.
Irgendwann werde ich hoffentlich auch mal ein Makro alleine schreiben können. Vielleicht kannst Du mir ein gutes Nachschlagewerk empfehlen? Wobei ich natürlich dieses Forum sehr schätze und vor allem die Supermakros von Dir.
Herzlichen Dank und auch noch einen schönen Pfingstmontag von Oma.
Antwort 3 von fürLau
Hallo Oma,
Debug.print i war nur zur Entwicklung für mich wichtig.
Einfach um im Direktfenster die richtige Schrittweite der For..Next Schleife zu sehen. Kann Ersatzlos gelöscht werden.
Next i ist nicht (zwingend) erforderlich, da immer die innerste Schleife geNextet wird, in dem Fall gibt´s ja nur Eine. Aber zur besseren Lesbarkeit eigendlich sinnvoll. (*schäm*)
Ich habe mir Chistian Friedrich´s VBA mit Excel zugelegt - und schlage regelmäßig darin nach.
..und frohe Pfingsten
Debug.print i war nur zur Entwicklung für mich wichtig.
Einfach um im Direktfenster die richtige Schrittweite der For..Next Schleife zu sehen. Kann Ersatzlos gelöscht werden.
Next i ist nicht (zwingend) erforderlich, da immer die innerste Schleife geNextet wird, in dem Fall gibt´s ja nur Eine. Aber zur besseren Lesbarkeit eigendlich sinnvoll. (*schäm*)
Ich habe mir Chistian Friedrich´s VBA mit Excel zugelegt - und schlage regelmäßig darin nach.
..und frohe Pfingsten
Antwort 4 von fürLau
Nachtrag
CStr = Convert to String - notwendig wenn eine Zahl als Text ausgegeben werden soll, weil die Argumente für das Range object "B378:Z574" eben Text ist.
CStr = Convert to String - notwendig wenn eine Zahl als Text ausgegeben werden soll, weil die Argumente für das Range object "B378:Z574" eben Text ist.
Antwort 5 von Oma
Hallo fürLau,
herzlichsten Dank für die Erklärungen und den Buch-Tipp. Ich habe das Buch Excel-VBA von Markt und Technik. Die Beispiele sind o.k. Aber der Transfer hin zum eigenen Makro gelingt mir noch nicht ganz. Ich werde mir im Buchhandel das von Dir genannte Werk ansehen. Danke und einen schönen Tag.
Oma
herzlichsten Dank für die Erklärungen und den Buch-Tipp. Ich habe das Buch Excel-VBA von Markt und Technik. Die Beispiele sind o.k. Aber der Transfer hin zum eigenen Makro gelingt mir noch nicht ganz. Ich werde mir im Buchhandel das von Dir genannte Werk ansehen. Danke und einen schönen Tag.
Oma

