#Mod in #VBA erzeugt #Überlauf


Aaaachtung! Wenn Sie in #VBA den #Mod-#Operator verwenden, um #Divisionsreste herauszufinden (für Schaltjahre, Teilbarkeit, …), dann kann’s Ihnen passieren, dass ein „#Überlauf“-Fehler herauskommt.

If meinJahr Mod 4 =0 Then
...

Und zwar dann, wenn der Dividend (z.B. meinJahr) größer oder kleiner ist als das, was Sie in einer Long-Variable unterbringen können – die geht von -2.147.483.648 bis 2.147.483.647, und mehr oder weniger ist nicht erlaubt.

Und was nun?

Sie müssen sich Ihr eigenes Mod schreiben – und dann verwenden Sie statt

Dividend Mod Divisor 'mit Operator
myMod(Dividend, Divisor) 'selbst definierte Funktion

Und die Funktion myMod könnte so aussehen:

Public Function myMod(Dividend As Double, Divisor As Double) As Double 
    myMod = Dividend - Divisor * (Int(Dividend / Divisor)) 
End Function

Über katharinakanns

Microsoft Office Master Specialist mit viel Verständnis für IHR Geschäft - ich analysiere IHRE Situation, optimiere IHRE Prozesse, automatisiere IHRE Routineaufgaben, finde IHRE Lösung, unterrichte IHRE MitarbeiterInnen, mache Vorlagen mit IHRER CI, spare IHRE Zeit und IHR Geld. Ich freue mich darauf, SIE kennenlernen zu dürfen :-)
Dieser Beitrag wurde unter Access, Excel, VBA abgelegt und mit , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s