קורסי מיקרוסופט לארגונים – כרמל הדרכה

Microsoft Partner

קורס אקסל VBA – לולאות

תוכן עניינים

Collection הוא אוסף של אובייקטים.

לולאות מאפשרות לחזור על אותו רצף של פקודות מספר פעמים. ישנם שני סוגים של לולאות:

  • For Loops – חזרה על רצף פקודות מספר מוגדר של פעמים:
    • For-Next – מספר החזרות נקבע מראש וניתן לקבוע גם את האינטרוולים בין החזרות.
    • For-Each – לולאות המבוצעות על Collections (ר' עמ' 62). מספר החזרות תלוי במספר האובייקטים באוסף.
  • Do Loops – חזרה על רצף פקודות כל עוד מתקיים תנאי מסוים, כלומר, מספר פעמים לא ידוע מראש:
    • Do-While – לולאה שתמשיך לרוץ ולבצע חזרות כל עוד תנאי מוגדר מתקיים ותפסיק כאשר הוא לא יתקיים.
    • Do-Until – לולאה שתמשיך לרוץ ולבצע חזרות כל עוד תנאי מוגדר לא מתקיים ותפסיק כאשר הוא יתקיים.

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

לולאת For-Next

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

For RunsCounter = {Start Number} To {End Number}

Command

Command

Command

Next RunsCounter

RunsCounter – דוגמה למשתנה שסופר את הריצות, עבורו יש להגדיר את המספרים ביניהם ירוץ הקוד (Start Number ו-End Number).

הדוגמה הבאה מציגה לולאה המוגדרת לחזור חמש פעמים:

תוצאת ריצת הקוד בגיליון:

הדוגמה הבאה מציגה קוד אשר בונה בגיליון את לוח הכפל עד 5, באמצעות לולאת ForNext:

תוצאת ריצת הקוד בגיליון:

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

הדוגמה הבאה מציגה לולאה של מונה הצועד מ-1 ועד 20 בקפיצות של 2:

תוצאת ריצת הקוד בגיליון:

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

תוצאת ריצת הקוד בגיליון:

ניתן להריץ את המונה גם לאחור. הדוגמה הבאה מציגה לולאה של מונה הצועד מ-50 ועד 1 בקפיצות של 3:

תוצאת ריצת הקוד בגיליון:

לולאת For-Each

כאמור, גם לולאת ForEach מבצעת מספר מוגדר של חזרות, אך ההגדרה הזו היא לא מספרית, אלא נובעת מכמות האובייקטים או הפריטים ב- Collection(ר' עמ' 62). כלומר, לולאת ForEach רצה על כל האובייקטים או הפריטים באוסף ומבצעת פעולות עבור כל אחד מהם. כזכור, האובייקטים או הפריטים באוסף מסודרים ברצף כרונולוגי, בהתאם לסדר זה תרוץ הלולאה על האוסף.

להלן המבנה התחבירי של הלולאה:

For Each {Object} in {Collection}

Command

Command

Command

Next

הדוגמה הבאה מציגה את יצירת לוח הכפל, הפעם באמצעות ForEach במקום ForNext (כפי שבוצע בסעיף הקודם):

  • ניתן לראות כי האוסף עליו רצה הלולאה היא של Range בין התאים A1:E5.
  • TA– משתנה עזר שמציין את האובייקט הנוכחי (תא בטווח שבין A1:A5) בו נמצאת הלולאה בכל חזרה.
  • הפקודה המתבצעת בכל חזרה, היא הזנה לתוך ערך התא הנוכחי את המכפלה של מספר השורה ומספר העמודה של אותו התא:
    • Row – מאפיין השייך לאובייקט מסוג Cell (תא) המציין את מספר השורה.
    • Column – מאפיין השייך לאובייקט מסוג Cell (תא) המציין את מספר העמודה.

תוצאת ריצת הקוד בגיליון:

באמצעות היכולת לרוץ על כל האובייקטים באוסף נוכל לבצע מספר פעולות חשובות באופן מהיר, קצר ויעיל. למשל: מילוי מהיר ואוטומטי של פריטים בתוך אוסף, יצירת רשימת מאפיינים מותאמת אישית עבור כל אובייקט מותאם אישית (ר' עמ' 65), ריצה על טווח נתונים במסד נתונים גדול ולבדוק כל תא ו/או לשנות את המאפיינים שלו בריצה אוטומטית ומהירה.

היתרונות העיקריים של לולאת ForEach על פני לולאות אחרות:

  • ForEach מתאימה לריצה על אובייקטים.
  • זמן הריצה של הקוד קצר בהרבה מאשר לולאת ForNext.

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

להלן הקוד ליצירת האוסף:

  • ניתן להבחין בשורת הקוד Set {Collection} = Nothing. פקודה זו מנקה אוסף מכל הפריטים שבו.
  • רשימת הפריטים בגיליון היא אוסף הנמצא בטווח תאים. עבור כל אובייקט באוסף Range שבין תא A1 בגיליון ועד התא האחרון ברשימה, הוא Range("A1").End(xlDown), מתבצעות חזרות הלולאה.
  • VegItem– משתנה עזר שמציין את האובייקט הנוכחי בו נמצאת הלולאה בכל חזרה.
  • בכל חזרה נכנס הערך שבתוך התא כפריט חדש לתוך אוסף אחר הוא VeggieColl.

להלן תצוגת חלונית Locals לאחר ריצת הקוד:

לולאות Do-Loop

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

להלן המבנה התחבירי של הלולאות:

Do While {Condition}                                                              Do Until {Condition}

Command                                                                               Command

Command                                                                               Command

Command                                                                               Command

Loop                                                                                       Loop

הדוגמה הבאה מציגה טבלה של מוצרים (מק"ט, שם ומחיר), שיש להוזיל ב-2%:

להלן הקוד עם לולאת DoWhile שעוברת בכל תא בטבלה שיש בו מחיר ומוזילה אותו ב-2% (לכדי 0.98 מתוך המחיר):

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

תוצאת ריצת הקוד בגיליון:

הדוגמה הבאה מציגה את הקוד עבור אותה הפעולה עם לולאת DoUntil:

ניתן לראות כי ההבדל בתנאי הוא באופרטור: במקום כל עוד (While) ערך התא הפעיל שונה מריק (" "), התנאי הוא עד ((Until שערך התא הפעיל שווה לריק.

הדוגמה הבאה מציגה ציונים של סטודנטים במבחן, שנבחנו במועדים A ו-B:

להלן קוד להוספת 7 נקודות לציוני כל הסטודנטים שנבחנו במועד A בלבד:

תוצאת ריצת הקוד בגיליון:

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

בעלי ניסיון הדרכתי ומעשי עשיר

מגיעים אליכם

אתם קובעים את מיקום הקורס והמועד

תאוריה ותרגול

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

תוכנית מותאמת

התאמה מלאה ואישית לדרישות ולצרכי הארגון

למדו מהמומחים שלנו
טיפ לשימוש ב- Excel VBA
קורס אקסל VBA – קבצים Excel VBA

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

קרא עוד »
קורס אקסל VBA
קורס אקסל VBA – מרכז יחסי האמון ורמות אבטחה

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

קרא עוד »
קורס אקסל VBA
קורס אקסל VBA – הגנה ונעילה

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

קרא עוד »
קורס אקסל VBA
קורס אקסל VBA – אירועים

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

קרא עוד »
קורס אקסל VBA
קורס אקסל VBA – מודול עריכה Class Module

Class Module הוא מודול עריכה נוסף ב-VBA (בשונה מהמודול הרגיל לעריכת פקודות שנידון עד כה), המשמש ליצירת אובייקט מסוג חדש. Collection של פריטים ניתן ליצור במודול רגיל, אולם ליצירה של אובייקטים מותאמים אישית חדשים של ממש ואיסופם אל תוך Collection מותאם אישית, יש לפתוח Class Module חדש.

קרא עוד »

מתחיל ב-06.06.2024

1 מפגש

16:00 - 09:00
Azure AI Fundamentals
דילוג לתוכן