Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1912to1916
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

flascher Prozedursprung ?

flascher Prozedursprung ?
11.01.2023 17:46:09
boris
Hallo liebe Leute
Ich bin mir nicht sicher, aber ich habe hier einen Fehler

Sub UnterSubDatumAufHeuteSetzen()    'ersetzt den Prozedurteil in allen OptionButton
ListBoxDatum.Enabled = True
Dim CorsPos As Byte 'ListBoxDatum auf heute setzen
Dim korrektur  As Byte
CorsPos = Worksheets("stunden").Range("D2").Value
ListBoxDatum.ListIndex = CorsPos  ' listbox datum auf heute setzen
korrektur = 5 - CorsPos
If CorsPos 

Sub ListBoxDatum_Click() 'datum an tabelle übergeben
ListBoxArbeitsAnfang.Enabled = True
If OptionButton6.Enabled = True Then ListBoxArbeitsAnfang.Enabled = False
If OptionButton7.Enabled = True Then ListBoxArbeitsAnfang.Enabled = False
If OptionButton8.Enabled = True Then ListBoxArbeitsAnfang.Enabled = False
If OptionButton9.Enabled = True Then ListBoxArbeitsAnfang.Enabled = False
Worksheets("Uhrzeit").Cells(4, 14).Value = ListBoxDatum.List(ListBoxDatum.ListIndex) 'datum an "uhrzeit" übergeben
Worksheets("stunden").Cells(6, 4).Value = ListBoxDatum.List(ListBoxDatum.ListIndex)   'datum an "stunden" übergeben  NEU
End Sub
In der oberen Prozedur springt Excel bei ListBoxDatum.ListIndex zur unteren Prozedur. Erkennt VBA das ListBoxDatum von ListBoxDatum.ListIndex als die Prozedur ListBoxDatum_Click? Und was kann ich dagegen machen?
Viele Grüsse Boris

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: flascher Prozedursprung ?
11.01.2023 17:56:04
Yal
Hallo Boris,
das Ereignis heisst zwar "ListBoxDatum_Click", reagiert aber jedesmal, dass eine Änderung der gewählte Element vorkommt. Spricht, wenn Du in deiner ersten Sub eine ListIndex festlegst, wird es genauso wie einem Klick angenommen.
Die Lösung besteht daran, während die Handlung, die Events zu unterdrücken. Aber nicht vergessen, am Ende wieder einzuschalten:

Sub UnterSubDatumAufHeuteSetzen()
Application.EnableEvents = False
'... hier der gesamte Code
Application.EnableEvents = True
End Sub
VG
Yal
AW: flascher Prozedursprung ?
11.01.2023 18:09:27
boris
Hallo Yal, vielen Dank. Das muss mal erstmal wissen. Vielen Dank Boris
Anzeige
Schon getestet?
11.01.2023 18:13:34
Daniel
Ich meine, das das für Userformevents nicht gilt.
Bei ActiveX-Controls im Tabellenblatt bin ich mir nicht sicher.
Gruß Daniel
AW: flascher Prozedursprung ?
11.01.2023 18:08:29
Daniel
Hi
Für das Auslösen eines Eventmakros ist es egal, ob der Anwender die entsprechende Aktion auslöst oder ob ein Makro das macht.
Auch wenn der Name "Click" an die Maus denken lässt, dieses Event löst aus, wenn sich der Listindex der Box ändert und kann somit auch von einem Makro ausgelöst werden.
Wenn das verhindert werden soll, gibt es zwei Wege, man kann
a) auf Events ausweichen, die wirklich nur der Anwender auslösen kann (hier MouseUp anstelle von Click)
b) man informiert das Click-Eventmakro, dass es nicht laufen soll über eine modul- oder projektweit gültige Variable nach diesem Schema:

Option Expicit
Dim EventsAus AS boolean
Sub UnterSubDatumAufHeuteSetzen()
EventsAus = True
ListBoxDatum.ListIndex = CorsPos
EventsAus = False
End Sub
Sub ListBoxDatum_Click()
If EventsAus then Exit Sub
End Sub
Einen Offiziellen Befehl um die Events auszuschalten (analog dem Application.enableevents = False für Tabellenblattevents ) gibt es für die Userformen nicht, das muss man selber programmieren.
Gruß Daniel
Anzeige
AW: flascher Prozedursprung ?
11.01.2023 18:16:55
boris
ich hab's probiert und es läuft. danke für eure hilfe
AW: flascher Prozedursprung ?
11.01.2023 18:24:51
Daniel
Was hast du probiert und was hast du vorliegen, ActiveX oder Userform.
Bitte fülle das "'s" mit Inhalt.
Gruß Daniel
AW: flascher Prozedursprung ?
11.01.2023 20:23:53
boris
Hallo Daniel, Deine Variante funktioniert. Ich brauche es in einer Userform. Danke für Deine Hilfe. Viele Grüsse Boris
AW: flascher Prozedursprung ?
12.01.2023 07:37:28
Yal
Neugiriegkeitshalber: bedeutet das, dass du die Version EnableEvents auch probiert hast und dass diese nicht funktioniert?
VG
Yal
AW: flascher Prozedursprung ?
12.01.2023 08:30:38
boris
Guten Morgen Yal, ich hab es gerade nochmals probiert. In meinem Fall funktioniert es nur mit der Methode von Daniel.
Schönen Tag, Danke für Deine Hilfe, Grüsse Boris
Anzeige
Danke für Rückmeldung. owT
12.01.2023 08:57:53
Yal

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige