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