לולאות DO - להריץ את הקוד עד שתנאי מסוים מתקיים.
לולאות DO - להריץ את הקוד עד שתנאי מסוים מתקיים.
לולאות DO - להריץ את הקוד עד שתנאי מסוים מתקיים.
Photo by Flavio~

שלום וברוכים הבאים לשיעור 12 בקורס מאקרו VBA באקסל.

אחרי שלמדנו על לולאות FOR

שיודעות לבצע את אותו קוד מספר קבוע

של פעמים.

נלמד השיעור הזה, על לולאות מסוג חדש

שיודעות לבצע קטע קוד עד שמשהו יקרה

או, כל עוד משהו לא קורה.

לולאות כאלו, מתאימות להרבה מאוד מצבים.

בואו ניקח דוגמא פשוטה, מאוד נפוצה באקסל.

יש לנו טבלה.

ואנחנו מעוניינים לבנות מאקרו ש-“רץ” על שורות הטבלה

ונעצר, כאשר הטבלה נגמרת.

הטבלה - מתעדכנת כל הזמן, ומספר השורות

אינו קבוע ואינו ידוע מראש.

מספר בלתי ידוע של מדרגות עד ליעד... זה המקום ללולאת DO
מספר בלתי ידוע של מדרגות עד ליעד... זה המקום ללולאת DO
מספר בלתי ידוע של מדרגות עד ליעד… זה המקום ללולאת DO

 איך נבנה מאקרו כזה ?

בדיוק עבור מקרים כאלו מתאימה לולאת Do.

(הערה : יש אומנם שיטות למצוא את התא האחרון שאינו ריק מלמטה, אבל לשיטה זו יש חסרונות אחרים, ולכן נשתמש בלולאה).

לולאת Do  - צורת הכתיבה

ללולאת Do יש 2 צורות אפשריות :

Do
הקוד שלך כאן...
Loop Until תנאי מסוים

או בצורה אחרת :

Do While תנאי מסוים
הקוד שלך כאן
Loop

הצורה הראשונה - מריצה את הקוד , עד שהתנאי

שרשמנו אחרי המילה UNTIL יתקיים.

ואפשר לראות לפי המבנה של הלולאה

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

כי המילה UNTIL נמצאת בסופה.

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

הראשונה שהלולאה בוצעה.

הצורה השניה של DO עובדת שונה

בתחילה נבדק הכלל

ואם הוא מתקיים, הלולאה מריצה את הקוד.

כלומר , יכולים להיות מצבים שבהם

הלולאה לא תרוץ אפילו פעם אחת.

כיוון שאם הכלל לא מתקיים כלל,

ריצת התוכנית תדלג על הלולאה

ותמשיך לשורות הקוד הבאות.

דוגמא ללולאת DO ב-VBA

אני אדגים עכשיו את הנושא עליו דיברנו

בתחילת השיעור - לרוץ על טבלה

עד שנגמרות השורות.

התנאי שלנו - הוא שהשורה אינה ריקה.

Sub ExampleDo()

dim I

I=1

Do While Range("A" & I).value<> ""

I=I+1

Loop

Range("B1").value = "נמצאו " & I-1 & " שורות בעמודה A "

End Sub

הסבר קוד ה- VBA

בתחילה במשפט DIM הגדרנו משתנה בשם I.

לאחר מכן, הצבנו במשתנה I את המספר 1, שזוהי השורה ממנה נתחיל.

ואז התחלנו עם לולאה,

שהתנאי שלה הוא “כל עוד התא בעמודה A שונה מ-כלום”.

כלום - מסומן באמצעות 2 פעמים סימן מרכאות.

בתוך הלולאה לא עשינו כלום, חוץ מאשר להוסיף להגדיל את I

באחד בכל ריצה.

הלולאה נעצרה ברגע שנגמרו השורות המלאות בעמודה A

ואז השורה האחרונה, כותבת בתא B1

כמה שורות מלאות מצאנו.

הגיע זמן ליישם - לולאות DO

אתם מוזמנים לקחת את הלולאות, לנושאים המעסיקים אתכם

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

את העבודה שלכם.

בהצלחה!