שימוש ב-INPUT BOX בתוך VBA

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

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

השיעור נלמד פקודה חדשה

וגם נסכם באמצעות דוגמאות

את מה שלמדנו עד כה.

אני מאמין גדול בדוגמאות.

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

ללמוד דברים חדשים.

והיות והגענו לנקודה בחומר שבה צריך קצת

לעשות סדר ולהראות איך

הדברים שלמדנו משתלבים יחד

אז ננסה ליישם לפחות חלק ממה שלמדנו

בדוגמא מסכמת.

איך קולטים מידע מהמשתמש כשמשתמשים במאקרו ?

המשתמש - הוא אותו  יצור מוזר 

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

פעמים רבות - אנחנו בעצמנו המשתמש הבלעדי

של המאקרו שאנו יוצרים.

אך לפעמים, אנחנו יוצרים מאקרו

שהולכים להשתמש בו אנשים אחרים נוספים.

במשרד / בחברה / לקוחות וכדומה.

ואחת השאלות הגדולות היא

מה עושים - כשרוצים שהמאקרו יהיה חכם יותר

ויתחשב בנתונים “מהשטח”

איך גורמים למאקרו לקלוט נתונים מהמשתמש ?

ובכן - לפחות צורה אחת כבר ראינו -

כשרצינו להתבסס על מידע מתא מסוים

למדנו שיטה בשיעורים הקודמים

איך לגשת אל תאים ב Excel מתוך VBA

באמצעות הפקודה range.

אני מזכיר בקצרה  - אם נרצה לגשת לערך של התא b5

אז נשתמש בפקודה range(“b5”) כדי לגשת לערך בתא.

אפשרות נוספת לקלוט מידע מהמשתמש היא ,

פשוט - לשאול אותו.

הפקודה שאנחנו נלמד כעת נקראת InputBox

והיא עושה דבר פשוט מאוד - מקפיצה על המסך

“תיבת שאלה” , זה הכל.

הערך שהמשתמש יענה על השאלה שנשאל אותו

יכנס לאן שנגיד.

בדרך כלל - אל תוך משתנה.

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

איך כותבים פקודת InputBox ?

הפקודה נכתבת בצורה הבאה :

x = InputBox("השאלה צריכה להיכתב כאן בתוך המרכאות ?")

ומה שיקרה בפועל הוא

שברגע שהמאקרו ירוץ

והמחשב יגיע לפקודה הזו

הוא יציג מסך עם שאלה למשתמש

והתשובה של המשתמש

תיכנס אל תוך המשתנה , בדוגמא שלנו x.

בוידאו - אני מדגים כמה שימושים ל-InputBox.

אני ממליץ בחום לראות את הוידאו.

כיצד להשתמש ב-IF כדי לבדוק את התשובה של המשתמש

ברוב השאלות

אנחנו מצפים לתשובה מסוג מסויים

למשל יש שאלות שבהן אנחנו מניחים שהתשובה תהיה מספר שלם

ויש שאלות שבהן אנחנו מניחים שהתשובה תהיה טקסט 

אני מראה כאן צורה בסיסית לבדוק

האם הערך שהמשתמש הקליד הוא מספר

היות וזה המצב הנפוץ בדרך כלל.

if not isnumeric(x) then

msgbox "תשובה שגויה"

exit sub

end if

מה בעצם כתבנו פה ?

הפקודה if בודקת האם הערך שבמשתנה הוא אינו מספר

אם באמת הערך הוא לא מספר

אנחנו עושים 2 דברים

1. אנחנו מודיעים למשתמש שהוא שגה - באמצעות הפקודה MsgBox

2. אנחנו מפסיקים את ריצת המאקרו , - באמצעות הפקודה Exit Sub

ודוגמא - אפשר לראות כמובן בוידאו.