Const Lib = """c:\windows\system\user32.dll"""
Option Base 1
Private Function Multiply2(N1 As Double, N2 As Double) As Double
Multiply2 = N1 * N2
End Function
Private Function Multiply3(N1 As Double, N2 As Double, N3 As Double) As Double
Multiply3 = N1 * N2 * N3
End Function
Private Function Divide(N1 As Double, N2 As Double) As Double
Divide = N1 / N2
End Function
Sub Auto_open()
Register "DIVIDE", 3, "Numerator,Divisor", 1, "My Functions1", "Divides two numbers", """Numerator"",""Divisor """, "CharNextA"
Register "MULTIPLY2", 3, "Number1,Number2", 1, "My Functions1", "Multiplies two numbers", """First number"",""Second number """, "CharB"
Register "MULTIPLY3", 4, "Number1,Number2,Number3", 1, "My Functions2", "Multiplies three numbers", """First number"",""Second number"",""Third number """, "CharPrevA"
End Sub
Sub Register(FunctionName As String, NbArgs As Integer, Args As String, MacroType As Integer, Category As String, Descr As String, DescrArgs As String, FLib As String)
Application.ExecuteExcel4Macro "REGISTER(" & Lib & ",""" & FLib & """,""" & String(NbArgs, "P") & """,""" & FunctionName & """,""" & Args & """," & MacroType & ",""" & Category & """,,,""" & Descr & """," & DescrArgs & ")"
End Sub
Sub Auto_close()
Dim FName, FLib
Dim i As Integer
FName = Array("DIVIDE", "MULTIPLY2", "MULTIPLY3")
FLib = Array("CharPrevA", "CharNextA")
For i = 1 To 3
With Application
.ExecuteExcel4Macro "UNREGISTER(" & FName(i) & ")"
.ExecuteExcel4Macro "REGISTER(" & Lib & ",""CharPrevA"",""P"",""" & FName(i) & """,,0)"
.ExecuteExcel4Macro "UNREGISTER(" & FName(i) & ")"
End With
Next
End Sub