שימוש ב-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
ודוגמא - אפשר לראות כמובן בוידאו.