شما قبلاً می دانید که می توانید از برنامه های فرعی در ماکروهای خود استفاده کنید. VBA همچنین به شما اجازه می دهد تا توابعی را تعریف کنید که می توانند در ماکروهای خود استفاده شوند. تفاوت بین توابع و زیر روال ها در این است که توابع می توانند مقادیر را برگردانند، در حالی که زیر روال ها نمی توانند. ماکروهای VBA زیر را در نظر بگیرید:
Sub Macro1()
TooMany = TestFunc
If TooMany Then StatusBar = "Too many pages"
End Sub
Function TestFunc()
TestFunc = False
If Selection.Inforamtion(wdNumberOfPagesInDocument) > 10 Then
TestFunc = True
End If
End Function
در این کد دو ماکرو وجود دارد. یکی تابع (TestFunc) و دیگری یک ماکرو (Macro1) است که برای فراخوانی تابع استفاده می شود. هنگامی که تابع اجرا می شود، می تواند هر کاری را که در یک ماکرو معمولی انجام می شود انجام دهد. در این حالت، آزمایشی را انجام می دهد که در نتیجه متغیر TestFunc روی True یا False تنظیم می شود. به یاد داشته باشید که نام این متغیر با نام تابع یکسان است. این مقداری است که توسط تابع به هر برنامه ای که آن را نامیده است برمی گرداند.
که ما را به ماکرو Macro1 می رساند. به یاد داشته باشید که تابع TestFunc می تواند در سمت راست علامت مساوی ظاهر شود. این باعث می شود توابع بسیار قدرتمند و بخش مهمی از هر برنامه ای باشند. VBA تابع را اجرا می کند و هر مقداری را که مناسب است از آن تابع برمی گرداند و آن را به متغیر سمت چپ علامت مساوی (TooMany) اختصاص می دهد. سپس برنامه بر اساس مقدار بازگشتی عمل می کند.