Clever-Excel-Forum

Normale Version: VBA Tabellenblatt kopieren und mit Datum benennen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo zusammen,
ich habe folgendes Makro erstellt. 

Sub Vorlage_kopieren()

Dim wks As Worksheet
Sheets("Vorlage").Copy After:=Sheets(Sheets.Count)
Set wks = Sheets(Sheets.Count)
With wks
.Name = Date
.Visible = xlSheetVisible
End With
End Sub

Nun zu meinem Problem. Es funktioniert super wenn ich nur einmal kopiere und einmal das Datum erscheint. Sobald ich eine weitere Kopie mache erscheint ein Fehler und es wird nicht das Datum angezeigt sondern Vorlage(2). Für meine Zwecke sollte es aber anzeigen Datum(2) oder Datum(3) usw. Es kann ja sein das ich die Vorlage an einem Tag öfters benötige.
Was muss ich in das Makro noch einfügen damit es so wie gewünscht funktioniert?

Viele Grüße 
Martin
Hallöchen,

Code:
Sub Vorlage_kopieren()
'Variablendeklarationen
'Integer, String
Dim iCnt%, strZusatz$
Dim wks As Worksheet
Sheets("Vorlage").Copy After:=Sheets(Sheets.Count)
Set wks = Sheets(Sheets.Count)
'Gehe bei Fehler zum errorhandler
On Error GoTo errorhandler
With wks
   .Name = Date & strZusatz
   .Visible = xlSheetVisible
End With
'Makro verlassen
Exit Sub
'Fehlerbehandlung
errorhandler:
'Zaehler hochsetzen
iCnt = iCnt + 1
'Zusatz bilden
strZusatz = " (" & iCnt & ")"
'Zurueck zur Fehler-Codezeile
Resume
End Sub
Hallo schauan,
funktioniert genau so wie es sein soll. Vielen Dank.

Viele Grüße
Martin
Hallo,
es funktioniert zwar, aber es wäre toll wenn das neue Arbeitsblatt gleich nach dem zu Kopierenden kommen würde. So ist das aktuellste immer vorne dran und man muss nicht nach hinten gehen um es zu bearbeiten.

Viele Grüße
Martin
Hallöchen,

wo das Bild hinkommt bestimmt dieser Codeteil:

After:=Sheets(Sheets.Count)


Wenn Du es hinter das aktive haben willst dann

After:=ActiveSheet
Hallo,
funktioniert leider nicht. Wenn ich After:=Sheets(Sheets.Count) mit After:=ActiveSheet austausche macht es ein Tabellenblatt mit einer weiteren Kopie auf und ein neues Tabellenblatt mit dem Datum.
Hallöchen,

Du musst das mit den Sheets(Sheets.Count) auch darunter ersetzen bei.

Set wks = Sheets(Sheets.Count)

Das neue Blatt ist ja nun nicht mehr das letzte ...
Da hätt ich auch selber drauf kommen können. Huh 
Klappt jetzt super. Vielen Dank ?
Hallo,
jetzt habe ich ein weiteres Problem. Ich habe Pflichtfelder in der zu kopierenden Vorlage festgelegt. Diese müssen ausgefüllt werden damit abgespeichert werden kann. Nun kann ich natürlich in der zu kopierenden Vorlage nichts in die Pflichtfelder eintragen. Sonst wäre ja in der Vorlage bereits was eingetragen.
Nun zu meiner Frage. Kann ich es irgendwie umgehen das in der Vorlage die Pflichtfelder ausgefüllt werden müssen. Sie sollen erst in der Kopie mit Datum ausgefüllt werden müssen.

Viele Grüße
Martin
Hallöchen,

Zitat:Ich habe Pflichtfelder in der zu kopierenden Vorlage festgelegt. Diese müssen ausgefüllt werden damit abgespeichert werden kann.

Du musst die Vorlage doch auch nicht speichern sondern die Kopie?
Seiten: 1 2