What difference does it make if one runs a VBA code in “Sheets”, in “ThisWorkbook”, and in “Modules”?

天涯浪子 提交于 2019-11-29 04:20:47

A module is a collection of similar functions and sub-routines, grouped usually in terms of their functionality.

In a module subroutine/function, Private : Functions and Sub-routines are available only within that module. Public : They can be accessed from anywhere, directly. (Another module, different macro etc) It is common practice to store utility functions in modules.

Option Private Module, which makes the module itself private can be added to the top of any standard module, but is not permitted on an object module, like ThisWorkbook, or Sheet1, etc.


ThisWorkbook is a private module of the Workbook Object. For example, Workbook_Open(), Workbook_Close() routine, reside within this module. (Workbook Object Reference)


Similarly, Sheet1, Sheet2 are private modules of the individual sheets. In them, you would put in functions specific to that sheet. Worksheet_Activate, Worksheet_Deactivate, Workbook_SheetChange are default events provided to you, so that you can handle them, within the respective private sheet modules. (Worksheet Object Reference)

As @Daniel Cook said in the comments, while ThisWorkbook and the WorkSheet's modules aren't available for direct use as subName() or functionName() outside the module, it is still possible to call them using ThisWorkbook.subName() or ThisWorkbook.functionName()


A class module is the closest you can get to OOP in VBA. They have constructors, destructors, and can be instantiated to give you class objects.

I know atleast that Modules have to be run and ThisWorkBook is used for events such as SheetChange event etc.

Common code spit out in ThisWorkBook:

Private Sub Workbook_Open()

End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

End Sub

this question is also already answered here:

http://www.pcreview.co.uk/forums/macro-module-function-sub-and-workbook-and-sheets-t980275.html

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!