Microsoft Excel

Herbers Excel/VBA-Archiv

Bei neuem Datensatz neues Blatt erzeugen

Betrifft: Bei neuem Datensatz neues Blatt erzeugen
von: Carsten
Geschrieben am: 22.04.2003 - 10:42:52

Hallo zusammen,

ich habe eine Lieferantendatei. Das erste Tabellenblatt enthält eine Übersicht in der alle Lieferanten enthalten sind. Zusätzlich gibt es für jeden Lieferanten ein eigenes Blatt in dem die Daten (Firma, Anschrift, Anspechpartner, Telefon, Fax, email etc...)aus der Übersicht per sverweis angezeigt werden.

Alle Blätter sind gleich aufgebaut.

Gibt es eine Möglichkeit, sobald in der Übersicht ein neuer Datensatz erzeugt wird, automatisch ein neues Tabellenblatt inkl. aller Verweise zu erzeugen?

Schon mal vielen Dank für Eure Mühe im voraus.

Gruß
Carsten

  

Re: Bei neuem Datensatz neues Blatt erzeugen
von: Panicman
Geschrieben am: 22.04.2003 - 11:55:01

Hallo Carsten,


'Dieses Makro gehört in Tabelle1 !!!
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Target.Column <> 1 Then Exit Sub
    Call TabAnlegen
End Sub


'dieses Makro gehört in Modul !!!
Sub TabAnlegen()

Dim I As Long
Dim II As Long
Dim x As Long
Dim Blattname As String
Dim BlattExistiert As Boolean

Range("A65536").Select
'ActiveCell.SpecialCells(xlLastCell).Select
x = Selection.End(xlUp).Row
Cells(x, 1).Select
For I = 1 To x
    'Check ob Blatt bereits existiert
    For II = 1 To Sheets.Count
        If Sheets(II).Name = Cells(I, 1) Then
        BlattExistiert = True
        Exit For
        End If
    Next II
    
    If BlattExistiert = False Then
        'Check ob Zell nicht leer ist
        If IsEmpty(Cells(I, 1).Value) = False Then
            Blattname = Cells(I, 1).Value
        Worksheets(Worksheets.Count).Copy After:=Worksheets(Worksheets.Count)
        ActiveSheet.Name = Blattname
        'hier wird der Tabellenname für den Sverweis in A1 eingetragen
        Cells(1, 1).Value = Blattname
        Worksheets(1).Select
        End If
    End If
    BlattExistiert = False
Next I
Worksheets(1).Select
End Sub

Bitte die Bereiche und Zellen für dein Beispiel anpasen

Gruß
Holger

  

Re: Bei neuem Datensatz neues Blatt erzeugen
von: Carsten
Geschrieben am: 22.04.2003 - 11:56:13

Ich werd's gleich mal testen. Dank schon mal im Voraus.

Carsten

  

Re: Bei neuem Datensatz neues Blatt erzeugen
von: Carsten
Geschrieben am: 22.04.2003 - 14:15:52

Hallo Holger,

ich bin in VBA nicht sehr fit, das Anpassen der Bereiche werd ich aber noch hinkriegen. Aber ich habe trotzdem noch ein Problem.
Ich habe die Makro erstmal Probeweise unverändert eingefügt und erhalte nun die Fehlermeldung "Sub oder Function nicht definiert"

Woran kann das liegen? Hab ich den zweiten Teil an die falsche Stelle geschrieben?

Gruß
Carsten

  

Re: Bei neuem Datensatz neues Blatt erzeugen
von: Panicman
Geschrieben am: 22.04.2003 - 15:52:05

Hallo Carsten,

da das Makro ja anspringt, scheint der 1 Teil richtig kopiert zu sein

Nochmal ausführlich:
Alt-F11 öffnet den VBA-Editor, auf der linken Seite sollte der Name deiner Datei erscheinen, Doppelklick auf den Namen.
Nun müßtest du einen "Baum" sehen mit DieseArbeitsmappe, Tabelle1 (Tabelle1), Tabelle2 (Tabelle2), usw.

den 1. Teil kopierst du in Tabelle1 (doppelklick auf Tabelle1 öffnet rechts ein weißes Blatt). Ich gehe davon aus, das in Tabelle1 Spalte1 die Namen geschrieben werden.

den 2. Teil kopierst du in MODUL1, falls das nicht vorhanden ist, mit der rechten Maustaste auf Tabelle1, im Menü einfügen/Modul auswählen. Dann den 2. Teil in Modul einfügen.

Fertig.

Nun wird immer, wenn in Tabelle1 Spalte1 etwas gändert wird das letzte blatt in deiner Mappe kopiert und am Ende eingefügt.
Es sollte in der Mappe bevor du das Makro ausführst mindestens 2 Blätter sein.

Wenn das nicht ist, kann es zu Fehlern kommen.

Konnte allerdings deine Fehlermeldung nicht reproduzieren, arbeite aber mit XL97.

Gruß
Holger

  

Re: Bei neuem Datensatz neues Blatt erzeugen
von: Carsten
Geschrieben am: 23.04.2003 - 08:28:03

Super, so eine Erklärung für doofe wirkt doch manchmal Wunder.

Aber leider gibt es doch noch zwei Probleme:

1. Bei der ersten Eingabe wird ein Blatt mit der Überschrift aus Spalte 1 der Ursprungstabelle erzeugt.

2. Bei jeder Änderung wird ein Blatt mit dem Namen des ersten Datensatzes erzeugt. So kommt es dann zu einer Fehlermeldung da ja zwei Blätter nicht den selben Namen haben können.

Was kann man denn da noch machen?

Gruß
Carsten

  

Re: Bei neuem Datensatz neues Blatt erzeugen
von: Panicman
Geschrieben am: 23.04.2003 - 15:10:36

Hallo Carsten,

zu 1.:
Damit nicht immer ein Blatt mit der Überschrift erzeugt wird, ändere bitte den Code in MODUL1 von:
"For I = 1 To x" auf "For I = 2 To x" damit wird immer erst ab der 2. Zeile geschaut, ob ein neuer Name dazugekommen ist.

Zu 2.:
Verstehe ich nicht, denn ich habe ja ein Schleife eingebaut, die prüft, ob der Name schon vorhanden ist. Wenn er schon vorhanden ist passiert nichts.
Beschreibe mal das Problem genauer

Gruß
Holger



  

Re: Bei neuem Datensatz neues Blatt erzeugen
von: Carsten
Geschrieben am: 23.04.2003 - 15:25:48

Hallo,

das mit der Überschrift klappt schon mal.

Wenn ich den ersten Datensatz eingebe wird ein neues Blatt erstellt und umbenannt.
Wenn nun ein zweiter Satz eingegeben wird, erstellt er zunächst eine Kopie von Blatt 1, beim Umbenennen kommt jedoch der Laufzeitfehler 1004.

Ich habe jetzt schon verschiedenes probiert, leider bisher erfolglos.

Hast Du noch 'ne Idee?

Carsten


  

Re: Bei neuem Datensatz neues Blatt erzeugen
von: Panicman
Geschrieben am: 23.04.2003 - 16:11:16

Hallo Carsten,

Ich habe keine Ahnung, warum bei dir der Laufzeitfehler kommt.
Bei mir funzt das einwandfrei.

Kleiner Tipp noch. Das 1. Blatt hat deine Liste. Du solltest das 2. Blatt nicht mit dem Programm einfügen lassen, da dann das Makro in "TABELLE1" mit kopiert wird. Füge liebe ein Blatt so ein, oder lösche das Makro aus dem 2. Blatt. Es würde sonst immer mit kopiert.

Tut mir leid, das ich dir nicht jetzt helfen kann, aber poste doch nochmal deinen abgeänderten Code.

Gruß
Holger


  

Re: Bei neuem Datensatz neues Blatt erzeugen
von: Carsten
Geschrieben am: 24.04.2003 - 09:34:59

Moin Holger,

ich habe das ganze schon so gemacht, d.h. zuerst manuell ein weiteres Blatt eingefügt. Das Blatt ist ja eh anders aufgebaut als die Liste in Tabelle 1.

Meinen geänderten Code habe ich nur getestet, dann aber wieder verworfen da es nicht geklappt hat.
Wie gesagt, der Fehler passiert beim Umbenennen des Blattes und zwar weil er den neuen Namen aus Zelle A1 zieht, diese Zelle aber nach dem kopieren nicht geändert wird.
Ich wollte ihn nun dazu bringen, vor dem Umbenennen den Zellinhalt mit der neuesten Positionsnummer aus Spalte 1/Tabelle 1 zu überschreiben.
Hat leider noch nicht geklappt da er an der Stelle an der ich umbenennen wollte in den Code der Tabelle1 gesprungen ist. Warum??? Ich habe nicht die geringste Ahnung.

Irgendwas habe ich jedenfalls falsch gemacht.

Hast Du noch die eine oder andere Idee?

Danke Dir zum x-ten Mal für Deine Mühe.

Gruß
Carsten


  

Re: Bei neuem Datensatz neues Blatt erzeugen
von: Panicman
Geschrieben am: 24.04.2003 - 09:46:04

Hallo Carsten,

ich kann dir so leider nicht helfen. Schicke mit mal deine Tabelle an panicman_de@gmx.de. Dann schau ich mir die mal an.

Gruß
Holger

  

Re: Bei neuem Datensatz neues Blatt erzeugen
von: Panicman
Geschrieben am: 24.04.2003 - 11:10:20

Hallo Carsten,

habe den Fehler gefunden. Das Problem war, das in deiner 1 Spalte Zahlen stehen (ich bin von Text ausgegangen). Wir haben immer den Blattnamen (String=Text) mit der Zelle(I,1) (in deinem Fall Zahl) verglichen. Excel konnte nicht merken, ob die beiden gleich sind. änder mal die Zeile:

If Sheets(II).Name = Cells(I, 1) Then
in
If Sheets(II).Name = Format(Cells(I, 1), "@") Then

Dann wird Text mit Text verglichen und alles klappt.

Gruß
Holger

P.S. wenn du lieber eine andere Spalte der Tabelle1 als Blattnamen willst, muß du dich noch mal melden.

  

Re: Bei neuem Datensatz neues Blatt erzeugen
von: Carsten
Geschrieben am: 24.04.2003 - 11:41:03

Kleine Ursache, große Wirkung. Jetzt klappts.

Zu Deinem Angebot: Was müßte ich ändern um den Namen den Kunden als Blattnamen zu erhalten?

Gruß
Carsten

  

Re: Bei neuem Datensatz neues Blatt erzeugen
von: Carsten
Geschrieben am: 24.04.2003 - 11:51:47

Hallo Holger,

hab's schon selber hingekriegt. Jetzt läuft's wie es soll.

Nochmal vielen Dank für Deine Hilfe.

Gruß
Carsten

  

Re: Bei neuem Datensatz neues Blatt erzeugen
von: Panicman
Geschrieben am: 24.04.2003 - 11:53:42

Hallo Carsten,

nicht so viel:
in Makro1 (Tabelle1): von "If Target.Column <> 1 Then Exit Sub" auf "If Target.Column <> 2 Then Exit Sub" ändern, da 2 Spalte B ist.
in Makro2 (Modul): "Range("A65536").Select" in "Range("B65536").Select" ändern und bei allen cells(...) die 1 auf die 2 ändern.

also so:


'Tabelle1
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Target.Column <> 2 Then Exit Sub
    Call TabAnlegen
End Sub

'Modul
Sub TabAnlegen()

Dim I As Long
Dim II As Long
Dim x As Long
Dim Blattname As String
Dim BlattExistiert As Boolean

Range("B65536").Select
'ActiveCell.SpecialCells(xlLastCell).Select
x = Selection.End(xlUp).Row
Cells(x, 2).Select
For I = 2 To x
    'Check ob Blatt bereits existiert
    For II = 1 To Sheets.Count
        If Sheets(II).Name = Format(Cells(I, 2), "@") Then
        BlattExistiert = True
        Exit For
        End If
    Next II
    
    If BlattExistiert = False Then
        'Check ob Zell nicht leer ist
        If IsEmpty(Cells(I, 2).Value) = False Then
            Blattname = Cells(I, 2).Value
        Worksheets(Worksheets.Count).Copy After:=Worksheets(Worksheets.Count)
        ActiveSheet.Name = Blattname
        'hier wird der Tabellenname für den Sverweis in A1 (=Cells(1 , 1))eingetragen
        Cells(1, 1).Value = Blattname
        Worksheets(1).Select
        End If
    End If
    BlattExistiert = False
Next I
Worksheets(1).Select
End Sub

Gruß
Holger

 

Beiträge aus den Excel-Beispielen zum Thema "Bei neuem Datensatz neues Blatt erzeugen"