For example, to create a module containing new mathematical functions, you can use in-cell formulas:

  1. In Excel, open a workbook and choose Tools → Macro → Visual Basic Editor to start programming.

  2. In the Visual Basic Editor, choose Insert → Module. Visual Basic adds a new module to the Project window and displays the new, empty module in an Edit window.

  3. Select Name in the module’s Properties window and type Math to rename the module.

  4. Add the following code by typing in the module’s Edit window:

        ' Math module.
        Public Function Inverse(x As Double) As Double
            If x = 0 Then Inverse = 0 Else Inverse = 1 / x
        End Function
        Public Function CubeRoot(x As Double) As Double
            If x < 0 Then CubeRoot = 0 Else CubeRoot = x ^ (1 / 3)
        End Function

To use these new functions from Excel, include them in a formula as shown in Figure 5-1.

Use modules to create user-defined functions

Figure 5-1. Use modules to create user-defined functions

To use these functions from Visual Basic, include them in an expression as shown here:

    Sub TestMathFunctions( )
        Dim result As Double, value As Double, str As String
        value = 42
        result = Inverse(value)
        str = "The inverse of " & value & " is " & result
        result = CubeRoot(value)
        str = str & " and the cube root is " & result
        MsgBox str, , "Test Math Functions"
    End Sub

Here, result = Inverse(value) calculates the inverse and assigns that number to result. Alternately, I could write that as Math.Inverse(value); including ...

Get Programming Excel with VBA and .NET now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.