Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1688to1692
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Globale Variable in "DieseArbeitsmappe"
30.04.2019 16:57:08
Sven
Hallo zusammen,
ich habe wie folgt in einem Modul deklariert:
Public blnRequestComment As Boolean
In allen Modulen und Userforms kann ich hierauf zugreifen, aber in "DieseArbeitsmappe" ist der Wert immer false. Ist das normal, dass die globalen Variablen hier nicht ansprechbar sind? Deklariere ich stattdessen in "DieseArbeitsmappe", so ist sie innerhalb der anderen Module nicht bekannt. Hat das etwas mit
Option Private Module

zu tun?
Danke und Grüße
Sven

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Globale Variable in "DieseArbeitsmappe"
30.04.2019 16:59:24
Hajo_Zi
Hallo Sven,
mit Dim ist die immer False.

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
AW: Globale Variable in "DieseArbeitsmappe"
30.04.2019 17:20:56
Nepumuk
Hallo Sven,
kann es sein, dass du die Variable in der Prozedur nochmal deklariert hast?
Gruß
Nepumuk
AW: Globale Variable in "DieseArbeitsmappe"
02.05.2019 08:26:44
Sven
Hallo Nepumuk,
danke für den Tipp. Nein, sie wird nur einmalig im Hauptmodul deklariert.
AW: Globale Variable in "DieseArbeitsmappe"
30.04.2019 17:26:44
Daniel
Hi
korrekt global bzw projektweit deklarierte Variablen sind auch im Modul DIESE ARBEITSMAPPE verfügbar.
Das Option Private Module bezieht sich meines Wissen nach nur auf die Anzeige der Makros im Excelmenü "Makros", dh Makros in diesem Modul werden nicht angezeigt und können nicht direkt vom Anwender ausgeführt werden.
Hast du mal die Reihenfolge der Ausführung geprüft?
wo erhält denn die Variable ihren Wert und in welchem Event willst du sie in "DieseArbeitsmappe" verwenden?
wenn du die Variable abfragst, bevor du sie befüllst, bekommst du natürlich immer den initialwert (false bei Boolean)
beim Öffnen der Datei sind alle globalen und statischen Variablen zunächsteinmal leer, ebenso nach dem Befehl END, nach einem Fehlerabbruch oder nach dem Klick auf Zurücksetzen.
Gruß Daniel
Anzeige
AW: Globale Variable in "DieseArbeitsmappe"
02.05.2019 08:26:36
Sven
Hallo Daniel,
danke für die ausführlichen Infos. Sie wird im Hauptmodul, indem sie auch deklariert wurde, durch unterschiedliche Prozeduren umgesetzt - deswegen als globale Variable angelegt. Laut Debugger ist ihr letzter Status soagr true. Dann klicke ich auf speichern und sie ist false (wewegen der Code unter bevforesave nicht ausgeführt wird).
Grüße
Du unterliegst einem Fehlschluss, ...
30.04.2019 19:16:01
Luc:-?
…Sven:
1. Eine in einem (Dokument-)Klassenmodul deklarierte Public-Variable kann auch in anderen Modulen benutzt wdn, nur muss der Name des KlassenModuls vorangestellt wdn.
2. Eine in einem allgemeinen Modul (auch bei Option Private Module) deklarierte Public-Variable kann auch in (Dokument-)Klassen­Mo­du­len benutzt wdn, nur muss sie zuvor auch befüllt worden sein.
Das kann sich uU „beißen“, weshalb ich die allgemeine Variable im nachfolgenden Doppel-Bsp schon bei Mappen-Öffnen fülle …
Klassenmodul DieseArbeitsmappe:
Option Explicit
Const testKonst$ = "alfa"
Public testVar
Private Sub Workbook_Open()
testVrb = True
If testVrb Then testVar = testKonst Else testVar = Empty
End Sub
Allgemeines Modul Modul1:
Option Explicit
Option Private Module
Public testVrb As Boolean
Sub test()
MsgBox DieseArbeitsmappe.testVar
End Sub
Natürlich muss erst die SubProz Workbook_Open gelaufen sein, bevor die SubProz Test irgendetwas zurückgeben kann.
Wollte man diese Mappe allerdings auch in anderen VBA-Projekten benutzen, muss in ihnen ein Verweis auf sie gesetzt wdn, was nur fktioniert, wenn sie einen eindeutigen, nicht den StandardNamen DieseArbeitsmappe trägt.
Gruß, Luc :-?
„Der beste Beweis für intelligentes Leben im Universum ist, dass noch niemand versucht hat, Kontakt mit uns aufzunehmen.“ H.Lesch, 2018, Sonneberg
Deshalb Intelligenz steigern mit …

Anzeige
AW: Du unterliegst einem Fehlschluss, ...
02.05.2019 08:31:59
Sven
Hallo Luc,
ich wünschte, ich würde verstehen, was Du meinst. :o)
Was ist testVar (für ein Typ)?
Ausprobieren! Jede deklarierte Variable ...
02.05.2019 11:56:05
Luc:-?
…ohne explizite DatentypAngabe ist automatisch Variant, Sven.
Luc :-?
Übrigens, ...
02.05.2019 12:03:12
Luc:-?
…an deiner Frage, der unten gezeigten PgmZeile und deinem bekundeten Unverständnis sehe ich, dass du eher ein (autodidaktischer) VBA-Anfänger bist… ;-]
Luc :-?
AW: Globale Variable in "DieseArbeitsmappe"
02.05.2019 09:13:04
Sven
Hallo zusammen,
ich habe nochmal zwei Überwachungen gesetzt. Einmal aus dem Klassenmodul DieseArbeitsmappe heraus und einmal aus der Hauptprozedur in Modul1. Der Screenshot zeigt den Zustand, nachdem durch Laufzeit der Wert auf wahr gesprungen ist. Beim Speichern wird der Code jedoch nicht ausgeführt, da in der Variable angeblich kein wahr stände.
Userbild
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If blnRequestComment = True Then
ufComment.Show
End If
End Sub
Warum ist der Wert "außerhalb des Kontextes"?
Anzeige
AW: Globale Variable in "DieseArbeitsmappe"
02.05.2019 09:27:13
Nepumuk
Hallo Sven,
kannst du eine Mustermappe mit dem gesamten Code hochladen? Die Daten kannst du alle löschen.
Gruß
Nepumuk
AW: Globale Variable in "DieseArbeitsmappe"
02.05.2019 12:00:24
Sven
Hallo Nepumuk,
frag mich nicht, warum ein Rechnerneustart geholfen hat.
Danke für die Unterstützung.
Grüße

104 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige