As You may know, in general in programming to return a result from function there is **Return** statement. Even Visual Basic has it. Unfortunately there is no such thing in VBA. In this article I’m going to show You how to return a result from VBA function.

## Let’s start with function

For the purpose of this article I’ve created **functionModulo**, which is very similar to the **Mod** function.

```
Function functionModulo(x As Integer, y As Integer) As Boolean
Dim divisionRest As Double, divisionRestStatus As Integer
Let divisionRest = x / y - Fix(x / y)
If divisionRest > 0 Then
divisionRestStatus = 0
Else
divisionRestStatus = 1
End If
If divisionRestStatus = 1 Then
functionModulo = True
Else
functionModulo = False
End If
End Function
```

This function allows You to check if there is a divisibility between two numbers. If there is a rest from division the function returns **False**, if there is no any – function returns **True**.

So to describe the work of this function, I was using **return** word. But not as a statement in code. To return the result in VBA function You need to use the function name itself and put it a value.

`functionModulo = True`

Unfortunately the function not stops there and exits. It just go further.

## As close as possible

I decided to modify this function to make it as similar to **Return** statement schema as possible.

So first of all I cut it a little bit.

```
Function functionModulo(x As Integer, y As Integer) As Boolean
Dim divisionRest As Double
Let divisionRest = x / y - Fix(x / y)
If divisionRest > 0 Then
functionModulo = False
Else
functionModulo = True
End If
End Function
```

Then I wanted to have the same effect after returning the result from function as **Return** statement brings.

```
Function functionModulo(x As Integer, y As Integer) As Boolean
Dim divisionRest As Double
Let divisionRest = x / y - Fix(x / y)
If divisionRest > 0 Then functionModulo = False: Exit Function
If divisionRest = 0 Then functionModulo = True
End Function
```

That’s why after returning the value I added **Exit Function**.

`If divisionRest > 0 Then functionModulo = False: Exit Function`

I was almost done, but also figured out that we can only check for valid values. This means that I could set **False** value at the beginning as default. One conditional less in code. Cleaner the code.

```
Function functionModulo(x As Integer, y As Integer) As Boolean
functionModulo = False
Dim divisionRest As Double: Let divisionRest = x / y - Fix(x / y)
If divisionRest = 0 Then functionModulo = True
End Function
```

Having nothing after the conditional for **True** value I decided to erase **Exit Function** statement. In this case it is not needed, but in general it is really good approach to simulate **Return** statement as from other programming languages.

## To sum up

To avoid unnecessary conditionals put the default value at the beginning of the function. You can also do that in the end of the code, only if You simulate the **Return** statement in VBA – pass the result in the function name and **Exit Function** just right after that line.