AddressOf Operator

Syntax

AddressOf [expr.]name

Group

Operator

Description

Return a delegate for the exprmacro/module's Sub or Function matching name.

A delegate's Sub or Function is called using the delegate's Invoke method.

NOTE: The AddressOf operator returns an object which holds a weak reference to the macro/module. If no other references to the macro/module exist then the macro/module reference is deleted and using the result of the AddressOf operator causes a run-time error.

Parameters

Parameters Description
expr This is a macro/module reference. If omitted then the current macro/module's reference (Me) is used.
name Return a delegate for this Sub or Function.

Example


Delegate Function OpType(ByVal v1 As Variant, ByVal v2 As Variant) As Variant
 
Sub Main
    Debug.Print DoOp(AddressOf Add,1,2) ' 3
    Debug.Print DoOp(AddressOf Subtract,1,2) '-1
End Sub
 
Function DoOp(ByVal op As OpType, _
              ByVal v1 As Variant, ByVal v2 As Variant) As Variant
    DoOp = op.Invoke(v1,v2)
End Function
 
Function Add(ByVal v1 As Variant, ByVal v2 As Variant) As Variant
    Add = v1+v2
End Function
 
Function Subtract(ByVal v1 As Variant, ByVal v2 As Variant) As Variant
    Subtract = v1-v2
End Function

See also

Delegate