ב- VB ישנם שני סוגים של שגרות. שגרת (Sub procedure) Sub ושגרת Function (Function procedure).
כאשר מתכנתים ב- ,VB משתמשים כל הזמן בפרוצדורות ופונקציות אף ללא ידיעתנו. למעשה, כל פקודה ב- VB חייבת להיות פרוצדורה או פונקציה גם "שיטות" (Methods) של פקדים ואובייקטים
פונקציות הן סוג מיוחד של פרוצדורות, שהמיוחד בהן הוא העובדה שהן מחזירות ערך למשתמש. ב- VB ישנן פונקציות מוכללות (פנימיות) רבות, בעזרתן אנו מבצעים חישובים
לעיתים אנו צריכים להגדיר פונקציות משלנו, שמבצעות פעולות וחישובים, ומחזירות תוצאה בה אנו יכולים להשתמש.
תחביר של פונקציה:
([ארגומנטים]) [שם הפונקציה] function
[משפטי תכנות]
end function
הארגומנטים הם רשימה של ארגומנטים אשר בהם משתמשים במהלך משפטי הפונקציה. את הארגומנטים מפרידים בפסיקים וניתן לקבוע את סוגם לפי המילה .as
אם לשגרת Function אין ארגומנטים, המשפט Function חייב לכלול זוג סוגריים ריקים (). שגרת Function מחזירה ערך ע"י הצבת ערך לשמה באחד או יותר מהמשפטים של השגרה. טיפוס הערך המוחזר של הפונקציה הוא תמיד Variant.
בדוגמא הבאה, השגרה (הפונקציה) Celsius מבצעת המרה ממעלות פרנהייט למעלות צלזיוס. כאשר הפונקציה נקראת משגרת Sub בשם ConvertTemp, משתנה המכיל את ערך הארגומנט מועבר אל הפונקציה. תוצאת החישוב מוחזרת אל השגרה הקוראת ומוצגת בתיבת פלט (message box).
פרוצדורות הן קטעי קוד המבצעים פעולה מסוימת. מטרת הפרוצדורה לאפשר למתכנת לחזור פעמים רבות על פעולה מסוימת, בלי שייאלץ לכתוב את אותו הקוד שוב ושוב.
שגרת Sub היא סדרה של משפטים ב- VB, הפותחת במשפט Sub ומסיימת במשפט End Sub, מבצעת פעולות אך אינה מחזירה ערך. שגרת Sub יכולה לקבל ארגומנטים (קבועים, משתנים, או ביטויים המועברים ע"י קריאה של שגרה). אם לשגרת Sub אין ארגומנטים, המשפט Sub חייב לכלול זוג סוגריים ריקים ().
שגרת ה- Sub הבאה משתמשת בשתי פונקציות פנימיות או מובנות, של MsgBox ו- InputBox, בכדי לבקש ממשתמש למסור אינפורמציה. השגרה מציגה אח"כ את תוצאות החישוב בהתבסס על מידע זה. החישוב מבוצע ע"י שגרת Function.
כל פיסת נתונים מועברת אל השגרות שלך בעזרת ארגומנט (argument). ארגומנטים משמשים בתפקיד של "שומרי מקום" (placeholders) של הנתונים שאתה רוצה להעביר אל השגרה שלך. אתה יכול לתת לארגומנטים שלך כל שם שהוא חוקי לשמש כשם של משתנה. כאשר אתה יוצר שגרה בעזרת המשפט Sub או בעזרת המשפט Function, חייבים להיכלל סוגריים לאחר השם של השגרה. כל הארגומנטים צריכים להיות ממוקמים בתוך הסוגריים הללו, מופרדים ע"י פסיקים. לדוגמא, בדוגמא הבאה, המשתנה fDegrees משמש כשומר מקום (placeholder) עבור הערך המועבר אל הפונקציה Celsius למטרת המרה:
בכדי לקבל נתון מתוך שגרה, אתה חייב להשתמש בפונקציה (Function procedure). זכור, שגרת Function יכולה להחזיר ערך, שגרת Sub אינה יכולה.
פונקציה בתוך הקוד שלך חייבת תמיד להיות בצד הימני של השמה למשתנה או בתוך ביטוי. לדוגמא:
בכדי לקרוא לשגרת Sub מתוך שגרה אחרת, אתה יכול לכתוב את שם השגרה בלבד ביחד עם הערכים לכל הארגומנטים הנדרשים, מופרדים כל אחד ע"י פסיק. המשפט Call אינו נדרש, אבל אם אתה משתמש בו, עליך לכתוב את כל הארגומנטים בתוך סוגריים.
הדוגמא הבאה מציגה שתי קריאות לשגרה myProc. קריאה אחת משתמשת במשפט Call בקוד, הקריאה הנוספת אינה משתמשת בו. שתי הקריאות מבצעות בדיוק את אותו הדבר.
שים לב שהסוגריים מושמטים בקריאה שבה לא נעשה שימוש במשפט Call.