Skip to main content

Friend keyword

Table of contents
  1. Syntax
  2. Remarks
  3. Examples

Modifies the definition of a procedure in a form module or class module to make the procedure callable from modules that are outside the class, but part of the project within which the class is defined. Friend procedures cannot be used in standard modules.


[ Private | Friend | Public ] [ Static ] [ Sub | Function | Property ] procedurename

The required procedurename is the name of the procedure to be made visible throughout the project, but not visible to controllers of the class.


Public procedures in a class can be called from anywhere, even by controllers of instances of the class. Declaring a procedure Private prevents controllers of the object from calling the procedure, but also prevents the procedure from being called from within the project in which the class itself is defined.

Friend makes the procedure visible throughout the project, but not to a controller of an instance of the object. Friend can appear only in form modules and class modules, and can only modify procedure names, not variables or types. Procedures in a class can access the Friend procedures of all other classes in a project. Friend procedures don't appear in the type library of their class. A Friend procedure can't be late bound.


When placed in a class module, the following code makes the member variable dblBalance accessible to all users of the class within the project. Any user of the class can get the value; only code within the project can assign a value to that variable.

'-------------- Class Modules --------------
Private dblBalance As Double
Public Property Get Balance() As Double
    Balance = dblBalance
End Property
Friend Property Let Balance(dblNewBalance As Double)
    dblBalance = dblNewBalance
End Property

Leave a comment

Your email address will not be published. Required fields are marked *

Format your code: <pre><code class="language-vba">place your code here</code></pre>