User Defined Function in VBA

Excel VBA User Defined Function (UDF)

Microsoft serves us with many built-in functions to speed up the work in excel. However using VBA coding we can create our own functions and those functions are technically called “User-Defined Functions” (UDF). They are also called as “custom functions” in excel VBA.

Any formula which can be accessed from the worksheet with a piece of code is called as UDF. In simple terms, any formula which is not built-in but available in Excel is called User Defined Functions.


You are free to use this image on your website, templates etc, Please provide us with an attribution linkHow to Provide Attribution?Article Link to be Hyperlinked
For eg:
Source: User Defined Function in VBA (

How to Create User-Defined Functions?

Even though UDF is part of our module, they are not part of our regular Subroutine in VBASubroutine In VBASUB in VBA is a procedure which contains all the code which automatically gives the statement of end sub and the middle portion is used for coding. Sub statement can be both public and private and the name of the subprocedure is mandatory in more. This is called a Function Procedure in VBA. Like how we start the macro coding with the word SUB similarly, we need to start this by using the word “Function.” Sub procedure has start and End, similarly Function Procedure to has Start and End.

You can download this VBA User Defined Function Excel Template here – VBA User Defined Function Excel Template

Example #1 – Create a Simple UDF Sum Function

We will create our own SUM function in excelSUM Function In ExcelThe SUM function in excel adds the numerical values in a range of cells. It is categorized under the math and trigonometry function entered by typing “=SUM” followed by the values to be summed. The values can be numbers, cell references or more by adding up two numbers.

  • To start the coding, start the word “Function” in one of the modules.
VBA Function Return Example 1
  • Like how we name the macro similarly, we need to give a name to our Function as well. This name is used as a formula name.
VBA Function Return Example 1-1

Unlike subroutine, we cannot simply hit enter to create a procedure, but we need to mention arguments here.

For example, look at the below syntax of the worksheet function SUM.

SUM Formula.

Number 1, Number 2 are arguments of the function SUM.

  • Similarly, we need to mention our arguments.
User Defined Function in Excel VBA Example 1-2

Here I have declared the arguments as “x as Integer” and “y as Integer.” Since we add numerical value, we need to assign the data type as a numerical data type only.

After declaring the arguments, I have assigned the return type of the Integer too because the result given by the Function “OurSum” is also a numerical value.

  • Now inside the function, we need to mention the formula we are going to use. Here we need to use the function to start with.
User Defined Function in Excel VBA Example 1-3

We mentioned the formula name “OurSum” should add x and y.

  • Ok, save the code and go to the worksheet.
VBA Function Return Example 1-4
  • I have entered a few numbers here. Open equal sign and start typing OurSum. You can see the formula name appearing here.
VBA Function Return Example 1-5
  • Like how we select cells similarly select two cells separately.
User Defined Function in Excel VBA Example 1-6
  • After selecting two cells, hit the enter key to have results.
VBA Function Return Example 1-7

So it works exactly the same as our regular SUM function.

  • Ok, now I will change the numbers.
User Defined Function in Excel VBA Example 1-8
  • Now again, I will apply the function we have created.
VBA Function Return Example 1-9

Oh!!! We got error values except for the first cell.

You must be thinking about why we got an error.

If you observe the cell A2 and B2, we have values 48170 and 21732. Since we have assigned the data type as Integer, it cannot hold any number more than 32767. This is the reason we got the excel error as #NUM!.

Now I will add numbers that are less than 32767.

VBA Function Return Example 1-10

In the above image, all the numbers are integer numbers, i.e., less than 32767.

In the first cell, we got the results. But in the second cell, i.e., C2 cell, we got the error value as #VALUE!Error Value As #VALUE!#VALUE! Error in Excel represents that the reference cell the user has either entered an incorrect formula or used a wrong data type (mostly numerical data). Sometimes, it is difficult to identify the kind of mistake behind this more.

Even though both the numbers are less than 32767, we still got the error.

This is because we have declared the end result also as Integer.

User Defined Function in Excel VBA Example 1-11

So when we add 16000 and 17229, we will get a value like 33229, which is more than the integer data type limit of 32767. So the end result is an error value.

Example #2 – Create a Function to Test Logical Values

We will create one more function to test the logical values. We need a function that returns “Good” if the number is >=60, and we need the result as “Bad” if the number is <=50.

Step 1: Start the Function Procedure and give a name to the procedure.

User Defined Function in Excel VBA Step 1

Step 2: Give the argument as TestScore as Integer.

VBA Function Step 2

Step 3: Our end result should be either “Good” or “Bad,” so the result should be in String.

VBA Function Step 3

Step 4: First, we need to test whether the score is >=60 or not. Use IF condition to test.

VBA Function Step 4

Step 5: If the test score is >=60, we need the function to return the result as “Good.” So TestResult = “Good.”

If Condition

Step 6: If the test score is less than 60, then the function result should be “Bad.”

Else Condition

Ok, we are done.

  • Save the code and go to the worksheet.
Example 2 (Excel Data)

I have entered a few numbers here as a test score.

  • Apply the function we have created to arrive results.
Check TestResult
  • Select the cell and hit enter.
Logical Test Result

This is what UDF is all about.

Recommended Articles

This has been a guide to User Defined Function in VBA. Here we learn how to create a user-defined function (UDF) in VBA along with examples and a downloadable excel template. Below are some useful excel articles related to VBA –

  • 3 Courses
  • 12 Hands-on Projects
  • 43+ Hours
  • Full Lifetime Access
  • Certificate of Completion