Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1604to1608
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
Inhaltsverzeichnis

Listboxeintrag merken

Listboxeintrag merken
24.01.2018 18:46:50
Jonathan
Hallo,
folgendes Problem:
ich nutze ein Modul, welches bei jeder Änderung (in irgend einem Feld des UserForms) neu berechnet. Es bezieht sich auf die bereits eingetragenen/gewählten Werte und erkennt den neuen Wert. Nur ein ausgewählter ListBox-Eintrag wird bei einer Wert-Änderung nicht mehr als gewählt erkannt (obwohl noch markiert).
So sieht das aktuell (auf den wesentlichen Teil reduziert) aus:

Private Sub txtbx_Change()
For A = 0 To Listbox.ListCount - 1
If Listbox.Selected(A) Then
End If
Next A
End Sub

Es ist definitiv ein Wert ausgewählt, VBA erkennt das aber irgendwie nicht (oder verliert den Wert). Weiss jemand woran das liegen könnte?

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listboxeintrag merken
24.01.2018 18:51:04
onur
Wenn die Listbox tatsächlich txtbx heisst, must du auch txtbx.listcount-1 (bzw txtbx.selected) schreiben.
Wenn nicht - welche Listbox denn ?
Listbox1 oder Listbox2 oder ...?
AW: Listboxeintrag merken
24.01.2018 19:15:11
Jonathan
txtbx heisst nicht die Listbox, sondern txtbx_Cange() ist ein Befehl dass bei jeder Änderung einer TextBox im UserForm etwas passieren soll (wie geschrieben, läuft in einem Modul und nicht in dem UserForm). Und das was passieren soll ist in diesem Fall, dass bei der Änderung eines Eintrages erneut gerechnet wird. Zur Rechnung wird aber auch der gewählte ListBox-Eintrag benötigt bzw. wird bei gewähltem ListBox-Eintrag halt noch etwas anderes berechnet. Und es ist eigentlich ein Eintrag gewählt, nur rechnet er nicht, er verliert die Auswahl (obwohl noch markiert).
"Listbox" war nur ein Bsp., um mein Problem möglichst einfach darzustellen, bei mir ist diese schon genauer spezifiziert.
Anzeige
AW: Listboxeintrag merken
24.01.2018 21:17:30
onur
"Listbox" war nur ein Bsp., um mein Problem möglichst einfach darzustellen, bei mir ist diese schon genauer spezifiziert - Dann erwarte auch keine spezifische lösung!
Eine textbox_event-code (wenn die textbox auf einer UF ist) muss im Code der Userform stehen und nicht in irgend einem modul, du kannst nicht einfach ein Change-Event in ein Modul setzen (außer ein Klasenmodul, aber den code hast bestimmt nicht du geschrieben).
Ohne den genauen code oder die datei - erwarte keine Lösung!
AW: Listboxeintrag merken
25.01.2018 08:26:34
Jonathan
natürlich habe ich den Code selbst geschrieben. Doch, ich kann ein Change-Event in ein Modul schreiben, ich muss die einzelnen Felder der UserForm nur konkret ansprechen
Also gut, hier der gesamte Code (ich wollte es ursprünglich nur möglichst einfach halten, um auf mein Problem hinzudeuten):
Option Explicit
Public WithEvents txtbx As MSForms.TextBox
Private Sub Class_Initialize()
Static Variable1 As New Collection
Variable1.Add Me
End Sub
Private Sub txtbx_Change()
' füllt "Berechnungswerte" UserForm
' Kraft Eingang HBZ: FhbzEin
If Fahrzeugdaten.bkraft  "" And Fahrzeugdaten.Fpedalfeder  "" And Fahrzeugdaten.iPedal  "" _
Then
Berechnungswerte.FhbzEin.Value = Format((Fahrzeugdaten.bkraft.Value - Fahrzeugdaten. _
Fpedalfeder.Value) * Fahrzeugdaten.iPedal.Value, "0")
Else
FhbzEin = ""
End If
' Druck Ausgang: Phbz
For LoII = 0 To Fahrzeugdaten.ListeHBZVerstärker.ListCount - 1
If Fahrzeugdaten.ListeHBZVerstärker.Selected(LoII) Then
If Berechnungswerte.FhbzEin.Value  "" And Fahrzeugdaten.WahlUnterdruck.Value  "" Then
If Berechnungswerte.FhbzEin.Value  "" And Fahrzeugdaten.WahlUnterdruck.Value = "" Then
If Berechnungswerte.FhbzEin.Value  "" And _
Berechnungswerte.Phbz.Value  "" And _
Fahrzeugdaten.AnzKolben1A.Value  "" And _
Fahrzeugdaten.panl.Value  "" And _
Fahrzeugdaten.AnzBr1A.Value  "" And _
Fahrzeugdaten.uS.Value  "" And _
Fahrzeugdaten.hh.Value  "" And _
Fahrzeugdaten.rS.Value  "" Then
Berechnungswerte.Mb1A.Value = Format(Str(4 * Atn(1) * Fahrzeugdaten.Dk1A / 2 *  _
Fahrzeugdaten.Dk1A / 2 * Fahrzeugdaten.AnzKolben1A * Fahrzeugdaten.AnzBr1A * (Berechnungswerte.Phbz.Value - Fahrzeugdaten.panl) * Fahrzeugdaten.uS * Fahrzeugdaten.hh * Fahrzeugdaten.rS / 10), "0")
Else
Berechnungswerte.Mb1A.Value = ""
End If
' 2. Achse
If Fahrzeugdaten.Dk2A.Value  "" And _
Berechnungswerte.Phbz.Value  "" And _
Fahrzeugdaten.AnzKolben2A.Value  "" And _
Fahrzeugdaten.panl.Value  "" And _
Fahrzeugdaten.AnzBr2A.Value  "" And _
Fahrzeugdaten.uS.Value  "" And _
Fahrzeugdaten.hh.Value  "" And _
Fahrzeugdaten.rS.Value  "" Then
Berechnungswerte.Mb2A.Value = Format(Str(4 * Atn(1) * Fahrzeugdaten.Dk2A / 2 *  _
Fahrzeugdaten.Dk2A / 2 * Fahrzeugdaten.AnzKolben2A * Fahrzeugdaten.AnzBr2A * (Berechnungswerte.Phbz.Value - Fahrzeugdaten.panl) * Fahrzeugdaten.uS * Fahrzeugdaten.hh * Fahrzeugdaten.rS / 10), "0")
Else
Berechnungswerte.Mb2A.Value = ""
End If
' 3. Achse
If Fahrzeugdaten.Dk3A.Value  "" And _
Berechnungswerte.Phbz.Value  "" And _
Fahrzeugdaten.AnzKolben3A.Value  "" And _
Fahrzeugdaten.panl.Value  "" And _
Fahrzeugdaten.AnzBr3A.Value  "" And _
Fahrzeugdaten.uS.Value  "" And _
Fahrzeugdaten.hh.Value  "" And _
Fahrzeugdaten.rS.Value  "" Then
Berechnungswerte.Mb3A.Value = Format(Str(4 * Atn(1) * Fahrzeugdaten.Dk3A / 2 *  _
Fahrzeugdaten.Dk3A / 2 * Fahrzeugdaten.AnzKolben3A * Fahrzeugdaten.AnzBr3A * (Berechnungswerte.Phbz.Value - Fahrzeugdaten.panl) * Fahrzeugdaten.uS * Fahrzeugdaten.hh * Fahrzeugdaten.rS / 10), "0")
Else
Berechnungswerte.Mb3A.Value = ""
End If
' 4. Achse
If Fahrzeugdaten.Dk4A.Value  "" And _
Berechnungswerte.Phbz.Value  "" And _
Fahrzeugdaten.AnzKolben4A.Value  "" And _
Fahrzeugdaten.panl.Value  "" And _
Fahrzeugdaten.AnzBr4A.Value  "" And _
Fahrzeugdaten.uS.Value  "" And _
Fahrzeugdaten.hh.Value  "" And _
Fahrzeugdaten.rS.Value  "" Then
Berechnungswerte.Mb4A.Value = Format(Str(4 * Atn(1) * Fahrzeugdaten.Dk4A / 2 *  _
Fahrzeugdaten.Dk4A / 2 * Fahrzeugdaten.AnzKolben4A * Fahrzeugdaten.AnzBr4A * (Berechnungswerte.Phbz.Value - Fahrzeugdaten.panl) * Fahrzeugdaten.uS * Fahrzeugdaten.hh * Fahrzeugdaten.rS / 10), "0")
Else
Berechnungswerte.Mb4A.Value = ""
End If
' Bremsmoment pro Rad: Mr
' 1. Achse
'If Berechnungswerte.Mb1A.Value  "" And _
'5Fahrzeugdaten.Vorgelegeja.Value = True Then
'Berechnungswerte.Mr1A.Value = Berechnungswerte.Mb1A.Value * Fahrzeugdaten.Ir.Value /  _
Fahrzeugdaten.eta.Value
'Else
'If Berechnungswerte.Mb1A.Value  "" And _
'Fahrzeugdaten.Vorgelegeja.Value = False Then
'Berechnungswerte.Mr1A.Value = Berechnungswerte.Mb1A.Value
'Else
'Berechnungswerte.Mr1A.Value = ""
'End If
'End If
End Sub

FhbzEin berechnet er mir jederzeit korrekt, Phbz setzt er mir immer auf leer, obwohl - wie gesagt - eine Variable gewählt ist.
Anzeige
AW: Listboxeintrag merken
25.01.2018 08:28:42
Jonathan
vergessen zu aktivieren dass das Thema noch offen ist.
AW: Listboxeintrag merken
25.01.2018 11:42:18
EtoPHG
Hallo,
Phbz setzt er mir immer auf leer, obwohl - wie gesagt - eine Variable gewählt ist.
Kein Wunder: Bei jedem nicht selektiertem Eintrag, stetzt du sie im Else-Zweig auf ""!
Gruess Hansueli
AW: Listboxeintrag merken
25.01.2018 15:42:58
Jonathan
das ist auch so gewollt...
Allerdings ist ein Wert selektiert (blau hinterlegt) und er geht trotzdem ins ""
Also zurück zur Ursprungsfrage, die mir bisher noch keiner beantworten konnte: warum erkennt er den markierten Wert in der Listbox nicht mehr, nachdem ich einen Change durch eine beliebige Änderung in der UserForm habe? Wenn ich dann erneut in die Listbox klicke, dann hat er den Wert wieder und setzt nicht mehr ""
Kann es sein dass keiner so recht verstanden hat worauf ich hinaus will?
Anzeige
AW: Listboxeintrag merken
25.01.2018 15:45:46
EtoPHG
Hallo Jonathan,
Bullshit: Beweis es mit einer Beispielmappe!
Gruess Hansueli
AW: Listboxeintrag merken
25.01.2018 16:03:04
onur
Passiert halt, wenn man so kompliziert programmiert, dass man selber nicht mehr durch den code blickt und nicht weiss, wie man effektiv den debugger benutzt.
AW: Listboxeintrag merken
25.01.2018 17:07:10
Jonathan
Hallo onur,
was soll denn das? Woher willst denn wissen dass ich kompliziert programmiere? Du weisst doch gar nicht warum ich gewisse Programmierungen eben in dieser Form mache. So wie meine Anwendung aussieht, ist das nicht anders möglich. Wenn du mir nicht helfen kannst/willst dann schreibe einfach nichts und unterlasse doch bitte diese Beleidigungen.
Anzeige
AW: Listboxeintrag merken
25.01.2018 17:16:41
onur
Nix für ungut,aber wenn du Kritik nicht vertragen kannst und sie auch noch als Beleidigung auffasst, bist du selber Schuld.
Wenn du doch so gut bist, wie du glaubst und keinerlei Kritik möchtest, wieso wendest du dich überhaupt an das Forum?
Alles, was ich von dir lese, ist: Das kann nicht sein, mein Code ist perfekt, es muss andere Gründe haben (EXCEL, UFO´s ?).
Auf jede Kritik reagierst du schnippisch, jede Information muss man dir aus der Nase ziehen, lädst keine Datei hoch, der gepostete Code ist für den A... und der tatsächliche Code kommt nur nach ausdrücklicher Anforderung.
Anzeige
AW: Listboxeintrag merken
26.01.2018 10:42:16
Jonathan
Ich konnte das Problem finden, ich werde es hier nochmal beschreiben, falls jemand anderes mal ein ähnliches Verhalten haben sollte. Der korrekte Code sieht nun so aus:
Option Explicit
Public WithEvents txtbx As MSForms.TextBox
Private Sub Class_Initialize()
Static Variable1 As New Collection
Variable1.Add Me
End Sub
Private Sub txtbx_Change()
For LoII = 0 To Fahrzeugdaten.ListeHBZVerstärker.ListCount - 1
If Fahrzeugdaten.ListeHBZVerstärker.Selected(LoII) Then
If Berechnungswerte.FhbzEin.Value  "" And Fahrzeugdaten.WahlUnterdruck.Value  "" Then
If Berechnungswerte.FhbzEin.Value  "" And Fahrzeugdaten.WahlUnterdruck.Value = "" Then
If Berechnungswerte.FhbzEin.Value Exit For
Else
Berechnungswerte.Phbz.Value = ""
End If
Next LoII
End Sub
Fehler war, dass Exit For an der richtigen Stelle gefehlt hat. Dann hatte er zwar eine Auswahl, die Schleife hat diese Auswahl aber einfach "überlaufen"
Anzeige
Also doch ein Wunder ...;-) (owT)
26.01.2018 10:57:17
EtoPHG

AW: Listboxeintrag merken
25.01.2018 17:00:07
Jonathan
Gut, ich werde mich ran machen mal was zu basteln. Hier schon mal ein Screenshot, damit ihr seht was ich meine. Beim ersten mal Listbox wählen ist das Feld "Druck Ausgang HBZ" gefüllt. Sobald ich einen Wert ändere springt der Wert auf "" obwohl die Listbox nach wie vor aktiviert ist.
Userbild

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige