Como declarar variáveis globais no Excel VBA para ficar visível na pasta de trabalho
Tenho uma pergunta sobre o escopo global e abstraii o problema em um exemplo simples:
Em uma pasta de trabalho do Excel: EmFolha1 Eu tenho dois (2) botões.
O primeiro é rotuladoSetMe e está ligado a uma sub-rotina emMódulo da Sheet1:
Código da folha1:
Option Explicit
Sub setMe()
Global1 = "Hello"
End Sub
O segundo é rotuladoMostre-me e está ligado a uma sub-rotina emMódulo deste manual:
Código ThisWorkbook:
Option Explicit
Public Global1 As String
Debug.Print("Hello")
Sub showMe()
Debug.Print (Global1)
End Sub
Clicando emSetMe produz um compiladorerror: variable not defined
.
Quando crio um módulo separado e movo a declaração deGlobal1 nele tudo funciona.
Então, minha pergunta é: Tudo o que li diz que variáveis globais, declaradas na parte superior de um módulo, fora de qualquer código, devem estar visíveis para todos os módulos do projeto. Claramente, este não é o caso. A menos que minha compreensão deMódulo não está correto.
Os objetosSheet1
, Sheet2
, ThisWorkbook
, ... que acompanham uma pasta de trabalho: esses módulos não são capazes de declarar variáveis no escopo global?
Ou é o único lugar em que se pode declarar global, em um módulo separado do tipoMódulos.