Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1544to1548
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Blätter umbenennen und Name aus Zellen lesen VBA

Blätter umbenennen und Name aus Zellen lesen VBA
14.03.2017 15:24:49
Nick
Hallo,
ich hoffe ihr könnt mir bei folgender Sache weiterhelfen.
Und zwar möchte ich gerne alle Tabellenblätter, außer das erste Blatt, automatisch umbenennen lassen via Makro. Das soll dann als Schleife durchlaufen.
Der Name des jeweiligen Blattes soll aus mehreren Zellen ausgelesen werden und mit einem Präfix kombiniert werden ("Text"&B5&B1&(B2&B3 aus Tabellenblatt1)).
Das Problem dabei, der letzte Teil des Namens (B2&B3) soll aus dem ersten Tabellenblatt ausgelesen werden, der Rest aus den jeweiligen Blättern, die umbenannt werden sollen. Ich bin nicht so fit mit VBA und verzweifle langsam dran.
Grüße

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Blätter umbenennen und Name aus Zellen lesen
14.03.2017 15:31:43
Michael
Hallo!
Voila:
Sub BlattNamen()
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim i&, Pre$, Suf$
Application.ScreenUpdating = False
Pre = "Text"
Suf = Wb.Worksheets(1).Range("B2") & Wb.Worksheets(1).Range("B3")
For i = 2 To Wb.Worksheets.Count
With Wb.Worksheets(i)
.Name = Pre & .Range("B5") & .Range("B1") & Suf
End With
Next i
End Sub
LG
Michael
AW: Blätter umbenennen und Name aus Zellen lesen VBA
14.03.2017 15:37:27
dirk
Hallo!
Mal auf die Schnelle:
Sub TabellenBlätter()
'Anzahl der Tabellenblätter ermitteln
Dim Anzahl As Long
Anzahl = ThisWorkbook.Worksheets.Count
Anzahl = ThisWorkbook.Sheets.Count
'Tabellenblätter mit dem Index ansprechen
Dim i As Long
With Thisworkbook
For i = 2 To Anzahl    'mit Blatt 2 starten, da erstes nicht umbenannt werden soll
.Sheets(i).name = "Text" & .Sheets(i).range("B5") & .sheets(i).Range("B1") & _
.Sheets(1).range("B2") & .sheets(1).range("B3")
Next i
end with
End Sub
Ungetestet. Lass' mal hören, ob ok
Gruss
Dirk aus Dubai
Anzeige
AW: Blätter umbenennen und Name aus Zellen lesen VBA
14.03.2017 16:16:32
Nick
Wow, Danke für die schnelle Antwort. Leider ist der Name zu lang.
Dann doch lieber so(sieht auch besser aus):
"Text_"&B5&"_"&LINKS(B1;8)&"_"&(aus Tabellenblatt1:B2&B3)
Danke im Voraus und Grüße in die Wüste :-)
Schade, dass Dir meine AW nicht gefallen hat...
14.03.2017 16:19:05
Michael
LG
Michael
AW: Schade, dass Dir meine AW nicht gefallen hat...
15.03.2017 07:50:15
Nick
Hallo Michael,
danke auch dir für die schnelle Antwort. Hab deine Nachricht auch gelesen, konnte aus zeitlichen Gründen nicht mehr antworten.
Leider ist der erzeugte Name zu lang und das Makro funktioniert nicht. Könnte man stattdessen den Code so umschreiben, dass von Zelle B1 nur die ersten 8 Zeichen von links genommen werden? Außerdem würde ich gerne die einzelnen Textbausteine mit einem Unterstrich trennen.
"Text_"&B5&"_"&LINKS(B1;8)&"_"&(aus Tabellenblatt1:B2&B3)
Kannst du mir deinen Code so umschreiben?
Grüße
Anzeige
AW: Schade, dass Dir meine AW nicht gefallen hat...
15.03.2017 08:52:16
Nick
Hi Steve1da,
hab ich selbstverständlich gemacht. Ich bin schon von der Dynamik auf beiden Foren überrascht. Hätte nicht gedacht so schnell eine Antwort zu bekommen. Aber umso besser.
Grützi
Immer noch schade, dass ich keine AW bekommen habe
15.03.2017 09:37:26
Michael
...aber vielleicht war meine erste Antwort doch zu dynamisch, wer weiß.
Beim nächsten Mal antworte ich langsamer ;-)
LG
Michael
Anzeige
Ahh, doch noch, dann hier Ergänzung...
15.03.2017 09:40:31
Michael
Hallo,
...hab Deine AW doch noch bekommen. Hier Deine gewünschte Ergänzung:
Sub BlattNamen()
Const SEP$ = "_"
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim i&, Pre$, Suf$
Application.ScreenUpdating = False
Pre = "Text"
Suf = Wb.Worksheets(1).Range("B2") & Wb.Worksheets(1).Range("B3")
For i = 2 To Wb.Worksheets.Count
With Wb.Worksheets(i)
.Name = Pre & SEP & .Range("B5") & SEP & _
Left(.Range("B1"), 8) & SEP & Suf
End With
Next i
End Sub
LG
Michael
AW: Ahh, doch noch, dann hier Ergänzung...
15.03.2017 10:14:11
Nick
Hi Michael,
deine Antwort war nicht zu dynamisch, ich war zu undynamisch ;-)
Der Code funktioniert, danke dir vielmals, aber leider noch nicht perfekt. Vielleicht kann man noch ne kleine Abwandlung einbauen.
Wenn in Zelle B1 ="Kriterium", Dann so: "Text"_B4_B1_(B2&B3 aus Tabellenblatt1)
Ansonsten wie gehabt "Text"_B4_B1_(B2&B3 aus Tabellenblatt1)
Danke schonmal im Voraus!
Anzeige
Perfektion ist eine Frage des Blickwinkels...
15.03.2017 10:35:02
Michael
...mein lieber Nick,
...denn mein Code ist insofern perfekt, als er genau das macht (!) was Du angefordert hast.
Nicht perfekt ist hingegen Deine Salamitaktik, mit der Du Dir hier Code erstellen lässt - in Zukunft also gleich genau beschreiben, was Du willst/brauchst - dann bekommst Du auch gleich den entsprechenden Code.
Außerdem scheinst Du jetzt selbst schon verwirrt zu sein, ob dieser Angaben:
Wenn in Zelle B1 ="Kriterium", Dann so: "Text"_B4_B1_(B2&B3 aus Tabellenblatt1)
Ansonsten wie gehabt "Text"_B4_B1_(B2&B3 aus Tabellenblatt1)

Bisher war es doch immer "Text"_B5_B1_etc. - hier daher der geänderte Code, unter meiner Annahme, dass im Falle B1 = "Kriterium" B4 herangezogen wird, ansonsten B5:
Sub BlattNamen()
Const SEP$ = "_"
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim i&, Pre$, Suf$
Application.ScreenUpdating = False
Pre = "Text"
Suf = Wb.Worksheets(1).Range("B2") & Wb.Worksheets(1).Range("B3")
For i = 2 To Wb.Worksheets.Count
With Wb.Worksheets(i)
Select Case .Range("B1")
Case Is = "Kriterium"
.Name = Pre & SEP & .Range("B4") & SEP & _
Left(.Range("B1"), 8) & SEP & Suf
Case Else
.Name = Pre & SEP & .Range("B5") & SEP & _
Left(.Range("B1"), 8) & SEP & Suf
End Select
End With
Next i
End Sub
LG
Michael
Anzeige
AW: Perfektion ist eine Frage des Blickwinkels...
15.03.2017 11:52:57
Nick
Danke dir Michael. Funktioniert.
Deine Anmerkung hab ich verstanden, allerdings sind das Dinge gewesen die mir im Nachhinein aufgefallen sind, da die Mappe sehr komplex ist (ca 70 Blätter). Entschuldige die Unannehmlichkeiten...
Fein! Viel Erfolg noch, owT
15.03.2017 12:38:23
Michael

33 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige