Hi,
warum so umständlich? Du kannst doch auch direkt den Namen aus der Zelle in Spalte A auslesen und diesen als Blattnamen verwenden. Mit dem folgenden Code wird in 95% aller Fälle bei einem neuen Eintrag in Spalte A ein Blatt angelegt und nach dem Eintrag benannt. Nur wenn der Name länger als 31 Zeichen ist oder ungültige Sonderzeichen enthält, muss das neue Blatt manuell benannt werden. Eine Messagebox weist dann darauf hin.
Ansonsten funktioniert der Code wie gehabt. Bei Wechsel zu einer Namenszelle in Spalte A wird das entsprechende Blatt aktiviert? Mich würde das ja auf Dauer ganz schön nerven, aber wenn du das so willst...
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fehler
If Not Intersect(Target, Range("A:A")) Is Nothing Then
Worksheets.Add(After:=Sheets(Sheets.Count)).Name = Target.Value
End If
Exit Sub
Fehler:
MsgBox "Es wurde ein neues Blatt angelegt. Jedoch konnte kein gültiger Name vergeben werden. Benennen Sie das Tabellenblatt manuell!", vbInformation
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo Fehler
If Not Intersect(Target, Range("A:A")) Is Nothing And Target.Value <> "" Then
Worksheets(Target.Value).Select
End If
Exit Sub
Fehler:
MsgBox "Es gibt kein Blatt mit diesem Namen!", vbExclamation
End Sub
PS: der Code von Gast 36748 ist natürlich auch eine Alternative. Ein entsprechend gesetzter Hyperlink, würde den User zumindest vorwarnen, dass gleich ein Sprung in ein anderes Blatt passiert. Kannst meinen Code ja entsprechend umschreiben.
Liebe Grüße Mr. K.
|