Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
796to800
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
796to800
796to800
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Variable schon initialisiert

Variable schon initialisiert
07.09.2006 17:46:32
Trostlooser
Habe festgestellt, dass eine Boolean-Variable bei Erstellung (Dim-Amweisung) offenbar automatisch den Wert "False" erhält. Wird der Wert der Variablen aber (z.B. in der SheetChange-Prozedur) auf "True" geändert bleibt der Wert beim nächsten Aufruf der Prozedur bestehen. Ich dachte das würde nur bei STATIC so sein. Hinweis: meine Boolean ist eine GLOBAL deklarierte in einem Modul. Was kann ich tun, damit der Wert der Variablen wieder zurückgesetzt wird?
Gruß
Trostlooser

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variable schon initialisiert
07.09.2006 17:48:53
ChrisL
Hallo
Deklariere die Variable "normal" :-)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim bVariable As Boolean ' Deklaration
Debug.Print bVariable   ' Beispiel
End Sub

Gruss
Chris
AW: Variable schon initialisiert
07.09.2006 17:55:57
Trostlooser
Hallo Chris,
in meinem Fall ist es schon wichtig, dass alle Prozeduren in anderen Modulen auf die Variable zugreifen können. Das geht ja nicht bei deklaration in einer Prozedur oder doch?
Gruß
TL
AW: Variable schon initialisiert
07.09.2006 18:00:04
Horst
Hi,
du musst die Variable an geeigneter Stelle im Code auf False zurücksetzen.
mfg Horst
Anzeige
AW: Variable schon initialisiert
07.09.2006 18:10:21
TrostLooser
Naja, das Problem ist auch, dass die SheetChange ein anderes Tabellenblatt ändert. Dann tritt ja wieder eine SheetChange in Aktion. Ich will die Variablen also erst am Ende des gesamten Prozesses zurücksetzen, was für die SheetChange halt schwierig zu entscheiden ist, da nicht unbedingt klar ist, ob nicht noch eine übergeordnete SheetChange aktiv ist. Insofern würde ich schon gerne ein Resetten über eine Deklaration machen, quasi das Gegenteil von STATIC.
Gruß
Trostlooser
AW: Variable schon initialisiert
07.09.2006 18:15:49
Horst
Hi,
dir ist der Ablauf deines Codes also nicht klar?
Am Anfang der aufrufenden Prozedur Variable auf True und am Ende auf False,
alles andere passiert ohnehin dazwischen.
mfg Horst
Anzeige
AW: Variable schon initialisiert
07.09.2006 18:25:57
Trostlooser
Hallo, ja meiner Meinung nach ist es halt nicht damit getan, einfach am Ende der SheetChange-Prozedur des Sheets1 den Wert zurück auf False zu setzen. Je nach Situation kann es sein, dass ein anderes Tabellenblatt geändert werden muss und dann hier wieder die SheetChange (des Sheets2) aktiv wird. Nun wünsche ich ja kein Resetten von letzterer. Wäre die SheetChange des Sheet2 nun aber direkt vom Benutzer aufgerufen worden und nicht über eine Änderung einer anderen SheetChange wünsche ich natürlich ein Resetten. Doch woher soll die SheetChange des Sheets2 nun wissen, ob sie die Variable nun resetten soll oder nicht? Ich würde daher gerne erfahren, ob man nicht per Deklaration eine Variable Global im Modulkopf nur für einen Aufruf (inkl. aller darin enthaltenen Folgeaufrufe) erstellen kann, die beim nächsten Aufrauf wieder mit dem Default-Wert initialisiert wird.
Gruß
TL
Anzeige
AW: Variable schon initialisiert
07.09.2006 18:28:48
Horst
Hi,
ich passe, du verstehst es nicht.
mfg Horst
AW: Variable schon initialisiert
07.09.2006 18:34:54
TrostLooser
Ja, wieso?
Ich schließe nun daraus, dass man keine Globale Variable deklarieren kann, auf die in allen Modulen zugegriffen werden kann, die nicht beim nächsten Aufruf neu mit einem Default-Wert initialiert wird. Mit andern Worten muss ich die Variable manuell am Ende des Durchlaufs zurücksetzen, damit sie beim nächsten Aufruf wieder den gewünschten Wert hat. Ist das richtig oder verstehst DU mich falsch?
Gruß
Trostlooser
AW: Variable schon initialisiert
07.09.2006 18:39:53
Horst
Hi,
ja, die doppelten Verneinungen sind schon verwirrend. Ich sags mal anders:
Public- Variable behalten ihren Wert während der gesamten Excelsitzung, bis sie
einen anderen Wert zugewiesen bekommen.
mfg Horst
Anzeige
AW: Variable schon initialisiert
07.09.2006 18:46:36
TrostLooser
Aha!
Und die Frage ist, ob man das nicht per geeigneter Deklaration irgendwie umgehen kann. Sorry, wenn ich mich zuvor nicht deutlich genug ausgedrückt habe.
Gruß
TL
AW: Variable schon initialisiert
07.09.2006 18:49:47
Horst
Hi,
"Und die Frage ist, ob man das nicht per geeigneter Deklaration irgendwie umgehen kann"
Als geeignete Deklaration hattest du ja schon Public ausgemacht, geht auchh nicht anders, wenn sie im gesamten Projekt ansprechbar sein soll.
mfg Horst
AW: Variable schon initialisiert
07.09.2006 18:55:06
Trostlooser
Hi,
im gesamten Projekt ansprechbar heißt also auch den letzten Wert für die gesamte Excel-Sitzung behaltend. Ja, dann muss ich wohl einen anderen Weg finden, wie z.B. manuelles Resetten...
Thanx
Trost
Anzeige
AW: Variable schon initialisiert
07.09.2006 18:39:23
ChrisL
Hallo Horst
Ich muss für TL Partei ergreifen. Hat m.E. nichts mit Verständnis zu tun, sondern der Ansatz ist falsch und die Aufgabe mit einer Variable nicht lösbar.
Ansonsten lasse ich mich gerne vom besseren Belehren (kleine Beispieldatei als Beweis) :-)
Ist nicht böse gemeint, bin nur neugierig.
Gruss
Chris
AW: Variable schon initialisiert
07.09.2006 18:43:16
Horst
Hi,
der Ansatz ist nicht falsch. In Userforms, wo EnableEvents bekanntlich nicht wirkt,
ist es eine von zwei Möglichkeiten, ungewollte Events zu vermeiden.
mfg Horst
AW: Variable schon initialisiert
07.09.2006 19:01:48
ChrisL
Hallo Horst
Deine Antwort hat mich ins Grübeln gebracht.
https://www.herber.de/forum/archiv/260to264/t260974.htm
Ganz sicher bin ich inzwischen nicht mehr. Das Beispiel mit der ListBox von L.Vira funktioniert doch nur, weil Change und Initialize im Spiel sind. Beim WS_Change hast du nur ein einziges Ereignis zur Verfügung.
gesperrt = True
If gesperrt = False Then Range("A1") = "Test"
gesperrt = False
Wie soll das gehen, ich begreif es nicht.
Gruss
Chris
Anzeige
AW: Variable schon initialisiert
07.09.2006 19:09:57
ChrisL
Hallo Horst
Ich war zu blöd. Die Bearbeitung in eine separate Prozdur, dann gehts.
Trotzdem recht kompliziert, wenn es doch in diesem Fall auch mit EnableEvents geht.
Gruss
Chris
AW: Variable schon initialisiert
07.09.2006 18:26:03
ChrisL
Hallo
Dein Ansatz ist zwar kreativ, aber falsch :-))
On Error Goto ErrorHandler
Application.EnableEvents = False
' Dein Code
Application.EnableEvents = True
Exit Sub
ErrorHandler:
Application.EnableEvents = True
MsgBox "Fehler blabla"
Gruss
Chris

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige