@סקרן-0 זו כבר קצת גלישה מהנושא, ובאורח לא מפתיע גם כאן יש תשובה ארוכה וקצרה:
בקצרה:
למה לא? אין הכרח ללכת בעקבות סטנדרטיים, ומי שפיתח את VBA יכל לעשות ככל העולה על רוחו.
בארוכה:
יש היגיון בדבר. צריך להתבונן מתחת למכסה המנוע... זה נושא קצת מורכב, אבל אני אציג את נקודת פתיחה:
ערך בוליאני Boolean מיוצג באופן תיאורטי על ידי סיבית בודדת, בעוד שמספר שלם Integer מיוצג על ידי רצף של סיביות (16, 32 או 64, גם זה נושא בפני עצמו....)
מוסכם ש-0 זה FALSE. הייצוג הבינארי של הערך המספרי 0 יהיה למשל 16 סיביות שכל אחת מהן היא 0:
0000000000000000
כעת איך נייצג את TRUE כערך מספרי? אם נבחר את הערך 1, ייצוגו בסיביות הוא כך:
0000000000000001
אבל רגע, יוצא שיש כאן חוסר עקביות, שעלול לגרום לקטסטרופה, כיון שלפי הגדרה, TRUE = NOT FALSE, הערך המספרי יהיה מיוצג כך:
NOT(0000000000000000) == 1111111111111111
וזה מפורש לערך של 1-, כי הסיבית השמאלית ביותר מיצגת את הסימן מינוס (וגם זה נושא בפני עצמו...)
כעת אחרי שסיקרנתי אותך, תוכל לחקור קצת יותר את הנושא.