VBA Projects

Full Access with Source Code
  • Designed and Developed by PNRao

  • Full Access with VBA Source Code

  • Well Commented Codes Lines

  • Creative and Professional Design

Manage Your Projects

120+ Project Management Templates

Seamlessly manage your projects with our powerful & multi-purpose templates for project management.

120+ PM Templates Includes:
  • 50+ Excel Templates

  • 50+ PowerPoint Templates

  • 25+ Word Templates

Share Post

When writing VBA code, it is essential to understand the different statements and keywords to achieve the desired result efficiently. One such statement is the Option Private statement. In this blog post, we will explore the purpose, syntax, top 5 examples, important notes and remarks, and conclude with asking for feedback and views on this statement.

VBA Option Private Statement

Purpose of the Option Private Statement

The Option Private statement in VBA specifies the accessibility of procedures and modules in a project. By default, all procedures in a VBA project are public, which means they can be accessed from anywhere in the project. However, by using the Option Private statement, the procedures can only be accessed within the module in which they are declared. It provides better control over the scope of procedures, thus preventing conflicts and promoting efficient code organization.


The Option Private statement is used at the module level, which means it is placed at the top of a module before any procedures or variables are declared. The syntax is as follows:

Option Private Module

The statement can be used in the following ways:

1. Option Private Module – makes all procedures in the current module private.

2. Option Private Procedure – makes a specific procedure private.

3. Option Private Module + Option Private Procedure – makes the current module and a specific procedure within it private.

Examples on VBA Option Private Statement

To further understand the Option Private statement, let’s look at the top 5 examples of using it in VBA.

Example 1: Restricting Access to a Procedure

Consider a project with three modules – Module1, Module2, and Module3. Module1 contains a procedure named AddNumbers, which adds two numbers and displays the result. We want this procedure to be accessible only within Module1.

Module Module1
    Option Private Module
    Sub AddNumbers()
        Dim num1 As Integer, num2 As Integer
        num1 = 10
        num2 = 20
        MsgBox "Result: " & num1 + num2
    End Sub
End Module
Module Module2
    Sub Test()
        Module1.AddNumbers 'coder will not see this
    End Sub
End Module

The ‘Option Private Module’ statement makes it impossible to access the AddNumbers procedure from outside Module1. Module2 in this case will result in an error, thus preventing any unwanted modifications from other parts of the project.

Example 2: Separating Public and Private Procedures within a Module

In some cases, it is beneficial to keep certain procedures within a module private while making others public. Using the ‘Option Private Procedure’ statement, we can make individual procedures private within the module, as shown in the example below:

Module MyModule
    Option Private Module
    Sub Procedure1()
        'this is a public procedure
    End Sub
    Option Private Procedure Sub Procedure2()
        'this is a private procedure
    End Sub
End Module

In this case, Procedure1 can be accessed from outside the module, while Procedure2 can only be accessed within the module.

Example 3: Preventing Procedure Conflicts

Consider a project with two modules – Module1 and Module2. Both modules have a procedure named AddNumbers, which adds two given numbers and displays the result. Without using the Option Private statement, there would be a conflict as both procedures have the same name. However, by using ‘Option Private Module’ in both modules, we can avoid this conflict and ensure that the procedures are only accessible within their respective modules.

Example 4: Protecting Procedures in a Password Protected Module

VBA provides the option to password protect modules to prevent any unauthorized access or modifications. In password-protected modules, the Option Private statement is automatically added, making all procedures within the module private. This helps in ensuring the integrity and security of the code.

Example 5: Encapsulating Code within a Module

The Option Private statement also promotes encapsulation of code. By making procedures private, we can limit their accessibility, thus preventing unintentional changes and promoting better code organization. This is particularly useful when working with large projects with multiple modules and procedures.

Important Notes and Remarks

There are a few important notes and remarks to take into account when using the Option Private statement in VBA:

  • All procedures in a module are public by default, except when the ‘Option Private Module’ statement is included. It is not necessary to add this statement unless specifically required.
  •  The ‘Option Private Module’ statement applies to all procedures within the module, while the ‘Option Private Procedure’ statement must be included before each procedure that needs to be made private.
  • Private procedures cannot be called from outside the module in which they are declared, even if the code is qualified with the module’s name.
  • The Option Private statement cannot be used within a procedure; it can only be declared at the module level.


The Option Private statement plays a vital role in controlling the accessibility of procedures and promoting better code organization in VBA projects. It is particularly useful in large projects with multiple modules and procedures, ensuring the integrity and security of the code. By understanding its purpose, syntax, and examples, VBA developers can make the most out of this statement in their projects.

What are your thoughts on the Option Private statement in VBA? Have you encountered any challenges or advantages while using it in your projects? Feel free to share your feedback and views in the comments section below.

Effortlessly Manage Your Projects and Resources
120+ Professional Project Management Templates!

A Powerful & Multi-purpose Templates for project management. Now seamlessly manage your projects, tasks, meetings, presentations, teams, customers, stakeholders and time. This page describes all the amazing new features and options that come with our premium templates.

Project Management Templates

All-in-One Pack
120+ Project Management Templates

Essential Pack
50+ PM Templates

Excel Pack
50+ Excel PM Templates

PowerPoint Pack
50+ Excel PM Templates

MS Word Pack
25+ Word PM Templates

Ultimate Project
Management Template
Ultimate Resource
Management Template
Project Portfolio
Management Templates
Categories: VBA StatementsTags: , Last Updated: September 28, 2023

Leave A Comment