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

Forumthread: Tabellenblätter automatisch erstellen und ausfülle

Tabellenblätter automatisch erstellen und ausfülle
24.01.2008 14:27:42
Daniel
Hallo Forum,
ich habe hier eine Mappe in der ich eine Vorlage für den Aussendienst hab.
Leider brauch ich pro Kunden ein Tabellenblatt und daher würde ich diese gerne automatisch erstellen.
Es gibt noch ein weiteres Problem, und zwar soll in den neu erstellten Blättern auch gleich in der Zelle A2 die Kundennummer eingetragen werden.
Weiteres wäre es angebracht wenn das Tebellenblatt gleich den Namen bekommt, der im Blatt mit den Nummern hinter der Nummer steht.
Quasi, Formel für dumme, bitte nicht lachen :)
erstelle neues Blatt, name des blattes steht in kundennummern!b1, wenn du das neue Blatt erstellt hast, dann füge bei diesem den Wert der in kundennummern!a1 steht bei A2, ein.
und das ganze bis er alle zeilen in "kundennummern" durch hat...
zur Info
VBA makros kann ich einsetzen, auch ein bischen abändern ist kein Problem, damit ihr wisst wie ihr bei mir dran seid :)
vielen Dank
Daniel

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblätter automatisch erstellen und ausf
24.01.2008 15:39:24
Erich
Hallo Daniel,
probier mal

Option Explicit
Sub Kundenblaetter_anlegen()
Dim rngMuster As Range, zz As Long, ss As Long
Set rngMuster = Sheets("Tabelle1").Columns("A:J")
With Sheets("kundennummern")
For zz = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
For ss = 1 To Sheets.Count
If Sheets(ss).Name = CStr(.Cells(zz, 1)) Then
MsgBox "Blatt '" & .Cells(zz, 1) & "' bereits vorhanden.", vbInformation
Exit For
End If
Next ss
If ss > Sheets.Count Then
Worksheets.Add after:=Sheets(Sheets.Count)
rngMuster.Copy Cells(1, 1)
Cells(2, 1) = .Cells(zz, 1)
ActiveSheet.Name = CStr(Cells(2, 1))
End If
Next zz
End With
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Tabellenblätter automatisch erstellen und ausf
24.01.2008 16:18:00
Erich
Hallo Daniel,
hier noch eine Variante mit Beschleuniger:

Option Explicit
Sub Kundenblaetter_anlegen()
Dim rngMuster As Range, calcOld As XlCalculation, zz As Long, ss As Long
Dim Calc As XlCalculation
Calc = Application.Calculation: Beschleuniger xlCalculationManual
Set rngMuster = Sheets("Tabelle1").Columns("A:J")
With Sheets("kundennummern")
For zz = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
For ss = 1 To Sheets.Count
If Sheets(ss).Name = CStr(.Cells(zz, 1)) Then
MsgBox "Blatt '" & .Cells(zz, 1) & "' bereits vorhanden.", vbInformation
Exit For
End If
Next ss
If ss > Sheets.Count Then
Worksheets.Add after:=Sheets(Sheets.Count)
rngMuster.Copy Cells(1, 1)
Cells(2, 1) = .Cells(zz, 1)
ActiveSheet.Name = CStr(Cells(2, 1))
End If
Next zz
End With
Beschleuniger Calc
End Sub
'   Beschleuniger _______ Parameter: Calc-Status ______ gi/12.03.2006
'        Aufruf:
'           Dim Calc As XlCalculation
'           Calc = Application.Calculation: Beschleuniger xlCalculationManual
'           ....Code....
'           Beschleuniger Calc
Sub Beschleuniger(Optional StatCal As Long = xlCalculationAutomatic)
With Application
.Calculation = StatCal
.ScreenUpdating = (StatCal  xlCalculationManual)
.EnableEvents = (StatCal  xlCalculationManual)
End With
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Tabellenblätter automatisch erstellen und ausf
25.01.2008 13:56:00
Daniel
Hallo Erich,
ich habe deine Variante mit Beschleuniger getestet, er hat alle Blätter einwandfrei erstellt.
NUR wenn ich jetzt in den Blättern Änderungen vornehme und mit der ENTER bestätige, dann bekomme ich die Meldung "Projekt oder Bibliothek nicht gefunden".
Was kann das sein?
vielen Dank
mfg

Anzeige
AW: Tabellenblätter automatisch erstellen und ausf
25.01.2008 14:10:00
Erich
Hallo Daniel,
laufen da irgendwelche Ereignismakros (evtl. im Modul "DieseArbeitsmappe)?
Eine einfache Dateneingabe dürfte sonst nicht eine derartige Reaktion hervorrufen.
Oder verwendest du bei der Eingabe eine benutzerdefinierte VBA-Funktion?
Wenn du die Meldung "Projekt oder Bibliothek nicht gefunden" siehst,
wurde dann der VBA-Editor geöffnet?
Kannst du bei der Fehlermeldung auf "Debuggen" klicken?
Wird ein Modul angezeigt? Ist eine Zeile markiert? Das wäre dann die Zeile mit dem Fehler.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Tabellenblätter automatisch erstellen und ausf
25.01.2008 14:13:00
Daniel
Hallo Erich,
vielen Dank erstmal für deine Antwort,
hab die Datei jetzt auf einen Anderen Rechner kopiert...da wo sie eigentlich hin soll und da kommt der fehler nicht.
Daher schieb ichs jetzt mal auf meinen Rechner und da ich schon fast fertig bin damit will ich mich nicht mehr aufhalten, warscheinlich ein Problem durch meine Excel XP, update 2003, beta 2007, wieder zurück auf 2003 installation.
Vielen Dank aber trotzdem.
mfG

Anzeige
AW: Tabellenblätter automatisch erstellen und ausfülle
24.01.2008 15:49:00
michael
Hi Daniel
Anbei ein Muster-das Makro stammt aus dem Forum (gez.Sepp)
einfach nur Makro starten.
aha garantiert !!
lg michael

Sub DreiEinfügen()
Dim Zelle As Range
On Error GoTo ErrExit
GetMoreSpeed
For Each Zelle In ThisWorkbook.Sheets("Liste").Range("A1:A" & ThisWorkbook.Sheets("Liste"). _
Cells(Rows.Count, 1).End(xlUp).Row)
ThisWorkbook.Sheets("Muster").Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) _
With ActiveSheet
.Name = Zelle.Value
.Cells(2, 1) = Zelle.Value
.Cells(1, 2).Value = Zelle.Offset(0, 1).Value
End With
Next
ErrExit:
GetMoreSpeed 0
End Sub



Sub GetMoreSpeed(Optional ByVal Modus As Integer = 1)
Static lngCalc As Long
With Application
If Modus = 1 Then
lngCalc = .Calculation
.ScreenUpdating = False
.EnableEvents = False
.DisplayAlerts = False
.Calculation = -4135
.Cursor = xlWait
Else
.ScreenUpdating = True
.EnableEvents = True
.DisplayAlerts = True
.Calculation = IIf(lngCalc  0, lngCalc, -4105)
.Cursor = xlDefault
End If
End With
End Sub


https://www.herber.de/bbs/user/49338.xls
Deine Datei als Muster .
'Dieses Makro ist aus dem Forum von---- Sepp----

Anzeige
AW: Tabellenblätter automatisch erstellen und ausf
24.01.2008 16:17:37
Daniel
Danke an euch beide, habs hinbekommen.
Das IST einfach die erste Anlaufstelle für Excel Probleme, weiter so !!!
mfg
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Tabellenblätter automatisch erstellen und ausfüllen


Schritt-für-Schritt-Anleitung

Um in Excel mehrere Tabellenblätter automatisch zu erstellen und diese aus einer Liste zu befüllen, kannst Du ein VBA-Makro verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und erstelle eine neue Arbeitsmappe.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Füge ein neues Modul hinzu:

    • Klicke im Menü auf Einfügen > Modul.
  4. Kopiere den folgenden VBA-Code in das Modul:

    Option Explicit
    Sub Kundenblaetter_anlegen()
       Dim rngMuster As Range, zz As Long, ss As Long
       Set rngMuster = Sheets("Tabelle1").Columns("A:J")
       With Sheets("kundennummern")
           For zz = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
               For ss = 1 To Sheets.Count
                   If Sheets(ss).Name = CStr(.Cells(zz, 1)) Then
                       MsgBox "Blatt '" & .Cells(zz, 1) & "' bereits vorhanden.", vbInformation
                       Exit For
                   End If
               Next ss
               If ss > Sheets.Count Then
                   Worksheets.Add after:=Sheets(Sheets.Count)
                   rngMuster.Copy Cells(1, 1)
                   Cells(2, 1) = .Cells(zz, 1)
                   ActiveSheet.Name = CStr(Cells(2, 1))
               End If
           Next zz
       End With
    End Sub
  5. Schließe den VBA-Editor und gehe zurück zu Excel.

  6. Drücke ALT + F8, um das Makro auszuführen. Wähle Kundenblaetter_anlegen aus und klicke auf Ausführen.

Damit wird für jeden Eintrag in der Liste kundennummern ein neues Tabellenblatt erstellt und in Zelle A2 die entsprechende Kundennummer eingetragen.


Häufige Fehler und Lösungen

  • Fehler: "Projekt oder Bibliothek nicht gefunden"

    • Überprüfe, ob Du benutzerdefinierte VBA-Funktionen verwendest, die nicht verfügbar sind. Manchmal kann auch ein Fehler in den Ereignismakros dazu führen. Stelle sicher, dass keine Konflikte mit anderen Makros bestehen.
  • Fehler: Blatt bereits vorhanden

    • Der Fehler tritt auf, wenn Du versuchst, ein Tabellenblatt mit einem Namen zu erstellen, der bereits existiert. Der Code überprüft dies und zeigt eine entsprechende Meldung.

Alternative Methoden

Wenn Du kein VBA verwenden möchtest, kannst Du auch mit Excel-Formeln arbeiten, um Daten in ein bestehendes Tabellenblatt zu importieren. Eine Möglichkeit wäre, die Funktion INDIREKT oder SVERWEIS zu nutzen, um Daten aus einer Liste zu ziehen. Allerdings ist dies nicht so flexibel wie die VBA-Lösung.


Praktische Beispiele

  1. Erstellen von Datenblättern automatisch aus einer Liste:

    • Nutze den oben genannten VBA-Code, um Datenblätter für jeden Kunden in einer Liste zu erstellen. Du kannst die Liste in der Tabelle kundennummern anpassen.
  2. Excel neues Blatt aus Vorlage erstellen:

    • Wenn Du eine Vorlage für die neuen Blätter hast, passe den Code an, um die Vorlage zu kopieren, anstatt die Spalten A:J zu verwenden.

Tipps für Profis

  • Blätter automatisch umbenennen:
    • Stelle sicher, dass die Namen in der Quelle (z.B. kundennummern) eindeutig sind, um Konflikte zu vermeiden.
  • Leistungsoptimierung:
    • Verwende den GetMoreSpeed-Ansatz, um die Berechnungen während der Makroausführung zu deaktivieren und die Geschwindigkeit zu erhöhen.
Sub GetMoreSpeed(Optional ByVal Modus As Integer = 1)
    Static lngCalc As Long
    With Application
        If Modus = 1 Then
            lngCalc = .Calculation
            .ScreenUpdating = False
            .EnableEvents = False
            .DisplayAlerts = False
            .Calculation = -4135
            .Cursor = xlWait
        Else
            .ScreenUpdating = True
            .EnableEvents = True
            .DisplayAlerts = True
            .Calculation = IIf(lngCalc > 0, lngCalc, -4105)
            .Cursor = xlDefault
        End If
    End With
End Sub

FAQ: Häufige Fragen

1. Wie erstelle ich ein Excel neues Blatt automatisch? Um ein Excel neues Blatt automatisch zu erstellen, kannst Du ein VBA-Makro verwenden, das die gewünschten Namen und Daten in die neuen Blätter überträgt.

2. Kann ich mehrere Tabellenblätter gleichzeitig erstellen? Ja, mit dem richtigen VBA-Code kannst Du mehrere Tabellenblätter gleichzeitig erstellen, indem Du die Namen und Inhalte aus einer Liste überträgst.

3. Wie benenne ich die Excel Register automatisch? Im VBA-Code kannst Du den Namen des Blattes mit ActiveSheet.Name = CStr(Cells(2, 1)) anpassen, um es basierend auf den Werten in Deiner Liste zu benennen.

4. Gibt es eine Möglichkeit, Tabellenblätter aus einer Liste zu erstellen? Ja, der bereitgestellte VBA-Code ermöglicht es Dir, Tabellenblätter aus einer Liste zu erstellen und diese mit den entsprechenden Daten zu füllen.

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