Variables and Constants in Excel Visual Basic
Part eight of an eight-part series of blogs

This blog explains the nuts and bolts of Excel VBA variables, including how to declare them, how to set their scope and all sorts of other tips and tricks. The blog also covers constants in Excel macros.

  1. Variables in Excel Visual Basic macros
  2. What is a Variable? VBA macro variables.
  3. Declaring Variables in Visual Basic for Applications
  4. Using Variables (Assigning and Retrieving Values)
  5. Forcing Declaration of Variables (Option Explicit)
  6. Useful Things to Know about Variables
  7. The Scope of Variables
  8. Constants in Excel Visual Basic for Applications (this blog)

This blog is part of our Excel macros online tutorial series.  Alternatively, we run training courses in the UK in Excel and also in Visual Basic for Applications (and are always looking for partners in the US or other English-language countries!).

Posted by Andy Brown on 05 September 2011

You need a minimum screen resolution of about 700 pixels width to see our blogs. This is because they contain diagrams and tables which would not be viewable easily on a mobile phone or small laptop. Please use a larger tablet, notebook or desktop computer, or change your screen resolution settings.


There are two differences between a constant and a variable:

  • You set a value for a constant when you first declare it; and
  • You can not subsequently change this value.

To continue the suitcase analogy from earlier: a constant is like a suitcase which, once locked, can never be re-opened.

Examples of Constants

Here are some examples of constants that you might create:

Option Explicit

'the name of the current client

Public Const CompanyName As String = "Wise Owl"

'the folder containing model files

Public Const FilePath As String = "c:\model\"

'the current VAT rate (UK sales tax)

Public Const VatRate As Double = 0.2

Constants don't have to be public - you can declare them in a procedure as follows:

Sub RecordVote()

'the cell reference of hero name

Const HeroNameCell As String = "C4"

Const HeroRatingCell As String = "C6"

'the name of each superhero

Dim HeroName As String

'the rating assigned to them

Dim HeroRating As Long

'go to the votes sheet and get the value of the superhero, and their rating


HeroName = Range(HeroNameCell).Value

HeroRating = Range(HeroRatingCell).Value

Good things to hold in constants are file paths, worksheet names and workbook names.

If you want to create a truly global constant - one whose value will be available within all workbooks, all of the time - you need to create an add-in.

This blog has 0 threads Add post