התקשרו אלינו: 052-2928949
ימים א'-ה' בין השעות 9:00-17:00

התקשרו אלינו: 052-2928949 א-ה 9:00-17:00

UDF – פונקציה מותאמת אישית ב VBA

VBA Tip

UDF – פונקציה מותאמת אישית ב VBA

VBA Tip

כתיבת פונקציות מותאמות אישית – UDF

באמצעות תכנות ב-VBA, אפשר לפתח פונקציות לשימוש מתוך תוכנת Microsoft Excel.
תפקידה של הפונקציה הוא להחזיר ערך, ויש לרשום אותה ברמת המודול, ולא ברמת הגיליון.
אם נרצה לשמור את הפונקציות, כך שיהיו זמינות לכל חוברות העבודה, ולא רק לחוברת זו, עלינו לשמור אותן בחוברת Personal.xlsb.
שימו לב, החוברת Personal.xlsb אינה קיימת, כל עוד לא הקלטנו מאקרו ושמרנו אותו בתוכה.
לאחר פעולה חד פעמית זו, נוכל למחוק את המאקרו שהקלטנו ולשמור בה כל פונקציה שנרצה שתהיה זמינה לכל חוברות העבודה.
פונקציה מותאמת אישית נקראת גם UDF, שהן ראשי התיבות של User Defined Function.

 

תחביר:

Function function name (x, y)
     פקודות לביצוע
End Function

הסבר:

עד כה כתבנו קודים שמתחילים במילה Sub. כתיבת פונקציות מתחילה במילה Function ומסתיימת ב- End Function.
בתוך הסוגריים יש להזין את מספר הארגומנטים האפשריים.
הדוגמה הבאה מציגה פיתוח פונקציה אשר מבצעת פעולת חילוק בין שני משתנים:

הסבר:
הכרזנו בפני עורך ה-VBA כי אנו עומדים לכתוב פונקציה (Function) בשם Dev, אשר לה שני ארגומנטים (Num1 ו- Num2).
לאחר מכן הגדרנו את הפעולה אשר תתבצע על שני המשתנים הנ"ל.
שימו לב, השם הניתן לפונקציה חייב להיות זהה לשם המשתנה אליו תוזן תוצאת הפעולה (וזאת בניגוד לשגרות בהן שמות המשתנים חייבים להיות שונים משם השגרה עצמה).

שמירת מקום לארגומנטים אופציונליים

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

Function plus (a, b)
    plus = a + b
End Function

יאפשר לנו שימוש בשני ארגומנטים בלבד
ואילו הקוד הבא:

Function plus2 (a, b, c)
    plus2 = a + b + c
End Function

יחייב אותנו להשתמש בשלושה ארגומנטים.

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

 

Function plus (a, b, Optional c)
    If IsMissing(c) Then
        c = 0
    End If
plus = a + b + c
End Function

כיצד נפעיל את הפונקציה מתוך חוברת עבודה של Microsoft Excel?

קיימות שתי דרכים להפעיל את הפונקציה:

  1. על ידי 'הוספת פונקציה':
    בחרו בכרטיסיית 'נוסחאות''הוספת פונקציה' (‘Formulas’> ’Insert Function’)
  2. בחרו בקטגוריה 'מוגדר על ידי המשתמש' (‘User Defined’)
  3. סמנו את הפונקציה ולחצו על 'אישור' (‘OK’)
  4. יפתח החלון הבא:
  5. בחלון זה הזינו את ההפניות או הערכים הרלוונטיים.
  6. לסיום לחצו על 'אישור' (‘OK’)

על ידי הקלדה ישירה של שם הפונקציה בגיליון:

שימו לב, במידה שתזינו בפרמטר b (הפרמטר השני שהפונקציה מקבלת) את הערך 0, תקבלו שגיאת #VALUE
(ולא את השגיאה DIV/0# אשר מתקבלת מחלוקה ב-0 בגיליון העבודה עצמו):

טיפים
>>
כדי להציג את הארגומנטים של הפונקציה, בעת ההקלדה בגיליון, הקלידו את הפונקציה, ואז לחצו על Ctrl+Shift+A
>> לא ניתן לבדוק פונקציות באמצעות הרצתן ישירות מתוך עורך ה-VBA.
כדי לעקוף מגבלה זו, ניתן להוסיף נקודת עצירה בתחילת הפונקציה ולאחר מכן להפעיל אותה מתוך חוברת העבודה.

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

רוצים לדעת איך כותבים פונקציה מותאמת אישית בגיליון עצמו, באמצעות LAMBDA, ללא שימוש ב VBA? לחצו כאן

דילוג לתוכן