Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
804to808
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
804to808
804to808
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Tabellenblatt anhand einer Namensliste

Tabellenblatt anhand einer Namensliste
23.09.2006 19:34:08
Michael
Hallo,
den folgenden Code hätte ich gern so geändert, dass dieser nicht in Zelle A1 beginnt, sondern in Zelle B4. Da ich es selber nicht hin bekomme, wäre ich für Eure Hilfe sehr dankbar.
Dann hätte ich vielleicht noch eine kleine Änderung/Ergänzung: Und zwar sollen die Tabellenblätter anhand der Namen ab Zelle B4 angelegt werden. Wenn jetzt angenommen in Zelle B12 ein Name beginnend mit dem A da ist, so solklter dann auch das Tabellenblatt direkt vorne sortiert eingefügt werden.
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 1 Then Exit Sub
On Error GoTo Fehler
Dim ws As Worksheet, Blatt As String, zei As Long, vorh As Boolean
Blatt = ActiveSheet.Name
If Range("A65536").End(xlUp).Row = 1 And Range("A1") = "" Then Exit Sub
For zei = 1 To Range("A65536").End(xlUp).Row
vorh = False
For Each ws In ThisWorkbook.Worksheets
If ws.Name = Cells(zei, 1) Then vorh = True
Next ws
If vorh = False Then
Worksheets.Add
ActiveSheet.Name = Cells(zei, 1)
End If
Next zei
Worksheets(Blatt).Activate
Exit Sub
Fehler:
MsgBox "Fehler aufgetreten, ist im Namen ein nicht zugelassenes Zeichen?" & Chr(13) & "ansonsten unbek. Fehler"
Application.EnableEvents = True
Worksheets(Blatt).Activate
End Sub

Für Eure Hilfe im voraus herzlichen Dank.
Micha

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblatt anhand einer Namensliste
23.09.2006 20:51:25
Stefan
Hallo Micha,
Versuchs mal damit.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 1 Then Exit Sub
On Error GoTo Fehler
Dim ws As Worksheet, Blatt As String, zei As Long, vorh As Boolean
Blatt = ActiveSheet.Name
If Range("B65536").End(xlUp).Row = 1 And Range("B4") = "" Then Exit Sub
For zei = 4 To Range("B65536").End(xlUp).Row
vorh = False
For Each ws In ThisWorkbook.Worksheets
If ws.Name = Cells(zei, 2) Then vorh = True
Next ws
If vorh = False Then
Worksheets.Add
ActiveSheet.Name = Cells(zei, 2)
End If
Next zei
Worksheets(Blatt).Activate
Exit Sub
Fehler:
MsgBox "Fehler aufgetreten, ist im Namen ein nicht zugelassenes Zeichen?" & Chr(13) & "ansonsten unbek. Fehler"
Application.EnableEvents = True
Worksheets(Blatt).Activate
End Sub

Schoene Gruesse
Stefan
Anzeige
AW: Tabellenblatt anhand einer Namensliste
23.09.2006 23:52:04
Michael
Hallo Stefan,
vielen Dank für Deine Lösung. Funktioniert aber leider nicht. Und dann fehlt auch die Sortierung die ich zusätzlich gewünscht hätte.
Gruß
Micha.
AW: Tabellenblatt anhand einer Namensliste
24.09.2006 03:43:44
Stefan
Sorry! Noch'n Versuch...

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 2 Then Exit Sub
On Error GoTo Fehler
Dim ws As Worksheet, Blatt As String, zei As Long, vorh As Boolean, wsAfter As Worksheet
Blatt = ActiveSheet.Name
If Range("B65536").End(xlUp).Row = 1 And Range("B4") = "" Then Exit Sub
For zei = 4 To Range("B65536").End(xlUp).Row
vorh = False
Set wsAfter = Nothing
For Each ws In ThisWorkbook.Worksheets
If ws.Name = Cells(zei, 2) Then vorh = True
If LCase(ws.Name) < LCase(Cells(zei, 2)) Then Set wsAfter = ws
Next ws
If vorh = False Then
If wsAfter Is Nothing Then
Worksheets.Add before:=Worksheets(1)
Else
Worksheets.Add after:=wsAfter
End If
ActiveSheet.Name = Cells(zei, 2)
End If
Next zei
Worksheets(Blatt).Activate
Exit Sub
Fehler:
MsgBox "Fehler aufgetreten, ist im Namen ein nicht zugelassenes Zeichen?" & Chr(13) & "ansonsten unbek. Fehler"
Application.EnableEvents = True
Worksheets(Blatt).Activate
End Sub

Anzeige
AW: Tabellenblatt anhand einer Namensliste
24.09.2006 10:17:27
Michael
Hallo Stefan,
jau jetzt klappts. Vielen Dank für die Löpsung und Deine Mühe.
Gruß
Micha.
AW: Tabellenblatt anhand einer Namensliste
24.09.2006 10:30:01
Michael
Hallo guten morgen,
zu der vorgenannten Lösung von Stefan hätte ich vielleicht noch eine kleine Änderung, die mir gerade eingefallen ist.
Und zwar sollen die Tabellenblätter die im Tabellenblatt Mitarbeiter ab Zelle B4 eingetragen werden sortiert werden. Dabei sollen die Tabellenblätter Vorlage, Feiertage und Mitarbeiter aber nicht sortiert werden, sondern grundsätzlich vorne stehen bleiben.
Wäre das möglich ?
Hier nochmals der Code
======================

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 2 Then Exit Sub
On Error GoTo Fehler
Dim ws As Worksheet, Blatt As String, zei As Long, vorh As Boolean, wsAfter As Worksheet
Blatt = ActiveSheet.Name
If Range("B65536").End(xlUp).Row = 1 And Range("B4") = "" Then Exit Sub
For zei = 4 To Range("B65536").End(xlUp).Row
vorh = False
Set wsAfter = Nothing
For Each ws In ThisWorkbook.Worksheets
If ws.Name = Cells(zei, 2) Then vorh = True
If LCase(ws.Name) < LCase(Cells(zei, 2)) Then Set wsAfter = ws
Next ws
If vorh = False Then
If wsAfter Is Nothing Then
Worksheets.Add before:=Worksheets(1)
Else
Worksheets.Add after:=wsAfter
End If
ActiveSheet.Name = Cells(zei, 2)
End If
Next zei
Worksheets(Blatt).Activate
Exit Sub
Fehler:
MsgBox "Fehler aufgetreten, ist im Namen ein nicht zugelassenes Zeichen?" & Chr(13) & "ansonsten unbek. Fehler"
Application.EnableEvents = True
Worksheets(Blatt).Activate
End Sub

Vielen Dank für Eure Mühe.
Gruß
Micha
Anzeige
AW: Tabellenblatt anhand einer Namensliste
24.09.2006 12:59:21
Stefan
Hallo Micha,
Ich hab den Code so abgeandert, dass die neue Tabelle fruehestens als 4. eingefuegt wird. Damit hast Du die ersten 3 Blaetter unsortiert. Ausserdem hab ich noch abgeandert, dass er wirklich erst ab B4 reagiert (vorher war die gesamte Spalte B die Region auf die das Proramm geschaut hat...)

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 2 Or Target.Row < 4 Then Exit Sub
On Error GoTo Fehler
Dim ws As Worksheet, Blatt As String, zei As Long, vorh As Boolean, wsAfter As Worksheet
Blatt = ActiveSheet.Name
If Range("B65536").End(xlUp).Row = 1 And Range("B4") = "" Then Exit Sub
For zei = 4 To Range("B65536").End(xlUp).Row
vorh = False
Set wsAfter = ThisWorkbook.Worksheets(3)
For Each ws In ThisWorkbook.Worksheets
If ws.Name = Cells(zei, 2) Then vorh = True
If ws.Index > 3 Then
If LCase(ws.Name) < LCase(Cells(zei, 2)) Then Set wsAfter = ws
End If
Next ws
If vorh = False Then
If wsAfter Is Nothing Then
Worksheets.Add before:=Worksheets(1)
Else
Worksheets.Add after:=wsAfter
End If
ActiveSheet.Name = Cells(zei, 2)
End If
Next zei
Worksheets(Blatt).Activate
Exit Sub
Fehler:
MsgBox "Fehler aufgetreten, ist im Namen ein nicht zugelassenes Zeichen?" & Chr(13) & "ansonsten unbek. Fehler"
Application.EnableEvents = True
Worksheets(Blatt).Activate
End Sub

Schoene Gruesse
Stefan
Anzeige
AW: Tabellenblatt anhand einer Namensliste
24.09.2006 14:44:07
Michael
Hallo Stefan,
vielen Dank für die Lösung. Klappt wunderbar.
Gruß
Micha

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige