am Ende des aktuellen oder am Anfang des Folgemonats rechne ich meine Kundentermine ab.
Ein Makro, das ich aus mehreren Userforen assembliert habe fragt mich nach dem ersten Tag des Abrechnungsmonats. In die Userbox geb ich das komplette Datum (z.B. 01.03.2016) ein. Daraus errechnet das Makro 31 Tage und löscht alle übrigen Zeilen.
Bei kürzeren Monaten muss ich die unzutreffenden Tage manuell entfernen.
Gern möchte ich die 2 Sachen einbinden:
Die korrekte Anzahl der Tage im Monat selbst ermitteln lassen.
Dazu fand ich eine Anweisung, die ich selbst nicht einbinden kann :(
Der letzte Tag des aktuellen Monats:
VBA
DateSerial(Year(Date()), Month(Date()) + 1, 0)
Mit diesem Wert dann die Monate davor u. danach entfernen lassen. Die Abrechnung schreibe ich monatsweise mal in der letzten Woche des aktuellen Monats mal in den ersten Wochen des Folgemonats.
1) wie bekomme ich den aktuellen kompletten Monat mit der korrekten Anzahl der Tage extrahiert wenn das Makro in der letzten Monatswoche (am letzten Arbeitstag) läuft?
2) wie bekomme ich den letzten Monat extrahiert, wenn das Makro in den ersten 3 Monatswochen des Folgemonats, für den letzten Monat, ausgeführt wird.
Die Tabellenstruktur sieht wie folgt aus:
Kundenname |Stunden |Beginn
KundeA |2 |01.02.2016 13:15
KundeB |2 |18.02.2016 13:15
KundeA |2 |01.03.2016 13:15
KundeB |2 |18.03.2016 13:15
KundeA |2 |01.04.2016 13:15
KundeB |2 |18.04.2016 13:15
/Der Codeanfang***
Sub Stundenabrechnung()
Dim Beginn As Date
Dim anfangsdatum As Date
Dim datumsuche As Date
Dim lastrow As Long
Dim zaehler As Long
Beginn = Date
anfangsdatum = InputBox("Anfangsdatum?")
'datumsuche = Beginn - anfangsdatum
datumsuche = anfangsdatum - 1
MsgBox datumsuche, , "Ausgabe aller Daten NACH folgendem Datum"
lastrow = Cells.SpecialCells(xlCellTypeLastCell).Row
For zaehler = lastrow To 1 Step -1
If IsDate(Cells(zaehler, 1)) Then
If CDate(Cells(zaehler, 1)) If CDate(Cells(zaehler, 1)) > CDate(datumsuche) + 31 Then Rows(zaehler).Delete
End If
Next
/ Code Ende***
Danke schön!
André