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

Ereignis wird doppelt ausgeführt

Ereignis wird doppelt ausgeführt
13.11.2018 21:46:36
nevyn
Hallo zusammen,
ich stehe gerade etwas auf dem Schlauch. Da ich bei der Arbeit öfter die Summe von drei Werten in eine Zelle eingeben muss, habe ich mir eine Userform gebastelt, die drei Textfelder enthält. Dort gebe ich die Zahlen ein und in der aktiven Zelle wird die Summe ausgegeben. So weit so gut. Bisher habe ich noch einen OK-Button mit auf der Form gehabt, mit dem dann der entsprechende Code ausgeführt wurde. Das funktionierte auch einwandfrei.
Da ich mir auch den Button sparen wollte, habe ich die Berechnung auf das Exitereignis der letzten/dritten Textbox geändert. Nach der Berechnung wird über Offset die nächste Zelle nach unten ausgewählt. Das Problem: Das Ergebnis der Berechnung wird jetzt in zwei untereinander liegende Zellen, also z.B. in Zelle A1 und A2 geschrieben und danach A3 aktiviert, wenn A1 die aktive Zelle bei Aufruf der Userform war.
Ich kann mir aber nicht erklären, warum das so ist. Hat jemand eine Idee?

Private Sub cmdSumme_Click()
UserFormEingabe.Show
End Sub

Private Sub UserForm_Initialize()
txtWert1.SetFocus
End Sub

Private Sub txtWert3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim dblSumme    As Double
Dim cnt         As Control
On Error GoTo Fehler
dblSumme = ActiveCell.Value
For Each cnt In Me.Controls
If InStr(1, cnt.Name, "txtWert") Then
If cnt.Value  "" Then
dblSumme = dblSumme + (cnt.Value * 1)
End If
End If
Next
ActiveCell = dblSumme
ActiveCell.Offset(1, 0).Select
Unload Me
Exit Sub
Fehler:
MsgBox "Es dürfen nur Zahlen eingegeben werden!"
Unload Me
End Sub
Und die Datei: https://www.herber.de/bbs/user/125374.xlsm
In der Firma habe ich ein Terminal mit Windows Server 2008 (glaube ich) und Office 2010, dort habe ich den Code in meiner personal.xlsb und rufe ihn mit strg-e auf.
Hier läuft Office 365 unter Win 10. Aufruf wie oben beschrieben über Button. Der Effekt ist der gleiche.
Wenn ich einen Fehler generiere indem ich Text in eine Textbox eingebe, kommt auch die Msgbox mit der Fehlermeldung zweimal.
Gruß
Kai

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Zwei Möglichkeiten
13.11.2018 21:55:46
lupo1
Application.EnableEvents = False|True und/oder
Cancel = True
verwenden. Google nach entsprechendem Code.
AW: Zwei Möglichkeiten
13.11.2018 23:09:23
nevyn
Damit habe ich jetzt reichlich rumprobiert, komme aber nicht zu einem Ergebnis. Es reicht für heute, morgen schaue ich mir das noch mal an.
Btw: Wenn ich "Unload Me" auskomentiere, wird nur eine Zelle befüllt. Löst Unload Me erneut das Exit-Event aus?
Gruß
Kai
AW: Ereignis wird doppelt ausgeführt
14.11.2018 00:39:52
onur

Private Sub txtWert3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim dblSumme    As Double
Dim cnt As Control
On Error GoTo Fehler
dblSumme = ActiveCell.Value
For Each cnt In Me.Controls
If InStr(1, cnt.Name, "txtWert") Then
If cnt.Value  "" Then
dblSumme = dblSumme + (cnt.Value * 1)
End If
End If
Next
ActiveCell = dblSumme
ActiveCell.Offset(1, 0).Select
Unload Me
Exit Sub
Fehler:
MsgBox "Es dürfen nur Zahlen eingegeben werden!"
UserFormEingabe.Hide
End Sub

Anzeige
Optionen
14.11.2018 09:30:40
nevyn
Danke erstmal, durch das rumprobieren mit Euren Ansätzen habe ich wieder was gelernt.
Also zusammengefasst: Durch Unload Me im Code wird das Exit-Event erneut ausgeführt. Eine direkte Methode, das zu unterbinden habe ich nicht gefunden. Oder falsch angewendet, wobei ich viel ausprobiert habe.
Die Option mit Userform.Hide funktioniert grundsätzlich, dann muss aber die Userform vbModeless ausgeführt werden, da ich sonst die Tabelle nicht mehr bearbeiten kann. Und die TextBoxen bleiben gefüllt und müssen am Ende des Codes geleert werden. Auch kein Problem.
Also gehe ich entweder zurück und lege den Code wieder auf einen Button oder ich verwende die Hide-Methode. Überlege ich mir noch. Auf jeden Fall hat mich das Thema weitergebracht.
Gruß
Kai
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige