השוואת תאריכים ב-VBA

עמוד לוח שנה

VBA שומרת תאריך כמספר הימים מאז 30 בדצמבר 1899.

קרדיט תמונה: Sergii Gnatiuk/iStock/Getty Images

השוואת תאריכים ב-Microsoft Visual Basic for Applications אינה שונה מהשוואה של כל סוג נתונים אחר. הערכים שאתה משווה חייבים להיות מסוג "תאריך". אתה יכול להשתמש באופרטורים הסטנדרטיים להשוואה: "" עבור "גדול מ"; ">=" עבור "גדול או שווה ל"; "=" עבור "שווה ל"; ו-"<>" עבור "לא שווה ל." אתה יכול גם להשתמש בשני אופרטורים להשוואה, "Is" ו-"IsNot".

סוג תאריך VBA

זה מועיל לזכור כיצד VBA מאחסן ערכי תאריך בזיכרון כאשר אתה משווה תאריכים. תאריך מאוחסן כמספר נקודה צפה בעלת דיוק כפול, או כפול. החלק השלם הארוך הוא מספר הימים, חיובי או שלילי, מאז 30 בדצמבר 1899. החלק העשרוני הוא משך הזמן שחלף מאז חצות. לתאריך ללא זמן, החלק העשרוני שלו מוגדר לאפס. לדוגמה, 1 במאי 1967 מאוחסן כ-24593.0. המשמעות היא שכאשר VBA משווה שני תאריכים, היא למעשה משווה בין שני מספרים המייצגים ימים.

סרטון היום

מחרוזת תווים לעומת תַאֲרִיך

כאשר אתה משווה תאריכים ב-VBA, עליך לוודא שלערכים שאתה משווה יש סוג "תאריך" ואינם מחרוזות תווים. לדוגמה, מחרוזת התווים "05/01/1999" קטנה ממחרוזת התווים "12/31/1900" כי "05" בא לפני "12". המר מחרוזת תווים לסוג תאריך באמצעות הפונקציה "CDate", לדוגמה, "CDate (תיבת טקסט. ערך)".

פונקציות מועילות

בנוסף ל-CDate(), ישנן פונקציות מועילות אחרות שבהן אתה עשוי להשתמש בעת השוואת תאריכים. הפונקציה "Date()" מספקת את התאריך של היום כערך Date. הפונקציה "Now()" מספקת את התאריך והשעה של היום כערך Date. מכיוון שסוג הנתונים תאריך כולל גם רכיב זמן, ניתן לחלץ רק את חלק התאריך של משתנה בעת השוואת תאריכים באמצעות הפונקציה "DateValue()", לדוגמה, "If submission > DateValue (deadline) אז ..."

חשבון תאריך

מכיוון שתאריך מאוחסן כמספר הימים מאז 30 בדצמבר 1899, אתה יכול לכלול אריתמטיקה של תאריך בעת השוואת תאריכים ב-VBA. לדוגמה, אם תוקף כרטיס פג שלושה ימים לאחר רכישתו, תוכל לבדוק אם כרטיס פג תוקפו עם קוד VBA בדומה לקוד הבא:

פג תוקפו של פונקציה ציבורית (רכישה כתאריך) כפג תוקפו של בוליאנית = שקר אם רכישה+3 > תאריך() ואז פג = פונקציית קצה אמיתי אם קצה