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

UserForm mit If - MsgBox öffnet sich dreifach

UserForm mit If - MsgBox öffnet sich dreifach
13.03.2018 21:15:33
Gina
Liebe Excel-Profis,
ich erarbeite gerade eine UserForm, die eine Meldung aufbringen soll, falls ein Enddatum ausgewählt wird, das hinter dem Anfangsdatum liegt. Dies erfolgt auch, allerdings erscheint die MsgBox nach einem Klick auf Okay noch zwei weitere Male. Wie kann ich das verhindern?
Zusatzfrage: Kann ich das ausgewählte Datum auch ins Format dd/mm/yyyy bringen statt wie bisher dd-mm-yyyy?
Der aktuelle Code für die Änderung der ComboBox mit Enddatum ist:
Private Sub ComboBox2_Change()
CommandButton1.Enabled = True
ComboBox2.Text = Format(ComboBox2.Value, "dd-mm-yyyy")
If ComboBox1.Value > ComboBox2.Value Then
CommandButton1.Enabled = False
MsgBox ("The final date is before the initial one.")
End If
End Sub

Weiter unten findet ihr die übrigen UserForm Subs.
Vielen Dank im Voraus für Eure Hilfe!
-------- WEITERE USERFORM SUBS ----------------

Dim vdateinitiale As Date
Dim vdatefinale As Date
Dim vperf1 As Variant
Dim vperf2 As Variant
Private Sub ComboBox1_Change()
CommandButton1.Enabled = True
ComboBox1.Text = Format(ComboBox1.Value, "dd-mm-yyyy")
End Sub
Private Sub ComboBox4_Change()
CommandButton1.Enabled = True
If ComboBox4.Text = ComboBox3.Text Then
MsgBox ("Select another currency please.")
CommandButton1.Enabled = False
End If
End Sub
Private Sub CommandButton1_Click()
Worksheets(3).Activate
vdateinitiale = ComboBox1.Value
vdatefinale = ComboBox2.Value
Range("B2").Value = vdateinitiale
Range("B3").Value = vdatefinale
Range("B5").Value = ComboBox3.Value
Range("B6").Value = ComboBox4.Value
Range("d2").FormulaLocal = "=Match(b2;Date!a2:a3059;0)"
Range("d3").FormulaLocal = "=Match(b3;Date!a2:a3059;0)"
Range("d5").FormulaLocal = "=Match(b5;Date!b1:p1;0)"
Range("d6").FormulaLocal = "=Match(b6;Date!b1:p1;0)"
Range("D8").FormulaLocal = "=index(Date!b2:r3059;d2;d5)"
Range("E8").FormulaLocal = "=index(Date!b2:r3059;d3;d5)"
Range("D9").FormulaLocal = "=index(Date!b2:r3059;d2;d6)"
Range("E9").FormulaLocal = "=index(Date!b2:r3059;d3;d6)"
vval1 = Range("D8").Value
vval2 = Range("E8").Value
Range("B8").Value = (vval2 - vval1) / vval1
vval3 = Range("D9").Value
vval4 = Range("E9").Value
Range("B9").Value = (vval4 - vval3) / vval3
'Start of our code
Call StDevCorr
Unload UserForm1
End Sub
Private Sub CommandButton2_Click()
Unload UserForm1
End Sub

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UserForm mit If - MsgBox öffnet sich dreifach
14.03.2018 05:02:13
fcs
Hallo Gina,
hier 2 Varianten, um die MsgBox-Anzeigen zu minimieren/unterdrücken.
1. Variante:
Die Eingabe/Auswahl in der Combobox 2 wird auf gültiges Datum geprüft.
Dadurch beginnt die Datumsprüfung erst von z.B 22.3 eingegeben wurden, da Excel das aktuelle Jahr automatisch ergänzt.
Dies kann auch noch bervig sein, wenn Eingaben über mehrere Jahre gemacht werden müssen.
2. Prüfung erst wenn die Combobox2 verlassen wird (Exit- Ereignis)
Hier wird eine Messagebox nur bei ungültiger Eingabe oder wenn Eingabedatum vor anderem Datum liegt angezeigt.
Ich empfehle Variante 2 und das Change-Ereignis-Makro rauszuschmeißen.
Gruß
Franz
'#### V A R I A N T E  1   ####
Private Sub ComboBox2_Change()
If IsDate(Me.ComboBox2) Then
If CDate(ComboBox1.Value) > CDate(ComboBox2.Value) Then
CommandButton1.Enabled = False
MsgBox ("The final date is before the initial one.")
Else
CommandButton1.Enabled = True
Me.ComboBox2.Text = VBA.Format(ComboBox2.Value, "dd-mm-yyyy")
End If
Else
CommandButton1.Enabled = False
End If
End Sub
'#### V A R I A N T E  2   ####
Private Sub ComboBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsDate(Me.ComboBox2) Then
If CDate(ComboBox1.Value) > CDate(ComboBox2.Value) Then
CommandButton1.Enabled = False
MsgBox ("The final date is before the initial one.")
Cancel = True
Else
CommandButton1.Enabled = True
Me.ComboBox2.Text = VBA.Format(ComboBox2.Value, "dd-mm-yyyy")
End If
Else
MsgBox "The value entered in Combobox2 (final date) is not a valid date!"
Cancel = True
CommandButton1.Enabled = False
End If
End Sub

Anzeige
AW: UserForm mit If - MsgBox öffnet sich dreifach
14.03.2018 13:44:34
Gina
Vielen Dank! Das funktioniert prima!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige