Search code examples
vbavariablesdefault-valuepublicvariable-declaration

Is it possible to declare a public variable in vba and assign a default value?


I want to do this but it won't compile:

Public MyVariable as Integer = 123

What's the best way of achieving this?


Solution

  • .NET has spoiled us :) Your declaration is not valid for VBA.

    Only constants can be given a value upon application load. You declare them like so:

    Public Const APOSTROPHE_KEYCODE = 222
    

    Here's a sample declaration from one of my vba projects:

    VBA Constant Image

    If you're looking for something where you declare a public variable and then want to initialize its value, you need to create a Workbook_Open sub and do your initialization there. Example:

    Private Sub Workbook_Open()
      Dim iAnswer As Integer
    
      InitializeListSheetDataColumns_S
      HideAllMonths_S
    
      If sheetSetupInfo.Range("D6").Value = "Enter Facility Name" Then
        iAnswer = MsgBox("It appears you have not yet set up this workbook.  Would you like to do so now?", vbYesNo)
        If iAnswer = vbYes Then
          sheetSetupInfo.Activate
          sheetSetupInfo.Range("D6").Select
          Exit Sub
        End If
      End If
    
      Application.Calculation = xlCalculationAutomatic
      sheetGeneralInfo.Activate
      Load frmInfoSheet
      frmInfoSheet.Show
    
    
    End Sub
    

    Make sure you declare the sub in the Workbook Object itself: enter image description here