Listbox unerwartete Aktion
#1
Hallo zusammen und einen schönen Sonntag!

Ich probiere es erstmal ohne Code, vielleicht hat ja jemand eine Idee. In meinem VBA-Projekt suche ich über eine Textbox Datensätze. Nach drücken des "Suchen"-Buttons werden zunächst alle Felder in der Userform (Textbox, Combobox etc.) gesperrt und ausgegraut. Sinn und Zweck, wenn ein Ergebnis gefunden wird, soll das nicht gleich geändert werden können. Das Entsperren für eine Änderung erfolgt mittels eines weiteren Buttons.

Wirft die Suche nun mehrere Ergebnisse aus, werden die in einer Listbox angezeigt und es sollen weiterhin alle Felder gesperrt bleiben. Nun passiert aber etwas, zumindest von mir so nicht erwartet. Klicke ich durch die Listbox, wird nun bei einzelnen Datensätzen, nicht bei allen, auf einmal die eigentlich gesetzte Sperre aufgehoben. Ich hab den betreffenden Datensatz schon einmal gelöscht und neu angelegt, gleiches Problem. Lösche ich den Datensatz, dann tritt der Fehler nun beim folgenden Datensatz auf. Kommisch ist auch, dass es bei einigen Datensätzen passiert, wenn ich von oben nach unten die Liste mit dem Cursor durchgehe, bei anderen passiert dies nur von unten nach oben. Klingt komisch, ist aber so.

Huh

Hat da jemand eine Idee?

Vielen Dank und Grüße
Sandor
Top
#2
Hallo Sandor,

wahrscheinlich wird man ohne die Datei dir nicht helfen können da wir nicht wissen, welche Ereignisse Du in deiner Datei hast.
Gruß Stefan
Win 10 / Office 2016
Top
#3
...alles klar. Hab die Datei mal angefügt.

Grüße
Sandor


Angehängte Dateien
.xlsm   VBARecht.xlsm (Größe: 351,3 KB / Downloads: 10)
Top
#4
Hallo,

ich habe es mir mal angeschaut. Das liegt daran, das im ListBox1_Click-Ereignis verschiedene Textboxen gefüllt werden, welche wiederum ein Textbox_Change-Ereignis auslösen und und und. Schaue es dir mal selber an

Code:
Private Sub ListBox1_Click()                    'Anzeige Suchergebnis in der Listbox, wenn

On Error GoTo EERR

Dim sSearch As String                           'mehrere Vorgänge zum gleichen Aktenzeichen oder Namen
Stop
    TextBox2.Locked = True
    If TextBox2.Locked Then TextBox2.BackColor = &HE0E0E0 Else TextBox2.BackColor = &H80FF& 'wenn "wahr" dann orange, sonst grau
    TextBox3.Locked = True

nur ein Stop eingefügt nach der Variablendekleration. Warum schützt Du Textboxen und frägst danach noch ab, ob die Textbox geschützt ist? Die Abfrage macht doch da keinen Sinn.
Gruß Stefan
Win 10 / Office 2016
Top
#5
Ich geh das mal systematisch durch, lösche die unnützen Dinge und melde mich dann nochmal...

Danke erst einmal Steffl!

Grüße und einen schönen Abend
Sandor
Top
#6
Hallo Sandor,

damit kein Wildwuchs bei sich ereignenden Ereignissen entsteht Smile kannst DU mit
Application.EnableEvent
die Ausführung steuern. Da das nicht in jedem Fall hilft, kannst Du zusätzlich oder alternativ auch globale Variable oder Eigenschaften der Objekte (z.B. .Tag) verwenden, z.B. beim Click auf die Listbox
Textbox1.Tag = "!"
und bei TextBox 1
If Textbox1.Tag="!" ...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#7
Hallo André,

(07.06.2016, 19:23)schauan schrieb: damit kein Wildwuchs bei sich ereignenden Ereignissen entsteht Smile kannst DU mit
Application.EnableEvent
die Ausführung steuern.

es handelt sich dabei um eine Userform und den darin enthaltenen Elementen und da dürfte meines Wissen Apllication.EnableEvents nicht gehen.
Gruß Stefan
Win 10 / Office 2016
Top
#8
... ich zitiere jetzt aber nicht den Rest aus meiner Antwort :32:
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#9
Ich danke erstmal bis hierher. Ich fang das Projekt nochmal neu an. So wie es jetzt ist, sieht ja kein Mensch mehr durch.
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste