ברוכים הבאים לשיעור ה-11 בקורס ה-VBA מאקרו ב- Excel.
קודם כל ברכותי!
אם התמדתם עד כאן, מגיע לכם כל הכבוד עצום!
הגעתם כבר לרמה יפה,
ואני מקווה שאתם משלבים את מה שלמדתם
עם מאקרויים שאתם מקליטים בעבודה
ובבית לצרכים האישיים שלכם
ורואים ברכה בעמלכם!
השיעור הפעם מתעסק בנושא
שלמעשה דומה מאוד ל-IF שלמדנו בעבר
תנאי למצבים של אפשרויות רבות - Select Case
במקרה שבו יש לנו יותר מ-2/3 אפשרויות
בתוך תנאי
זה מתחיל להיות מאוד טרחני ומייגע
לכתוב את זה בתוך תנאי IF.
דוגמא בפועל - IF לעומת SELECT CASE
אני בכוונה אדגים על דוגמא מאוד פשוטה
וכל אחד יקח את זה למקום שלו
נניח שאנחנו רצים על רשימת טלפונים קווים של לקוחות
ורוצים לרשום לצד כל אחד מהם
באיזה איזור בארץ הוא מתגורר.
באמצעות IF היינו עושים זאת כך :
if str = "03" then
...
elseif str="04" then
....
elseif str="08" then
...
וכו’ וכו'
אבל לעומת זאת, ב- Select case זה יראה כך :
select case str
case "03"
....
case "04"
...
case "08"
וכן הלאה
מתי משתמשים ב-IF ומתי ב-SELECT CASE
ובכן, אין תשובת “בית ספר”
כשאתם יוצרים מאקרו
אחד השיקולים החשובים
הוא שיהיה קל לתחזק אותו בעתיד
ואם הוא יהיה כתוב בצורה ברורה
אז - יהיה קל לתחזק אותו.
ולכן בכל מקרה שבו יש יותר מ-2 או 3 אפשרויות
כדאי, אם ניתן , להשתמש ב-SELECT CASE ולא ב-IF.
שימוש ב- Select Case עם תנאי של “זה או זה " (OR)
במקרים בהם, אנחנו רוצים שאותן פקודות
יבוצעו עבור כמה ערכים
אפשר לכתוב זאת כך
select case CustomerAge
Case 20,30
הקוד שלך כאן....
case 40,50
הקוד שלך כאן
End Select
שימוש ב- Select case עם טווחים
לפעמים, אנחנו צריכים להגדיר טווח מסוים
ולא רק ערך ספציפי
יש אפשרות גם לכתוב טווחים, ואפילו טווחים של תאריכים
ויותר מכך - טווח שמחושב על ידי פונקציות אחרות.
להלן דוגמא של חישוב לפי סוגי הפנסיות השונות
בשוק הישראלי :
Select Case JoinDate
Case CDate("1905-01-01") To CDate("1989-12-31")
הקוד שלך כאן
Case CDate("1990-01-01") To CDate("1991-12-31")
הקוד שלך כאן
Case CDate("1992-01-01") To CDate("2001-06-30")
הקוד שלך כאן
Case CDate("2001-07-01") To CDate("2003-12-31")
הקוד שלך כאן
Case CDate("2004-01-01") To CDate("2012-12-31")
הקוד שלך כאן
Case Else
הקוד שלך כאן
End Select
בהצלחה!