Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: neues blatt mit namen aus spalte erstellen

neues blatt mit namen aus spalte erstellen
22.09.2004 11:45:58
Stephan
Hallo zusammen,
ich habe folgendes Problem:
Ich habe ein Tabellenblatt mit einer Spalte, in der Namen stehen (sortiert). Siehe Mappe:
https://www.herber.de/bbs/user/11179.xls
Jetzt möchte ich mit Hilfe von VBA für jeden Namen ein neues Tabellenblatt erstellen und die jeweiligen Daten aus der Zeile in das Blatt übernehmen. Das Blatt soll dann den jeweiligen Namen haben.
Wie könnte ich das realisieren? Irgendwie komme ich da auf keinen grünen Zweig.
Vielen Dank im vorraus,
Gruss,
Stephan
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: neues blatt mit namen aus spalte erstellen
22.09.2004 12:21:07
chris
Hallo Stephan habe schnell mal was geschrieben für dich !
Hoffe es hilft dir.Bei mir funktioniert es!
Hier der Code

Sub neu()
Dim cb()
i = 0
z = 0
For x = 1 To ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
temp = Cells(x, 1)
b = True
If temp <> "" Then
ReDim Preserve cb(z)
z = z + 1
Else
End If
For y = x - 1 To 0 Step -1
If cb(y) = temp Then
b = False
Exit For
End If
Next
If b Then
cb(i) = temp
i = i + 1
End If
Next
For x = 0 To UBound(cb)
If cb(x) <> "" Then
Worksheets.Add
ActiveSheet.Name = cb(x)
Cells(1, 1) = "Betreuer"
Cells(1, 2) = "Kunde"
Cells(1, 3) = "Artikel"
End If
Next
For Each mysheet In ActiveWorkbook.Worksheets
a = 2
such = mysheet.Name
Set Zelle = Worksheets("Tabelle1").Range("A:A").Find(what:=such, Lookat:=xlWhole)
If Not Zelle Is Nothing Then
ersteAdresse = Zelle.Address
betreuer = Worksheets("Tabelle1").Cells(Zelle.Row, 1)
wert = Worksheets("Tabelle1").Cells(Zelle.Row, 2)
artikel = Worksheets("Tabelle1").Cells(Zelle.Row, 3)
Worksheets(such).Cells(a, 1) = betreuer
Worksheets(such).Cells(a, 2) = wert
Worksheets(such).Cells(a, 3) = artikel
a = a + 1
Do
'  Zelle.Interior.Pattern = xlPatternGray50    <-- würde die find zelle grau Färben hintergrund !
Set Zelle = Worksheets("Tabelle1").Range("A:A").FindNext(Zelle)
betreuer = Worksheets("Tabelle1").Cells(Zelle.Row, 1)
wert = Worksheets("Tabelle1").Cells(Zelle.Row, 2)
artikel = Worksheets("Tabelle1").Cells(Zelle.Row, 3)
Worksheets(such).Cells(a, 1) = betreuer
Worksheets(such).Cells(a, 2) = wert
Worksheets(such).Cells(a, 3) = artikel
a = a + 1
Loop While Not Zelle Is Nothing And Zelle.Address <> ersteAdresse
End If
Next
End Sub

Anzeige
AW: neues blatt mit namen aus spalte erstellen
22.09.2004 12:24:57
chris
Hier noch eine kleine Programmänderung !

Sub neu()
Dim cb()
i = 0
z = 0
For X = 1 To ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
temp = Cells(X, 1)
b = True
If temp <> "" Then
ReDim Preserve cb(z)
z = z + 1
Else
End If
For y = X - 1 To 0 Step -1
If cb(y) = temp Then
b = False
Exit For
End If
Next
If b Then
cb(i) = temp
i = i + 1
End If
Next
For X = 0 To UBound(cb)
If cb(X) <> "" Then
If cb(X) = "Betreuer" Then GoTo weiter
Worksheets.Add
ActiveSheet.Name = cb(X)
Cells(1, 1) = "Betreuer"
Cells(1, 2) = "Kunde"
Cells(1, 3) = "Artikel"
End If
weiter:
Next
For Each mysheet In ActiveWorkbook.Worksheets
a = 2
such = mysheet.Name
Set Zelle = Worksheets("Tabelle1").Range("A:A").Find(what:=such, Lookat:=xlWhole)
If Not Zelle Is Nothing Then
ersteAdresse = Zelle.Address
betreuer = Worksheets("Tabelle1").Cells(Zelle.Row, 1)
wert = Worksheets("Tabelle1").Cells(Zelle.Row, 2)
artikel = Worksheets("Tabelle1").Cells(Zelle.Row, 3)
Worksheets(such).Cells(a, 1) = betreuer
Worksheets(such).Cells(a, 2) = wert
Worksheets(such).Cells(a, 3) = artikel
a = a + 1
Do
'  Zelle.Interior.Pattern = xlPatternGray50    <-- würde die find zelle grau Färben hintergrund !
Set Zelle = Worksheets("Tabelle1").Range("A:A").FindNext(Zelle)
betreuer = Worksheets("Tabelle1").Cells(Zelle.Row, 1)
wert = Worksheets("Tabelle1").Cells(Zelle.Row, 2)
artikel = Worksheets("Tabelle1").Cells(Zelle.Row, 3)
Worksheets(such).Cells(a, 1) = betreuer
Worksheets(such).Cells(a, 2) = wert
Worksheets(such).Cells(a, 3) = artikel
a = a + 1
Loop While Not Zelle Is Nothing And Zelle.Address <> ersteAdresse
End If
Next
End Sub

Anzeige
AW: neues blatt mit namen aus spalte erstellen
22.09.2004 13:01:12
Stephan
klasser, das funktioniert ja schon mal super, danke!
jetzt habe ich aber doch wieder probleme, da ich noch ein paar zeilen und spalten eingefügt habe. d.h., die titelzeile mit "betreuer", "kunde", usw.. ist jetzt in Zeile 6 und die relevante Spalte "Betreuer" ist nicht mehr die erste sondern die 6 Spalte. Ich konnte deinen Quelltext nicht so umbauen, dass es trotzdem noch funktioniert. Wäre toll, wenn du mir nochmal behilflich sein könntest.
Danke und Gruss,
Stephan
Anzeige
AW: neues blatt mit namen aus spalte erstellen
23.09.2004 00:39:40
chris
Sollte jetzt auch wieder funktionieren denke ich !
Kurze Rückmeldung wäre wie immer ok !
Bye

Sub neu()
Dim cb()
i = 0
z = 0
For X = 1 To ActiveSheet.Cells(Rows.Count, 6).End(xlUp).Row
temp = Cells(X, 6)
b = True
If temp <> "" Then
ReDim Preserve cb(z)
z = z + 1
Else
End If
For y = X - 1 To 0 Step -1
If cb(y) = temp Then
b = False
Exit For
End If
Next
If b Then
cb(i) = temp
i = i + 1
End If
Next
For X = 0 To UBound(cb)
If cb(X) <> "" Then
If cb(X) = "Betreuer" Then GoTo weiter
Worksheets.Add
ActiveSheet.Name = cb(X)
Cells(1, 6) = "Betreuer"
Cells(1, 7) = "Kunde"
Cells(1, 8) = "Artikel"
End If
weiter:
Next
For Each mysheet In ActiveWorkbook.Worksheets
a = 2
such = mysheet.Name
Set Zelle = Worksheets("Tabelle1").Range("F:F").Find(what:=such, Lookat:=xlWhole)
If Not Zelle Is Nothing Then
ersteAdresse = Zelle.Address
betreuer = Worksheets("Tabelle1").Cells(Zelle.Row, 6)
wert = Worksheets("Tabelle1").Cells(Zelle.Row, 7)
artikel = Worksheets("Tabelle1").Cells(Zelle.Row, 8)
Worksheets(such).Cells(a, 6) = betreuer
Worksheets(such).Cells(a, 7) = wert
Worksheets(such).Cells(a, 8) = artikel
a = a + 1
Do
Set Zelle = Worksheets("Tabelle1").Range("F:F").FindNext(Zelle)
betreuer = Worksheets("Tabelle1").Cells(Zelle.Row, 6)
wert = Worksheets("Tabelle1").Cells(Zelle.Row, 7)
artikel = Worksheets("Tabelle1").Cells(Zelle.Row, 8)
Worksheets(such).Cells(a, 6) = betreuer
Worksheets(such).Cells(a, 7) = wert
Worksheets(such).Cells(a, 8) = artikel
a = a + 1
Loop While Not Zelle Is Nothing And Zelle.Address <> ersteAdresse
End If
Next
End Sub

Anzeige
AW: neues blatt mit namen aus spalte erstellen
23.09.2004 10:12:29
Stephan
hallo chris,
leider funktioniert es noch nicht, ich bekomme einen Laufzeitfehler "9", und zwar hier: "If cb(y) = temp Then"
Wäre super, wenn du es dir nochmal anschauen könntest.
Danke und Gruss,
Stephan
AW: neues blatt mit namen aus spalte erstellen
23.09.2004 12:09:16
chris
Hallo Stephan,
bei mir funktioniert es. !
Ich schaue es mir aber gerne noch einmal an wenn du mir die aktuelle Mappe hochlädst bei der es nicht funktioniert !
Anzeige
AW: neues blatt mit namen aus spalte erstellen
23.09.2004 12:29:05
Stephan
ok, ich habe die betreffende Datei nochmal hochgeladen, hier:
https://www.herber.de/bbs/user/11214.xls
danke fürs anschauen.
Gruss,
Stephan
AW: neues blatt mit namen aus spalte erstellen
23.09.2004 20:43:51
chris
Bitte, du hast folgende erklärung vergessen, du hast zwar geschrieben :->
"""jetzt habe ich aber doch wieder probleme, da ich noch ein paar zeilen und spalten eingefügt habe. d.h., die titelzeile mit "betreuer", "kunde", usw.. ist jetzt in Zeile 6 und die relevante Spalte "Betreuer" ist nicht mehr die erste sondern die 6 Spalte. Ich konnte deinen Quelltext nicht so"""
das der betreuer in Spalte 6 steht aber nichts das du das ganze auch 3 zeilen nach unten gesetzt hast :)
Jetzt gehts aber wieder wenn du den aktuellen code von mir einfügst !

Sub neu()
Dim cb()
i = 0
z = 0
For X = 6 To ActiveSheet.Cells(Rows.Count, 6).End(xlUp).Row
temp = Cells(X, 6)
b = True
If temp <> "" Then
ReDim Preserve cb(z + 5)
z = z + 1
Else
End If
For y = X - 1 To 0 Step -1
If cb(y) = temp Then
b = False
Exit For
End If
Next
If b Then
cb(i) = temp
i = i + 1
End If
Next
For X = 0 To UBound(cb)
If cb(X) <> "" Then
If cb(X) = "Betreuer" Then GoTo weiter
Worksheets.Add
ActiveSheet.Name = cb(X)
Cells(1, 6) = "Betreuer"
Cells(1, 7) = "Kunde"
Cells(1, 8) = "Artikel"
End If
weiter:
Next
For Each mysheet In ActiveWorkbook.Worksheets
a = 2
such = mysheet.Name
Set Zelle = Worksheets("Tabelle1").Range("F:F").Find(what:=such, Lookat:=xlWhole)
If Not Zelle Is Nothing Then
ersteAdresse = Zelle.Address
betreuer = Worksheets("Tabelle1").Cells(Zelle.Row, 6)
wert = Worksheets("Tabelle1").Cells(Zelle.Row, 7)
artikel = Worksheets("Tabelle1").Cells(Zelle.Row, 8)
Worksheets(such).Cells(a, 6) = betreuer
Worksheets(such).Cells(a, 7) = wert
Worksheets(such).Cells(a, 8) = artikel
a = a + 1
Do
Set Zelle = Worksheets("Tabelle1").Range("F:F").FindNext(Zelle)
betreuer = Worksheets("Tabelle1").Cells(Zelle.Row, 6)
wert = Worksheets("Tabelle1").Cells(Zelle.Row, 7)
artikel = Worksheets("Tabelle1").Cells(Zelle.Row, 8)
Worksheets(such).Cells(a, 6) = betreuer
Worksheets(such).Cells(a, 7) = wert
Worksheets(such).Cells(a, 8) = artikel
a = a + 1
Loop While Not Zelle Is Nothing And Zelle.Address <> ersteAdresse
End If
Next
End Sub

P.S ist zwar nicht mehr perfekt aufgebaut aber habe nur für deine Wünsche so abgeändert das es funktioniert und ich nicht wieder neu schreiben muss !
Anzeige
AW: neues blatt mit namen aus spalte erstellen
24.09.2004 09:12:35
Stephan
Sorry, ich habs ein bisschen schlecht beschrieben, aber wenn man die Datei direkt vor sich hat ist es glaub ich immer besser.
Auf jeden Fall funktioniert es jetzt einwandfrei und genau so wie ich es wollte.
Vielen Dank für die ausführliche und freundliche Hilfe, war wirklich super nett von dir.
Gruss,
Stephan
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Neues Blatt mit Namen aus Spalte erstellen


Schritt-für-Schritt-Anleitung

Um mit Excel VBA ein neues Tabellenblatt mit Namen aus einer bestimmten Spalte zu erstellen, kannst du die folgenden Schritte befolgen:

  1. Öffne Excel und lade die Arbeitsmappe mit den Namen in einer Spalte.

  2. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf VBAProject (DeineDatei), wähle EinfügenModul.
  4. Kopiere den folgenden Code in das Modul:

    Sub neuesTabellenblattErstellen()
       Dim cb()
       Dim i As Integer, z As Integer
       Dim temp As String
    
       i = 0
       z = 0
    
       For x = 6 To ActiveSheet.Cells(Rows.Count, 6).End(xlUp).Row
           temp = Cells(x, 6)
           If temp <> "" Then
               ReDim Preserve cb(z)
               cb(z) = temp
               z = z + 1
           End If
       Next x
    
       For x = 0 To UBound(cb)
           If cb(x) <> "Betreuer" Then
               Worksheets.Add.Name = cb(x)
               Cells(1, 1).Value = "Betreuer"
               Cells(1, 2).Value = "Kunde"
               Cells(1, 3).Value = "Artikel"
           End If
       Next x
    End Sub
  5. Führe das Makro aus:

    • Drücke F5 oder gehe zu RunRun Sub/UserForm.
  6. Überprüfe die neuen Blätter:

    • Du solltest jetzt neue Blätter mit den Namen aus der Spalte 6 erstellt haben.

Häufige Fehler und Lösungen

  • Laufzeitfehler "9": Dieser Fehler tritt auf, wenn du versuchst, auf einen nicht existierenden Index im Array cb zuzugreifen. Stelle sicher, dass die Schleifenbedingungen korrekt sind und dass du die Indizes nicht überschreitest.

  • Blätter mit Namen existieren bereits: Wenn ein Blatt mit dem gleichen Namen bereits existiert, wirst du eine Fehlermeldung erhalten. Du kannst dies umgehen, indem du den Code anpasst, um bestehende Blätter zu überspringen.


Alternative Methoden

Eine alternative Methode könnte sein, eine Excel-Funktion wie INDIREKT zu verwenden, um auf die Daten in den neuen Blättern zuzugreifen, anstatt sie zu duplizieren. Dies ist besonders nützlich, wenn du eine große Anzahl von Blättern verwalten musst.


Praktische Beispiele

Angenommen, du hast folgende Namen in Spalte 6 deines Blattes:

F
Max
Anna
John

Wenn du das VBA-Skript ausführst, werden drei neue Blätter erstellt, die jeweils "Max", "Anna" und "John" heißen. In jedem dieser Blätter werden die Spaltenüberschriften "Betreuer", "Kunde" und "Artikel" hinzugefügt.


Tipps für Profis

  • Fehlerbehandlung einfügen: Füge On Error Resume Next am Anfang deines Makros hinzu, um Laufzeitfehler zu ignorieren, und implementiere anschließend eine geeignete Fehlerbehandlung.

  • Daten validieren: Stelle sicher, dass die Daten in der Spalte, aus der die Namen entnommen werden, keine Leerzeichen oder ungültigen Zeichen enthalten, um Probleme beim Erstellen neuer Blätter zu vermeiden.


FAQ: Häufige Fragen

1. Wie kann ich die Spalte anpassen, aus der die Namen abgerufen werden?
Ändere den Wert in Cells(x, 6) im Code auf die gewünschte Spalte.

2. Was passiert, wenn ein Blatt mit dem gleichen Namen bereits existiert?
Der Code wird einen Fehler auslösen. Du kannst den Code anpassen, um existierende Blätter zu ignorieren.

3. Kann ich die Anzahl der zu erstellenden Blätter begrenzen?
Ja, du kannst eine Bedingung in die Schleife einfügen, um nur eine bestimmte Anzahl von Blättern zu erstellen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige