Wikipedia für mehr ... Ссылка
Ich habe diese Funktion ursprünglich von der großartigen Excel-Seite von Chip Pearson erhalten.
Was ist eine gute Implementierung einer IsLeapYear-Funktion in VBA?
Bearbeiten: Ich habe die if-then und die DateSerial-Implementierung mit Iterationen in einem Timer ausgeführt und die DateSerial war im Durchschnitt 1-2 ms schneller (5 Läufe von 300 Iterationen mit 1 durchschnittliche Zellenarbeitsblattformel funktioniert auch).
Als eine Variante der Chip Pearson-Lösung könnten Sie auch
ausprobieren %Vor%Wenn Effizienz eine Überlegung ist und das erwartete Jahr zufällig ist, dann könnte es etwas besser sein, zuerst den häufigsten Fall zu machen:
%Vor%Ich fand dieses lustige auf CodeToad :
%Vor%Obwohl ich ziemlich sicher bin, dass die Verwendung von IsDate in einer Funktion wahrscheinlich langsamer ist als ein paar if, elseifs.
Hier ist eine weitere einfache Option.
%Vor%Wenn Leap_Day_Check = 28, dann ist es kein Schaltjahr, wenn es 29 ist.
VBA weiß, was das Datum vor dem 1. März in einem Jahr ist und wird es daher für den 28. oder 29. Februar für uns festlegen.
Ich sehe viele großartige Konzepte, die auf zusätzliches Verständnis hinweisen und die Verwendung von Datumsfunktionen, von denen man großartig lernen kann ... In Bezug auf Code-Effizienz .. Betrachten Sie den Maschinencode, der für die Ausführung einer Funktion erforderlich ist
anstelle komplexer Datumsfunktionen verwende nur ziemlich schnelle Integer-Funktionen BASIC wurde auf GOTO gebaut Ich vermute, dass etwas wie unten ist schneller
%Vor%Nein:
%Vor%