הבנת משתנים וקבועים בפקודות מאקרו של Excel

במאמר זה תלמדו מהם קבועים ומשתנים בפקודות מאקרו, היכן ניתן להשתמש בהם ומה ההבדל העיקרי בין סוגי נתונים שונים. כמו כן יתגלה מדוע נחוצים קבועים, אם אתה יכול פשוט לכתוב משתנה ולעולם לא לשנות אותו.

כמו שפות תכנות אחרות, ניתן לאחסן נתונים במשתנים או קבועים (ששניהם מכונים לעתים קרובות גם מיכלי נתונים). זה ההבדל העיקרי בין המושגים הללו. הראשון עשוי להשתנות בהתאם למה שקורה בתוכנית. בתורו, קבועים נקבעים פעם אחת ואינם משנים את ערכם.

קבועים יכולים להיות שימושיים אם אתה צריך להשתמש באותו ערך גדול מספר פעמים. במקום להעתיק את המספר, אפשר פשוט לכתוב את שם הקבוע. לדוגמה, אתה יכול להשתמש בקבוע "Pi" כדי לאחסן את Pi, שהוא ערך קבוע. הוא גדול מאוד, ובכל פעם די קשה לכתוב אותו או לחפש ולהעתיק אותו. וכך, מספיק לכתוב שני תווים, והסביבה משתמשת באופן אוטומטי במספר הרצוי.

משתמש האקסל צריך להצהיר על משתנים אם הוא צריך לשנות את הערך המאוחסן בהם מעת לעת. לדוגמה, ניתן להגדיר משתנה בשם sVAT_Rate, אשר יאחסן את שיעור המע"מ הנוכחי עבור המוצר. אם זה משתנה, אתה יכול לתקן את זה במהירות. זה שימושי במיוחד למי שעושה עסקים בארה"ב, שם חלק מהסחורות עשויות שלא להיות חייבות במע"מ כלל (וגם המס הזה שונה ממדינה למדינה).

סוגי מידע

כל מיכל נתונים יכול להיות אחד מכמה סוגים. להלן טבלה המתארת ​​את סוגי המידע המעובדים הסטנדרטיים. יש הרבה מהם, ולמתחילים אולי נראה בהתחלה שהם חוזרים זה על זה. אבל זו תחושה הזויה. המשך לקרוא כדי ללמוד מדוע ציון סוג הנתונים הנכון הוא כל כך חשוב.

לא מומלץ להשתמש בסוג נתונים שתופס יותר מקום בזיכרון עבור מספרים קטנים. לדוגמה, עבור המספר 1, מספיק להשתמש בסוג Byte. לכך תהיה השפעה חיובית על הביצועים של מודול ההפעלה, במיוחד על מחשבים חלשים. אבל חשוב לא ללכת רחוק מדי כאן. אם אתה משתמש בסוג נתונים קומפקטי מדי, ייתכן שערך גדול מדי לא יתאים בו.

הכרזה על קבועים ומשתנים

מומלץ מאוד להשתמש במיכל נתונים מבלי להכריז עליו קודם. אז יכולות להתעורר מספר בעיות, כדי להימנע מהן יש צורך לכתוב כמה שורות קוד קטנות עם ספירה של משתנים או קבועים.

כדי להכריז על משתנה, נעשה שימוש במשפט Dim. לדוגמה, כך:

עמום Variable_Name כמספר שלם

Variable_Name הוא שם המשתנה. לאחר מכן, נכתב האופרטור As, המציין את סוג הנתונים. במקום המחרוזות "Variable_Name" ו-"Integer", אתה יכול להכניס שם וסוג נתונים משלך.

ניתן להכריז גם על קבועים, אך תחילה עליך לציין את ערכם. אחת האפשרויות היא:

Const iMaxCount = 5000

למען ההגינות, במקרים מסוימים אתה יכול לעשות בלי להכריז על משתנה, אבל במקרה זה הם יקבלו אוטומטית את הסוג Variant. עם זאת, זה לא מומלץ מהסיבות הבאות:

  1. עיבוד וריאנטים מעובד הרבה יותר לאט, ואם יש הרבה משתנים כאלה, ניתן להאט משמעותית את עיבוד המידע במחשבים חלשים. נראה שהשניות האלה יכריעו? אבל אם אתה צריך לכתוב מספר רב של שורות קוד, ואז גם להפעיל אותו במחשבים חלשים (שעדיין נמכרים, בהתחשב בכך שחבילות משרדיות מודרניות דורשות הרבה זיכרון RAM), אתה יכול להפסיק לחלוטין את העבודה. ישנם מקרים בהם כתיבה לא מתוכננת של פקודות מאקרו הובילה להקפאת ספרים חכמים בעלי כמות קטנה של זיכרון RAM ואינם מיועדים לבצע משימות מורכבות. 
  2. מותרות שגיאות הדפסה בשמות, אותן ניתן למנוע על ידי שימוש במשפט Option Explicit, המאפשר למצוא משתנה לא מוצהר, אם נמצא כזה. זוהי דרך קלה לזהות שגיאות, שכן טעות הקלדה הקטנה ביותר גורמת למתורגמן שלא יוכל לזהות את המשתנה. ואם תפעיל את מצב הצהרת משתנים, המתורגמן פשוט לא יאפשר לך להפעיל את המאקרו אם נמצאו מיכלי נתונים שלא הוכרזו ממש בתחילת המודול.
  3. הימנע משגיאות הנגרמות על ידי ערכי משתנים שאינם תואמים לסוג הנתונים. בדרך כלל, הקצאת ערך טקסט למשתנה מספר שלם יזרוק שגיאה. כן, מצד אחד, סוג גנרי מוקצה ללא הצהרה, אבל אם הם מוצהרים מראש, אז אפשר למנוע טעויות אקראיות.

לכן, למרות הכל, מומלץ מאוד להצהיר על כל המשתנים בפקודות מאקרו של אקסל.

יש לזכור דבר נוסף בעת הצהרת משתנים. ניתן לא להקצות ערך כלשהו למשתנה בעת ההכרזה עליו, אך במקרה זה הוא מקבל ערך ברירת מחדל. לדוגמה:

  1. הקווים נעשים ריקים.
  2. המספרים מקבלים את הערך 0.
  3. משתנים מסוג Boolean נחשבים בתחילה כ-false.
  4. תאריך ברירת המחדל הוא 30 בדצמבר 1899.

לדוגמה, אין צורך להקצות את הערך 0 למשתנה מספר שלם אם לא צוין ערך קודם לכן. היא כבר מכילה את המספר הזה.

אפשרות הצהרה מפורשת

הצהרה זו מאפשרת לך להכריז על כל המשתנים המשמשים בקוד VBA ולקבוע את נוכחותם של כל מיכל לא מוצהר לפני הפעלת הקוד. כדי להשתמש בתכונה זו, פשוט כתוב שורה של קוד אופציה מפורש בחלק העליון של קוד המאקרו.

אם אתה צריך לכלול הצהרה זו בקוד שלך בכל פעם, אתה יכול לעשות זאת באמצעות הגדרה מיוחדת בעורך VBA. כדי להפעיל אפשרות זו, עליך:

  1. עבור אל סביבת הפיתוח לאורך הנתיב – כלים > אפשרויות.
  2. בחלון שנפתח לאחר מכן, פתח את לשונית העורך.
  3. ולבסוף, סמן את התיבה שליד הפריט Require Variable Declaration.

לאחר השלמת שלבים אלה, לחץ על כפתור "אישור". 

זהו, כעת בעת כתיבת כל מאקרו חדש, השורה הזו תוכנס בראש הקוד באופן אוטומטי.

היקף של קבועים ומשתנים

לכל משתנה או קבוע יש היקף מוגבל בלבד. תלוי איפה אתה מצהיר על זה.

נניח שיש לנו פונקציה עלות כוללת(), והוא משתמש במשתנה sVAT_Rate. בהתאם לתפקיד במודול, יהיה לו היקף שונה:

אפשרות מפורשת

עמום sVAT_Rate כיחיד

הפונקציה Total_Cost() ככפול

.

.

.

סוף פונקציה

אם משתנה מוצהר בחלק העליון של מודול עצמו, הוא מתפשט בכל המודול הזה. כלומר, ניתן לקרוא אותו בכל הליך.

יתרה מכך, אם אחד הפרוצדורות שינה את ערך המשתנה, אז הבא יקרא גם את הערך המתוקן הזה. אבל במודולים אחרים המשתנה הזה עדיין לא ייקרא.

אפשרות מפורשת

הפונקציה Total_Cost() ככפול

עמום sVAT_Rate כיחיד

   .

   .

   .

סוף פונקציה

במקרה זה, המשתנה מוצהר בתוך הפרוצדורה, והמתורגמן יזרוק שגיאה אם ​​נעשה בו שימוש בהליך אחר.

אם אתה רוצה שהמשתנה ייקרא על ידי מודולים אחרים, עליך להשתמש במילת המפתח Public במקום במילת המפתח Dim. באופן דומה, ניתן להגביל את היקף המשתנה למודול הנוכחי בלבד על ידי שימוש במשפט Public, שנכתב במקום המילה Dim.

ניתן להגדיר את היקף הקבועים בצורה דומה, אך מילת המפתח כאן כתובה יחד עם האופרטור Const.

הנה טבלה עם דוגמה טובה לאופן שבו זה עובד עם קבועים ומשתנים.

אפשרות מפורשת

sVAT_Rate כיחיד

Const Public iMax_Count = 5000

בדוגמה זו, אתה יכול לראות כיצד מילת המפתח Public משמשת להכרזה על משתנה, ומה אתה צריך לכתוב בעורך Visual Basic כדי להכריז על קבוע ציבורי. ההיקף של מיכלי ערכים אלה חל על כל המודולים.
אפשרות מפורשת

sVAT_Rate כיחיד

Const פרטי iMax_Count = 5000

כאן, משתנים וקבועים מוכרזים באמצעות מילת המפתח Private. המשמעות היא שניתן לראות אותם רק בתוך המודול הנוכחי, ונהלים במודולים אחרים אינם יכולים להשתמש בהם.

מדוע יש צורך בקבועים ומשתנים

השימוש בקבועים ומשתנים מאפשר להגביר את מידת ההבנה של הקוד. ואם למתחילים באופן כללי אין שאלות מדוע יש צורך במשתנים, אז יש הרבה אי בהירות לגבי הצורך בקבועים. והשאלה הזו נראית, במבט ראשון, הגיונית למדי. אחרי הכל, אתה יכול להכריז על משתנה פעם אחת ולעולם לא לשנות אותו שוב.

מסתבר שהתשובה נמצאת איפשהו באותו מישור כמו לגבי השימוש בסוגי נתונים שתופסים מקום גדול בזיכרון. אם יש לנו עסק במספר עצום של משתנים, נוכל לשנות בטעות קונטיינר קיים. אם המשתמש רושם שערך מסוים לעולם לא ישתנה, הסביבה תשלוט בזה באופן אוטומטי.

זה חשוב במיוחד כאשר המאקרו נכתב על ידי מספר מתכנתים. אפשר לדעת שמשתנה כלשהו לא אמור להשתנות. והשני לא. אם תציין את האופרטור Const, מפתח אחר יידע שהערך הזה לא משתנה.

או, אם יש קבוע עם שם אחד, ולמשתנה יש שם שונה, אך דומה. המפתח יכול פשוט לבלבל אותם. לדוגמה, משתנה אחד שאין צורך לשנות נקרא Variable11, ואחר שניתן לערוך נקרא Variable1. אדם יכול באופן אוטומטי, בעת כתיבת קוד, לדלג בטעות על יחידה נוספת ולא להבחין בה. כתוצאה מכך, מיכל הערכים ישתנה, שאסור לגעת בו.

או שהמפתח עצמו עלול לשכוח באילו משתנים הוא יכול לגעת ובאילו לא. זה קורה לעתים קרובות כאשר הקוד נכתב במשך מספר שבועות, וגודלו הופך גדול. בזמן הזה, קל מאוד לשכוח אפילו מה המשמעות של משתנה זה או אחר.

כן, אתה יכול לעשות עם הערות במצב זה, אבל לא קל יותר לציין את המילה Const?

מסקנות

משתנים הם מרכיב חיוני בתכנות מאקרו, המאפשרים לך לבצע פעולות מורכבות, מחישובים ועד ליידע את המשתמש על אירועים מסוימים או ציון ערכים ספציפיים בתאים של גיליון אלקטרוני.

יש להשתמש בקבועים אם היזם יודע בוודאות שתכולת המיכלים הללו לא תשתנה בעתיד. מומלץ לא להשתמש במשתנים במקום זאת, שכן אפשר לטעות בטעות.

השאירו תגובה