4 טעויות שכדאי להימנע מתכנות פקודות מאקרו של Excel עם VBA

4 טעויות שכדאי להימנע מתכנות פקודות מאקרו של Excel עם VBA

Microsoft Excel הוא כבר כלי לניתוח נתונים מסוגל, אבל עם היכולת להפוך משימות חוזרות עם פקודות מאקרו על ידי כתיבת קוד פשוט ב- Visual Basic for Applications (VBA) זה הרבה יותר חזק. אולם בשימוש לא נכון, עם זאת, VBA יכול לגרום לבעיות.





גם אם אינך מתכנת, VBA מציעה פונקציות פשוטות המאפשרות להוסיף פונקציונליות מרשימה לגיליונות האלקטרוניים שלך.





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





תחילת העבודה עם VBA

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

אם לא תוכנת ב- VBA ב- Excel לפני שתצטרך להפעיל את כלי המפתחים בתוכנית Excel שלך. החדשות הטובות הן שהפעלת כלי המפתחים היא למעשה די קלה. פשוט לך אל קוֹבֶץ > אפשרויות ואז התאמה אישית של סרט . פשוט להזיז את מפתח הכרטיסייה מהחלונית השמאלית לימין.



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

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





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

1. שמות משתנים איומים

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





הטלפון שלי לוקח לנצח לטעון

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

  • הפוך אותם לקצרים ככל האפשר.
  • הפוך אותם לתיאוריים ככל האפשר.
  • הקדם להם את סוג המשתנה (בוליאני, מספר שלם וכו '...).

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

אם ברצונך להשתמש במשתנים בתוך פונקציה בתוך המודול או האובייקט (אסביר זאת להלן), עליך להכריז עליו כמשתנה 'ציבורי' על ידי הקדמת ההצהרה עם פּוּמְבֵּי . אחרת, משתנים יוכרזו על ידי הקדמת המילה אף אחד .

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

כמו כן, הקפד לתת שם לדפים בחוברת העבודה שלך ב- Excel.

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

2. שבירה במקום לולאה

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

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

מתכנתים חדשים בדרך כלל רוצים פשוט לפרוץ מהלולאה (VBA לולאות או לולאות VBA Do While) מיד כאשר תנאי מסוים נכון.

להלן דוגמה לשיטה זו המשמשת לשבירת לולאת VBA.

For x = 1 To 20
If x = 6 Then Exit For
y = x + intRoomTemp
Next i

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

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

While (x>=1 AND x<=20 AND x6)
For x = 1 To 20
y = x + intRoomTemp
Next i
Wend

זה מאפשר זרימה לוגית של הקוד שלך. עכשיו הקוד יסתובב ויפסיק ברגע שהוא יגיע 6. אין צורך לכלול פקודות EXIT או BREAK מביכות באמצע הלולאה.

3. לא משתמש במערכים

עוד טעות מעניינת שמתכנתים חדשים של VBA עושים הוא לנסות לעבד הכל בתוך לולאות מקוננות רבות שמסננות דרך שורות ועמודות במהלך תהליך החישוב.

זה יכול גם להוביל לבעיות ביצועים גדולות. לדפדף בעמודה ולחלץ את הערכים בכל פעם הוא רוצח במעבד שלך. דרך יעילה יותר לטפל ברשימות ארוכות של מספרים היא שימוש במערך.

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

אתה יכול להגדיר מערך בקלות רק על ידי הקלדה Dim arrMyArray (12) כמספר שלם .

סקירת לקוחות גפן של המוצר החינמי

זה יוצר 'מגש' עם 12 חריצים הזמינים למילוי.

כך עשוי להיראות קוד לולאה של שורה ללא מערך:

Sub Test1()
Dim x As Integer
intNumRows = Range('A2', Range('A2').End(xldown)).Rows.Count
Range('A2').Select
For x = 1 To intNumRows
If Range('A' & str(x)).value <100 then
intTemp = (Range('A' & str(x)).value) * 32 - 100
End If
ActiveCell.Offset(1, 0).Select
Next
End Sub

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

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

להלן דוגמה טובה יותר, באמצעות מערך. ראשית, בואו ניצור את המערך.

Sub Test1()
Dim x As Integer
intNumRows = Range('A2', Range('A2').End(xldown)).Rows.Count
Range('A2').Select
For x = 1 To intNumRows
arrMyArray(x-1) = Range('A' & str(x)).value)
ActiveCell.Offset(1, 0).Select
Next
End Sub

ה x-1 בשביל להצביע על רכיב המערך יש צורך רק מכיוון שלולאת ה- For מתחילה מ- 1. רכיבי מערך צריכים להתחיל ב -0.

עכשיו שיש לך את המערך פשוט מאוד לעבד את התוכן.

Sub TempCalc()
For x = 0 To UBound(arrMyArray)
arrMyTemps(y) = arrMyArray(x) * 32 - 100
Next
End Sub

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

4. שימוש בהפניות רבות מדי

בין אם אתה מתכנת ב- Visual Basic או VBA מן המניין, יהיה עליך לכלול 'הפניות' כדי לגשת לתכונות מסוימות.

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

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

עליך לבדוק רשימה זו מכיוון שהפניות מיותרות עלולות לבזבז משאבי מערכת. אם אינך משתמש במניפולציה של קובצי XML, מדוע שתשאיר את ה- XML ​​של Microsoft נבחר? אם אינך מתקשר עם מסד נתונים, הסר את Microsoft DAO וכו '.

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

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

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

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

כיצד להכניס את אייפון 6 פלוס למצב שחזור

תכנות ב- Excel VBA

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

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

לַחֲלוֹק לַחֲלוֹק צִיוּץ אימייל האם כדאי לשדרג ל- Windows 11?

Windows עוצב מחדש. אבל האם זה מספיק כדי לשכנע אותך לעבור מ- Windows 10 ל- Windows 11?

קרא הבא
נושאים קשורים
  • פִּריוֹן
  • תִכנוּת
  • תִכנוּת
  • תכנות Visual Basic
  • Microsoft Excel
על הסופר אנתוני גרנט(פורסמו 40 מאמרים)

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

עוד מאת אנתוני גרנט

הירשם לניוזלטר שלנו

הצטרף לניוזלטר שלנו לקבלת טיפים, סקירות, ספרים אלקטרוניים בחינם ומבצעים בלעדיים!

לחצו כאן להרשמה