Arbeitsblatt automatisch erstellen
#1
Hallo zusammen :)

ich bin neu hier und habe direkt eine Frage!

Ich möchte gerne eine Excel Tabelle erstellen, bei der automatisch ein neues Datenblatt erstellt wird, sobald man in dem Übersichtsblatt einen Eintrag in der Spalte A macht.

Ich habe also ein Übersichtsblatt, auf dem alle Datenblätter zusammengefasst sind. Dabei stehen in der Spalte A fortlaufende Zahlen (1-100 momentan) und für jede neue Zahl die man einträgt soll automatisch ein neues Datenblatt erstellt werden mit Name der entsprechenden Zahl. Dieses neue Datenblatt soll quasi eine Kopie von dem Datenblatt "Vorlage" sein, da in diese Vorlage nur Daten eingetragen werden müssen und ansonsten alles gleich ist.

Habe hierzu Macros gefunden die aber nur leere neue Datenblätter erstellen und man dieses Macro auch erst starten muss bevor neue Blätter erstellt werden. Weiteres Problem bei diesen Macros war es, dass wenn man als bsp. die Zahlen 101-104 neu einträgt und das Macro startet, diese auch erstellt wurden. Nur wenn man danach die Zahlen 105-108 als bsp. einträgt das Macro abgebrochen wurde, weil die Zahlen 101-104 schon existierten. (Die Macros hatten einen Stopp damit bestehende Blätter nicht überschrieben werden). Bei dem was ich brauche sollen die vorhandenen Blätter auch nicht überschrieben werden, aber es sollen natürlich auch die neuen Einträge übernommen werden.  

Grund des Ganzen ist, dass viele verschiedene Leute an der Excelliste arbeiten werden und ich jedes mal alles überprüfen muss, ob alle Formeln etc. noch funktionieren, da diese gerne mal einfach überschrieben werden. Deswegen dachte ich wäre es womöglich einfacher, dass die neuen Datenblätter automatisch erstellt werden und die Kollegen nur Daten in das neue Arbeitsblatt einfügen müssen.

Hoffe Ihr könnt mir weiterhelfen :)


MfG

its_w1n5t0n1995
Top
#2
Hallo,

in der einfachsten Variante, sollte dieser Code helfen: (im "Kopf" des sheets("Deckblatt"), Sheet("Vorlage") muss existieren


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Column <> 1 Then Exit Sub
   Sheets("Vorlage").Copy after:=Sheets(Sheets.Count)
   Sheets("Deckblatt").Activate
End Sub


Verbesserungen könnten sein, die Eingabe zu prüfen (neue Nummer um 1 höher), dem kopierten Sheet einen Name zu geben und ....

mfg
Top
#3
funktioniert leider garnicht :/

Deckblatt und Vorlage existieren bei mir.
Wenn ich auf dem neuen Deckblatt einen neuen Eintrag mache und dann das Macro ausführe passiert leider nichts. Es werden keine neuen Datenblätter erstellt.
Top
#4
Ok...
wohin hast du den Code kopiert?
Auch ist es notwendig, in Spalte "A" eine Eingabe zu machen.
Top
#5
hab den Code in ein Macro kopiert.

In Spalte A im Deckblatt sind bereits 100 einträge enthalten. Hierfür bestehen auch bereits Blätter die nach und nach händisch erstellt wurden.

Ich möchte ab jetzt eben, dass das automatisch funktioniert, sprich ab Tab 101 was der Zeile (A104) entspricht.

Muss ich den Code woanders reinkopieren?
Top
#6
Hallo,

ein einfacher Weg ist es, mit der rechten Maustaste auf den Reiter "Deckblatt" zu klicken und dann "Code anzeigen" auwählen. Der Code gehört in das große Fenster.

Um damit vertrauter zu werden, wähle im linken Drop-down "Arbeitsblatt" aus und sieh dann die Möglichkeiten im rechten drop-down an.

mfg
Top
#7
Super jetzt erstellt er mir schon mal eine Kopie der Vorlage wenn ich in der Übersicht eine neue Zahl eintrage!
Allerdings erstellt er auch eine neue Vorlage wenn man die Zahl wieder löscht? Kann man das irgendwie verhindern?

Außerdem wäre es gut, wenn die erstellte Vorlage den Namen von der Zahl bekommt die man vorne einträgt, gibt es da eine Möglichkeit?

Kenne mich leider garnicht damit aus :/ wäre für jede Hilfe super dankbar! :)
Top
#8
kennt niemand eine Lösung? :/
Top
#9
Hallöchen,

wie Fennek schon schrieb, muss man den Code etwas erweitern.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Column <> 1 Then Exit Sub
   'Makro bei Leereintrag verlassen
   If target.Value = "" Then Exit Sub
   Sheets("Vorlage").Copy after:=Sheets(Sheets.Count)
   'Name des Blattes entsprechend Eingabe
   ActiveSheet.Name = target.Value
   Sheets("Deckblatt").Activate
End Sub

Bei dem Blattnamen hab ich jetzt allerdings keine Prüfung, ob der Name schon existiert. Wenn Du 2x die gleiche Zahl eingibst, gibt das ein Problem Sad Da wäre dann die Frage, was in dem Fall gemacht werden soll.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste