Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

[VBA] DateDiff-Funktion
#1
Hallo zusammen!

Ich habe folgendes Problem. Ausgehend von einem Monatswert (Spalte 49) und der Eintrittsdatum (Spalte 4) sollen Sonderzuschläge berechnet werden. Dabei sollen zeilenweise die Werte ermittelt werden. Die Werte beruhen aus den verschiedenen Cases, die zutreffen. So wie der Code momentan aussieht ist er fehlerhaft. Hat jemand eine Idee?
Es wird mir die Zeile mit der Deklarierung des Eintritt als fehlerhaft angezeigt ("Anwensunds- oder objektdefinierter Fehler")



Sub Sonderzahlung()

Dim Zeile As Integer
Dim Sonderzahlung As Long
Dim Eintritt As Date, Heute As Date
Heute = Date
Zeile = 5
Eintritt = ActiveWorkbook.Worksheets("Gehaltsdaten").Cells(Zeile, 4)

Select Case DateDiff("m", Eintritt, Heute)
   
    Case Is < 6
        Sonderzahlung = 0
    Case 6 To 11
        Sonderzahlung = ActiveWorkbook.Worksheets("Gehaltsdaten").Cells(Zeile, 49) * 25 / 100
    Case 12 To 23
        Sonderzahlung = ActiveWorkbook.Worksheets("Gehaltsdaten").Cells(Zeile, 49) * 35 / 100
    Case 24 To 35
        Sonderzahlung = ActiveWorkbook.Worksheets("Gehaltsdaten").Cells(Zeile, 49) * 45 / 100
    Case Else
        Sonderzahlung = ActiveWorkbook.Worksheets("Gehaltsdaten").Cells(Zeile, 49) * 55 / 100
End Select

Set book = ActiveWorkbook
While (book.Worksheets("Gehaltsdaten").Cells(Zeile, 1) <> "")
book.Worksheets("Gehaltsdaten").Cells(Zeile, 51) = Sonderzahlung

Zeile = Zeile + 1

Wend

End Sub
Antworten Top
#2
Hi,

kann ich nicht nachvollziehen. Einzig die fehlende Deklaration des book wird mir angezeigt!
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#3
Bin grad nicht ganz sicher:

Select Case WorksheetFunction.DateDiff(Eintritt, Heute, "M") oder
Select Case WorksheetFunction.DateDif(Eintritt, Heute, "M")

falls VBA DateDif nativ nicht kennen sollte
Antworten Top
#4
Hi,

der Code läuft bei mir fehlerfrei durch -> Ich hab kein 
Option explicit
Antworten Top
#5
Hi,

ich kann auch nicht nachvollziehen, warum der Code nicht laufen soll. Man könnte ihn aber etwas abwandeln:


Code:
Sub Sonderzahlung()

Dim Zeile As Integer
Dim Sonderzahlung As Long
Dim Eintritt As Date

Zeile = 5
With ActiveWorkbook
Eintritt = .Worksheets("Gehaltsdaten").Cells(Zeile, 4)

Select Case DateDiff("m", Eintritt, Date)
   
    Case Is < 6
        Sonderzahlung = 0
    Case 6 To 11
        Sonderzahlung = 25
    Case 12 To 23
        Sonderzahlung = 35
    Case 24 To 35
        Sonderzahlung = 45
    Case Else
        Sonderzahlung = 55
End Select
Sonderzahlung = .Worksheets("Gehaltsdaten").Cells(Zeile, 49) / 100 * Sonderzahlung

While .Worksheets("Gehaltsdaten").Cells(Zeile, 1) <> ""
.Worksheets("Gehaltsdaten").Cells(Zeile, 51) = Sonderzahlung

Zeile = Zeile + 1

Wend
End With
End Sub
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#6
Danke euch allen!

Da hatte ich wohl was verdreht, kann es mir auch gerade nicht mehr erklären.

Grüße
Jonas
Antworten Top


Gehe zu:


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