Ich habe eine Frage über die globale Reichweite und haben das Problem in einem einfachen Beispiel abstrahiert:Wie Globale Variablen in Excel VBA erklären, über die Arbeitsmappe sichtbar sein
In einer Excel-Arbeitsmappe: In Sheet1 Ich habe zwei (2) Tasten.
Die erste ist SetMe markiert und wird in Tabelle1 des Moduls zu einem Unterprogramm verknüpft:
Tabelle1 Code:
Option Explicit
Sub setMe()
Global1 = "Hello"
End Sub
Der zweite markiert ist ShowMe und wird in zu einem Unterprogramm verknüpft DiesesWorkbook-Modul:
DieserWorkbook-Code:
Option Explicit
Public Global1 As String
Debug.Print("Hello")
Sub showMe()
Debug.Print (Global1)
End Sub
Klick auf SetMe erzeugt einen Compiler error: variable not defined
.
Wenn ich ein separates Modul erstellen und die Deklaration von Global1 in es verschieben, funktioniert alles.
Also meine Frage ist: Alles, was ich gelesen habe, sagt, dass globale Variablen, an der Spitze eines Moduls erklärt, außerhalb jeden Code sollten in dem Projekt für alle Module sichtbar. Dies ist eindeutig nicht der Fall. Es sei denn, mein Verständnis von Modul ist nicht korrekt.
Die Objekte Sheet1
, Sheet2
, ThisWorkbook
, ... die mit einer Arbeitsmappe geliefert werden: Sind diese Module nicht in der Lage, Variablen global zu deklarieren?
Oder ist die einzige Stelle, die man eine globale, in einem separaten Modul des Typs Module deklarieren kann.
Ich glaube, UserForms Code fällt in den Kategorie-Typ-Modul, obwohl es nicht wirklich als solches aufgeführt ist. Ist das korrekt? – peege
@ sancho.s Ich löschte es, um Verwirrung zu vermeiden :) Ich vermisste diesen Link von Pearson und fehlinterpretierte eine Zeile in der MSDN-Verbindung, die ich postete. Habe heute etwas Neues gelernt :) – L42
@ user2978241 - Haben Sie hier nützliche Antworten gefunden? Es ist immer gut, Feedback zu geben, damit andere SO-Benutzer sehen können. –