ich bin dabei eine Mitarbeiterliste mit einigen Features unter anderem einer Urlaubsübersicht zu erstellen.
Damit man diese nicht jedes Jahr neu anlegen muss, habe ich einen CommandButton mit "neues Jahr anlegen erstellt".
Das kopieren und öffnen des neuen Workbooks unter richtigem Namen auf dem Desktop funktioniert auch schon.
Leider habe ich das Problem, dass der Code beim Übertragen des Resturlaubs (Kopieren der Werte von Spalte BA in Spalte AU) die Daten in die ursprünglichen Datei kopiert. Bzw. eine Fehlermeldung angezeigt wird.
Fehlermeldung:
Lauftzeitfehler '1004': Anwendungs- oder objektdefinierter Fehler
Im Debugger wird mir an folgender Stelle angezeigt:
.Range("AU:AU700").PasteSpecial xlPasteValues
Ich gehe davon aus, dass er das Ziel Workbook nicht findet, weiß jedoch nicht wie ich dieses ansprechen kann.
Private Sub CommandButton1_Click()
'Neues Jahr erstellen
Dim wkbName As String, wkb As Workbook
wkbName = Environ$("USERPROFILE") & "\Desktop\" & "Mitarbeiterliste_Urlaubsliste_" & Range("F1").Value & "xlsm"
Dim intLetzte As Long
intLetzte = Cells(5, Columns.Count).End(xlToLeft).Column
ActiveWorkbook.SaveCopyAs wkbName
Set wkb = Workbooks.Open(wkbName) 'Das neue Workbook wird geöffnet
With wkb.Worksheets(1)
.Select
'Urlaubsanspruch übertragen
.Range("BA6:BA700").Copy
.Range("AU:AU700").PasteSpecial xlPasteValues
'alte freigegebene Urlaubstage löschen
Range("BB6:PC700").ClearContents
'Jahr hinzufügen
.Range("E1").Value = Range("E1").Value + 1
Dim currentdate As Date
currentdate = DateAdd("yyyy", 1, Range("E2"))
.Range("E2") = currentdate
End With
End Sub
Die selbe Problematik habe ich beim Löschen des bisherigen Urlaubs (Range("BB6:PC700").ClearContents).Wenn mir jemand weiterhelfen kann, wäre ich sehr erfreut. Eine Beispieldatei ist ebenfalls angehängt.
Da ich mir alles bezüglich Excel VBA selbst über Foren beigebracht habe, bin ich auch über jeden Tipp dankbar, wie man den Code vereinfachen/ verbessern kann.
Vielen Dank und liebe Grüße
Ya
https://www.herber.de/bbs/user/156476.xlsm