Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
396to400
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
396to400
396to400
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Initialisierungsproblem bei ListBoxen (2. Versuch)

Initialisierungsproblem bei ListBoxen (2. Versuch)
14.03.2004 00:24:59
Dieter Klemke
Hallo Forumsgemeinde,
ich hatte am 9.3. eine Frage zu einem ListBox-Initialisierungsproblem gestellt, aber leider keine befriedigende Antwort erhalten. Wenn man einmal aus der Liste der offenen Fragen gefallen ist, dann ist die Aussicht auf weitere Antworten leider gering. Vielleicht ist die neue Technik, einen Thread offen zu halten, der bessere Ansatz.
Daher hier noch mal ein neuer Versuch.
Die Anfrage hat den Archivthread:
https://www.herber.de/forum/archiv/392to396/t394516.htm
Die Datei, an der sich das Problem zeigt, habe ich unter
https://www.herber.de/bbs/user/4159.xls
auf den Server geladen.
Über Antworten würde ich mich freuen.
MfG
Dieter

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mein 1. Versuch
14.03.2004 02:02:02
Uwe
Guten Tag, Dieter!
Deine beiden Ansätze haben ihre "Berechtigung", wobei ich den zweiten, der, der ohne Probleme in Deiner Version Arbeit, für den "sauberen" halte.
Aber auch der erste Ansatz ist richtig, wenn Du beachtest, dass erst wenn das Object den Focus erhält, die Eigenschaft Value der Listbox mit dem Indexwert verknüpft wird und erst dabei der Text der selektierten Zeile aus der Liste gesichert mit (with).Value benutzt werden kann.
Fügst Du also jeweils vor der Zuweisung von (whith).Value an lbl.... ein (with).SetFocus ein, so funktioniert auch die erste Deiner Programmfassungen.
Hoffe das durch diese Darstellung die Erklärung für das Verhalten erkennbar wird, wobei natürlich damit nicht erklärt wird, warum das alternierende Verhalten zu beobachten ist. Doch dazu müßte man mehr über die interne Parameterübergabe (Vorbesetzung) in den Objekten wissen. Ich vermute, das diese nicht sauber initilisiert sind.
In Deiner zweiten Fassung verknüfst Du direkt den Text einer Listenzeile als Rwert mit der Caption-Eigenschaft des Labels, daher halt ich diese Art für die bessere Art.

Gruß,
Uwe
Anzeige
AW: mein 1. Versuch
14.03.2004 19:37:29
Dieter Klemke
Hallo Uwe,
herzlichen Dank für deine Antwort. Ich denke, sie hat mir echt weiter geholfen.
Was mich noch interessieren würde, ist die Frage, ob ich hätte wissen können, dass die Value-Eigenschaft erst dann sicher verwendet werden kann, nachdem die ListBox einmal den Fokus hatte. Kennst du irgendeine Stelle, wo etwas darüber steht?
Im übrigen schreibe ich noch eine ausführliche Antwort an Nepumuk, wo ich etwas zur Motivation meiner Fragen darstelle.
Mit freundlichen Grüßen
Dieter
AW: ...ob ich hätte wissen können...
14.03.2004 20:50:15
Uwe
Hallo, Dieter!
Wo Du fragst: " ... ob ich [, Dieter, ] hätte wissen können, dass die Value-Eigenschaft erst dann sicher verwendet werden kann, nachdem die ListBox einmal den Fokus hatte." ", weiß ich nicht recht zu antworten.
Die Beschreibung in der VBA-Hilfe zur Value-Eigenschaft läßt durchaus ahnen, das der object.Value-Wert keine direkte Verknüpfung zur Adresse des mit object.ListIndex selektierten object.List-Item darstellt. Somit ist zu vermuten, das spätestens bei der Prozedur object.SetFocus die interne Zuordnung hergestellt werden müßte.
Leider kenne ich hierzu keine weiteren Quellenhinweise.
Gruß,
Uwe
Anzeige
Besten Dank
15.03.2004 09:15:12
Dieter Klemke
Hallo Uwe,
besten Dank für deine nochmalige Antwort.
Offenbar gelingt es dir, dich in die "Seele" eines Steuerelementes einzufühlen.
MfG
Dieter
AW: Initialisierungsproblem bei ListBoxen (2. Versuch)
14.03.2004 02:03:28
Nepumuk
Hallo Dieter,
ich verstehe nicht, warum die Leute immer das Initialize-Ereignis verwenden. Das wird nämlich auch ausgeführt, wenn die Form noch nicht aktiv ist. Benutze das Activate-Ereignis und dein Problem ist gegessen.
Gruß
Nepumuk
AW: Initialisierungsproblem bei ListBoxen (2. Versuch)
14.03.2004 19:41:57
Dieter Klemke
Hallo Nepumuk,
herzlichen Dank für deine Antwort.
Aber leider tritt auch beim Activate-Ereignis noch das merkwürdige Phänomen auf, wenn auch in etwas abgewandelter Form:
- Bei der ersten Darstellung der Userform sind beide Label-Werte gesetzt.
- "Abbrechen", speichern, erneutes Aufrufen der UserForm, jetzt ist nur der erste Label-Wert gesetzt.
- "Abbrechen", speichern, erneutes Aufrufen der UserForm, jetzt sind wieder beide Label-Werte gesetzt.
Das setzt sich so alternierend fort.
Was mich an deiner Antwort noch interessieren würde, ist die Frage:
Warum denkst du so schlecht über das Initialize-Ereignis? Natürlich muss man wissen, dass es mit Load verbunden ist und erst wieder auftritt, wenn einmal Unload da war. Ich habe verwende es seit langem und immer mit gutem Erfolg. Es wird auch von renomierten Autoren wie Michael Kofler oder Stephen Bullen empfohlen.
Ich glaube, dass beim vorliegenden Problem auch nicht das arme Initialize-Ereignis schuldig ist. Es triggert doch sauber. Für das was in seiner Ereignis-Prozedur steht, kann man es doch nicht verantwortlich machen.
Ich verwende durchaus auch das Activate-Ereignis (z.B. Zählung der Anzahl der Darstellungen per Show in einem Label oder Zugriff auf den Windows-Handle der UserForm). Bei Excel 97 war es ja noch nicht ordentlich zu gebrauchen, aber das hat sich zum Glück geändert.
Ich bleibe in der Sache deshalb so hartnäckig, weil ich nicht an tausend Stellen Unzuverlässigkeiten habe möchte, die ich alle per Workaround umgehen muss.
Das Vertrauen in die Zuverlässigkeit einer Programmiersprache wird durch so etwas untergraben.
Ich hoffe, dass ich durch diese längere Abhandlung nicht die Forumsnerven zu arg strapaziert habe und wünsche allseits noch einen schönen Abend.
Mit freundlichen Grüßen
Dieter
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige