automatisch neue Blätter anlegen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: automatisch neue Blätter anlegen von: Mario
Geschrieben am: 07.02.2005 22:12:36

Hallo,

könnt Ihr mir bitte bei folgendem Problem helfen? :

Ich möchte in einem wöchentlichen Dienstplan eine Schaltfläche anlegen welche das Datum in einer Zelle prüft ( immer Montag ) und mir dann ein neues Tabellenblatt mit dem Datum des darauffolgenden Montags als Name erstellt

Z.B. Datum in Zelle: 07.02.05 --- neues Arbeitsblatt 14.02.05

Grüsse
Mario

Bild


Betrifft: AW: automatisch neue Blätter anlegen von: Luc
Geschrieben am: 07.02.2005 22:19:30

Hallo Mario,
mal den VBA-Editor öffnen, auf Hilfe klicken und sheets eintippen. Da findest du sicher die Methode Sheets.Add usw. Ich versprech dir, es wird nur ein ganz klitzekleines Makro, was du dann schreibst (Einsteigerlevel - genau richtig).
keine Angst - Gruß Luc


Bild


Betrifft: AW: automatisch neue Blätter anlegen von: Mario
Geschrieben am: 07.02.2005 23:44:47

Danke Luc für deinen Hinweis!

Ich habs nun erstmal so gemacht:


Sub blatt()
'
' blatt Makro
' Makro am 07.02.2005 von Mario aufgezeichnet
'
'
    Range("A4").Select
    Sheets("7.02.2005").Select
    Sheets("7.02.2005").Copy Before:=Sheets(1)
    Sheets("7.02.2005 (2)").Select
    Sheets("7.02.2005 (2)").Name = "14.02.2005"
    Range("D6:J10").Select
    ActiveCell.FormulaR1C1 = ""
    Range("D6:J10").Select
    Selection.ClearContents
    Range("G11").Select
End Sub


Soweit so gut. Nur wie bringe ich dem Makro bei, immer das Datum der Zelle A4 + 6 hochzurechnen.

Gruss
Mario


Bild


Betrifft: AW: automatisch neue Blätter anlegen von: Josef Ehrensberger
Geschrieben am: 07.02.2005 23:48:26

Hallo Mario!

Probier mal das.


Sub neuesBlatt()
On Error GoTo ERRORHANDLER
   If IsDate(Sheets("Tabelle1").Range("A4")) Then
      Worksheets.Add after:=Sheets(Sheets.Count)
      Sheets(Sheets.Count).Name = Format(Sheets("Tabelle1").Range("A4") + 7, "dd.mm.yy")
   Else
      MsgBox "Ungültiger Eintrag in ""A4"" !"
   End If
ERRORHANDLER:
   If Err.Number = 1004 Then
      Application.DisplayAlerts = False
      Sheets(Sheets.Count).Delete
      Application.DisplayAlerts = True
      MsgBox "Ein Blatt mit diesem Namen existiert bereits!"
      Err.Clear
   End If
   
End Sub



Gruß Sepp

P.S.: Rückmeldung nicht vergessen!


Bild


Betrifft: AW: automatisch neue Blätter anlegen von: Mario
Geschrieben am: 08.02.2005 00:08:06

Hallo Sepp, DANKE für deine Hilfe. Jetzt wird die Tabelle perfekt mit dem richtigen Datum angelegt. Nun würde ich gern noch einbauen das auch die Struktur der vorigen Tabelle übernommen wird.

Viele Grüsse
Mario


Bild


Betrifft: AW: automatisch neue Blätter anlegen von: u_
Geschrieben am: 08.02.2005 09:05:23

Sub neuesBlatt()
On Error GoTo ERRORHANDLER

If IsDate(Sheets("Tabelle1").Range("A4")) Then
Worksheets(Worksheets.Count).Copy after:=Sheets(Sheets.Count)
Worksheets(Worksheets.Count).Cells.ClearContents
Sheets(Sheets.Count).Name = Format(Sheets("Tabelle1").Range("A4") + 7, "dd.mm.yy")
Else
MsgBox "Ungültiger Eintrag in ""A4"" !"
End If

ERRORHANDLER:

If Err.Number = 1004 Then
Application.DisplayAlerts = False
Sheets(Sheets.Count).Delete
Application.DisplayAlerts = True
MsgBox "Ein Blatt mit diesem Namen existiert bereits!"
Err.Clear
End If


Bild


Betrifft: AW: automatisch neue Blätter anlegen von: Mario
Geschrieben am: 08.02.2005 15:51:56

ich habs... Danke für Eure Hilfe!!!


Bild


Betrifft: AW: automatisch neue Blätter anlegen von: Mario
Geschrieben am: 08.02.2005 11:04:23

DANKE u_ für deinen Beitrag. Ihr seid spitze!!!

Nun kommen wir der Sache schon näher, allerdings treten noch so ein paar kleine Problemchen auf.

Ich hab's nun so :


Sub neuesBlatt()
On Error GoTo ERRORHANDLER
If IsDate(Sheets("Dienstplan").Range("A4")) Then
Worksheets(Worksheets.Count).Copy after:=Sheets(Sheets.Count)
Worksheets(Worksheets.Count).Cells.ClearContents
Sheets(Sheets.Count).Name = Format(Sheets("Dienstplan").Range("A4"), "dd.mm.yy")
Else
MsgBox "Ungültiger Eintrag in ""A4"" !"
End If
ERRORHANDLER:
If Err.Number = 1004 Then
Application.DisplayAlerts = False
Sheets(Sheets.Count).Delete
Application.DisplayAlerts = True
MsgBox "Ein Blatt mit diesem Namen existiert bereits!"
Err.Clear
End If
End Sub


Dh. ich schreibe immer in Tabelle1 (Dienstplan) und erzeuge dann mit der Schaltfläche die jeweilige Tabelle mit dem aktuellen Datum. So klappt das super!

Wie kann ich nun ausser der Struktur, ( hatte mich wohl bischen blöd ausgedrückt) auch die Inhalte mit Formeln und Schaltflächen der vorigen Tabelle übernehmen?

Gruss
Mario


Bild


Betrifft: Nun doch noch ein Problem von: Mario
Geschrieben am: 09.02.2005 00:15:57

Hallo,

ich habe jetzt, mit eurer Hilfe folgenden Makro Code angelegt:

ub neuesBlatt()
On Error GoTo ERRORHANDLER

If IsDate(Sheets("Dienstplan").Range("A4")) Then
Worksheets(Worksheets.Count).Copy after:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = Format(Sheets("Dienstplan").Range("A4"), "dd.mm.yy")
Else
MsgBox "Ungültiger Eintrag in ""A4"" !"
End If



ERRORHANDLER:

If Err.Number = 1004 Then
Application.DisplayAlerts = False
Sheets(Sheets.Count).Delete
Application.DisplayAlerts = True
MsgBox "Ein Blatt mit diesem Namen existiert bereits!"
Err.Clear
End If
End Sub

nun kopiert Excel mir die Daten nicht richtig welche ich in die Tabelle "Dienstplan" eintrage.D.h. bei der ersten Tabelle klappts. Allerdings sind alle nachfolgenden Tabellen, bis auf den Namen, vom Inhalt her gleich.

Was muss man im Code verändern damit Excel bei Eintrag in die Tabelle "Dienstplan" immer eine neue Tabelle erzeugt.?

Kenn ihr ein gutes Buch zum Thema VBA?

Gruss
Mario


Bild


Betrifft: AW: Nun doch noch ein Problem von: Mario
Geschrieben am: 09.02.2005 00:44:16


Sub neuesBlatt()
On Error GoTo ERRORHANDLER
If IsDate(Sheets("Dienstplan").Range("A4")) Then
ActiveSheet.Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = Format(Sheets("Dienstplan").Range("A4"), "dd.mm.yy")
Else
MsgBox "Ungültiger Eintrag in ""A4"" !"
End If
Application.CutCopyMode = False
ERRORHANDLER:
If Err.Number = 1004 Then
Application.DisplayAlerts = False
Sheets(Sheets.Count).Delete
Application.DisplayAlerts = True
MsgBox "Ein Blatt mit diesem Namen existiert bereits!"
Err.Clear
End If
End Sub


So gehts nun ...


Bild


Betrifft: AW: Na also! Geht doch! Gratuliere! owT von: Luc
Geschrieben am: 09.02.2005 09:25:03




Bild


Betrifft: AW: Na also! Geht doch! Gratuliere! owT von: Mario
Geschrieben am: 10.02.2005 22:55:24

Hallo,

ich habe ein komisches Problem mit dem Makro. Auf meinem System zu Hause läuft alles wunderbar, nur auf dem Rechner im Büro gibts einen Kompilierungsfehler im Modul 2. Und zwar zeigt Excel das mit FORMAT in dieser Zeile "Sheets(Sheets.Count).Name = Format(Sheets("Dienstplan").Range("A4"), "dd.mm.yy")" wohl etwas nicht stimmt. Der einzige Softwareunterschied zwischen beiden Systemen ist das ich Windows XPSP2 und im Büro Windows2000SP4 als Betriebssystem nutze. Excel 2003SP1 haben beide Systeme. Woran kann es liegen?


Sub neuesBlatt()
On Error GoTo ERRORHANDLER
If IsDate(Sheets("Dienstplan").Range("A4")) Then
ActiveSheet.Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = Format(Sheets("Dienstplan").Range("A4"), "dd.mm.yy")
Else
MsgBox "Ungültiger Eintrag in ""A4"" !"
End If
Application.CutCopyMode = False
ERRORHANDLER:
If Err.Number = 1004 Then
Application.DisplayAlerts = False
Sheets(Sheets.Count).Delete
Application.DisplayAlerts = True
MsgBox "Ein Blatt mit diesem Namen existiert bereits!"
Err.Clear
End If
End Sub






Danke schonmal für eure Hilfe!

Gruss
Mario


 Bild

Beiträge aus den Excel-Beispielen zum Thema "automatisch neue Blätter anlegen"