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

cbo - Auswahl sehr straff

cbo - Auswahl sehr straff
30.06.2017 12:48:12
Steve
Mahlzeit.......... und schönen Freitag nachmittag.
Bitte um Hilfe.
Habe eine Userform mit Combobox.
derzeitige Initialisierung:
With Me.cboJD_Uebersichtbei_3
.AddItem "22:00 bis 01:00"
.AddItem "22:30 bis 01:30"
End With
Ich hätte gerne dass der User - zu dieser Auswahl - auch noch die Möglichkeit hat
andere Zeiten - aber natürlich nur Zeiten (also Zahlen (auch nur 00/24 bei den Stundenangaben und 00/60 bei den Minutenangaben)........
und keine Buchstaben
und nur im End-Format:
"..:.. bis ..:.."
ist so was in einer Combo möglich?
Besten Dank und mfg
STeve

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: cbo - Auswahl sehr straff
30.06.2017 12:53:21
Rudi
Hallo,
du kannst den linken und den rechten Teil mit CDate() prüfen..
Gruß
Rudi
AW: cbo - Auswahl sehr straff
30.06.2017 13:34:17
Steve
Danke Rudi für die schnelle Antwort und den Tipp.
Wieder was Neues für mich. Werde mich schlau machen.
Versuche Select Case Überprüfungen zusammenzustellen.
Sollte ich scheitern oder verzweifeln hoffe darf ich mich nochmal melden.
Derweil noch schönen Tag.
lg
AW: cbo - Auswahl sehr straff
30.06.2017 14:30:17
Steve
Hallo..........hänge bei der Kombination von
Cdate() und Left(Me.cboJD_Uebersichtbei_3.Value,5)
Select Case Me.cboJD_Uebersichtbei_3.Value 'Combobox- Eingabe wird überprüft
Case Is Left(CDate(Me.cboJD_Uebersichtbei_3.Value), 5) ? so dachte ich mir
Besten Dank
mfg STeve
Anzeige
AW: cbo - Auswahl sehr straff
30.06.2017 14:31:12
Steve
wieder auf offen - da ich noch Tipp brauche.
AW: cbo - Auswahl sehr straff
30.06.2017 17:28:04
Matthias
Moin! Die Frage die noch offen wäre ist, ob du die Eingabe PRüfung erst nach der vollständigen Eingabe oder schon vorher (praktisch in Echtzeit) haben willst!? Bei Echtzeit hilft m.E. CDate nicht weiter, da ja schon bei der ersten Eingabe (bspw. 0 ) geprüft wird. Hier mal eine (auf die schnelle gebastelte) Lösung für Echtzeiteingabe. Die Prüft jede Eingabe über das ChangeEvent. VG

Private Sub cboJD_Uebersichtbei_3_Change()
Dim eintrag()
Dim i As Long
Dim wert As String
Dim teil
eintrag = Array(0, 1, 1, ":", 1, 1, " ", "b", "i", "s", " ", 1, 1, ":", 1, 1)
wert = cboJD_Uebersichtbei_3.Value
If wert = "" Then Exit Sub
For i = 1 To Len(wert)
If Len(wert) > UBound(eintrag) Then
MsgBox "BItte nur Werte wie 00:00 bis 01:00 eingeben."
cboJD_Uebersichtbei_3.Value = ""
Exit Sub
End If
If Asc(Mid(wert, i, 1)) > 47 And Asc(Mid(wert, i, 1))  eintrag(i) Then
MsgBox "BItte nur Werte wie 00:00 bis 01:00 eingeben."
cboJD_Uebersichtbei_3.Value = ""
Exit Sub
End If
Next i
End Sub

Anzeige
Danke Matthias - gewaltiger Code aber wohin?
30.06.2017 19:48:35
STeve
Haaaallo Matthias........Vorab wieder mal tausend Dank für deine klasse Mithilfe und den gewaltigen Code.

Natürlich wäre das der Kracher wenn bei Eingabe direkt die Prüfung (wie du sagst in Echtzeit) ablaufen könnte.
Bis jetzt verwende ich nur Workbook- SheetChange und Change Ereignisse.
Deshalb bin ich (total) überfragt - wo ich deinen Code eintragen soll - wie ich in meinem Ablauf:
WBK SheetChange Ereignis -
dadurch wird eine MsgBox aufgerufen -
dadurch wird diese Userform aufgerufen -
und jetzt soll bei Eintrag in einer dortigen Combobox jede Eintragung deinen Code starten?
Userform - Keydown?
Danke für die Lösung.
mfg und schönen Abend noch
lg STeve
Anzeige
AW: Danke Matthias - gewaltiger Code aber wohin?
30.06.2017 19:53:23
Matthias
Moin! Ne, einfach bei der Userform in den Codeteil packen. Dabei noch prüfen, ob die Namen von der Combo gleich mit der NAmen der Sub (bis auf das Change) ist - sonst startet es nicht. Der Code ist jetzt so, dass man bei einem abweichenden Eintrag die Meldung bekommt und der Eintrag gelöscht wird. Man könnte es aber auch so machen, dass die letzten falschen Zeichen entfernt werden, bis ein noch zulässige Eintrag drin steht ( bspw. eingabe von 12:a führt zu 12: ) EInfach mal probieren. VG
Genau das ist es........
30.06.2017 20:06:04
STeve
Hahahaha.....hat sich überschnitten deine Antwort.
Man könnte es aber auch so machen, dass die letzten falschen Zeichen entfernt werden, bis ein noch zulässige Eintrag drin steht ( bspw. eingabe von 12:a führt zu 12: ) EInfach mal probieren. ..................du sprichst mir aus der Seele.......aber was muss ich da einfügen?
glg
Anzeige
AW: Genau das ist es........
30.06.2017 20:21:30
Matthias
Moin! Hier ein angepasster Code. Habe ein wenig was geändert. Er springt jetzt immer auf die letzte gültige Eingabe zurück. Wie immer bitte mal prüfen. VG

Private Sub cboJD_Uebersichtbei_3_Change()
Dim eintrag()
Dim i As Long
Dim wert As String
Dim teil
If Me.cboJD_Uebersichtbei_3.Tag = "x" Then Exit Sub
eintrag = Array(0, 1, 1, ":", 1, 1, " ", "b", "i", "s", " ", 1, 1, ":", 1, 1)
wert = cboJD_Uebersichtbei_3.Value
If wert = "" Then Exit Sub
For i = 1 To Len(wert)
If Len(wert) > UBound(eintrag) Then
wert = Left(wert, UBound(eintrag))
Me.cboJD_Uebersichtbei_3.Tag = "x"
Me.cboJD_Uebersichtbei_3.Value = wert
Me.cboJD_Uebersichtbei_3.Tag = ""
End If
If Asc(Mid(wert, i, 1)) > 47 And Asc(Mid(wert, i, 1))  eintrag(i) Then
If Me.cboJD_Uebersichtbei_3.Tag  "y" Then MsgBox "Bitte nur Werte wie " & Chr(10) & "  _
00:00 bis 23:59" & Chr(10) & "eingeben.", , "Falsche Eingabe"
Me.cboJD_Uebersichtbei_3.Tag = "y"
cboJD_Uebersichtbei_3.Value = Left(wert, Len(wert) - 1)
Me.cboJD_Uebersichtbei_3.Tag = ""
Exit Sub
End If
Next i
End Sub

Anzeige
Super Matthias.......bin sprachlos
30.06.2017 20:36:46
STeve
Hi Könner und Gönner - Matthias.
Unglaublich genau soll es laufen.
Der User kann ja fast gar nichts mehr falsch machen, außer er trägt nicht den kompletten Datensatz
wie zB.22.15 bis 23:00 sondern nur
22:15 bis
(also nicht die ganze Anzahl von den notwendigen Zeichen das sind 15 STück) ein.
Hast du da auch noch eine Idee.
mfg
AW: Super Matthias.......bin sprachlos
30.06.2017 20:44:17
Matthias
Dann noch das hier in den Codeteil. Damit prüfst du, ob 15 Zeichen eingebeben wurden. Wenn nicht, kannst du die Box nicht verlassen. Somit muss mindestens etwas ausgewählt oder eingetragen werden - was auch passen soll. VG

Private Sub cboJD_Uebersichtbei_3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Len(cboJD_Uebersichtbei_3.Value) 

Anzeige
Danke Matthias hat sich erl. - große Klasse
30.06.2017 20:03:13
STeve
Hi Matthias -------ich nochmal. Ich Depp du hast ja eh alles schon komplett hergerichtet habe gesehen dass es bei Userform Eintragung (deines Codes)
Private Sub cboJD_Uebersichtbei_3_Change()
alles schon am laufen ist.
Es läuft echt schnell und somit perfekt.
Musste cboJD_Uebersichtbei_3.Value = "" rausnehmen da wenn der User fast am Ende des Eintrages einen Fehler macht - dann ist ja alles futsch.:-((((
Vielleicht hast du noch die Lösung wie bei Eingabe- Fehler und Erscheinen der MsgBox - danach nur der letzte falsch eingetragene Wert (also 1 Zeichen) entfernt wird und der User wieder weiter eintragen kann.?
Habe jetzt auch - damit es nach der MsgBox wieder in die Cbo hüpft.
Me.cboJD_Uebersichtbei_3.SetFocus ' eingetragen
Bin begeistert was du so aus dem Ärmel schüttelst.....einfach gewaltig.
DANKE nochmal
lg
Anzeige
Wünsche dir ein traumhaftes WE... Danke
30.06.2017 20:53:18
STeve
Du hast es geschafft. DANKE DANKE
So ist es perfekt.
Für mich bist ein Held und ein Genie.......... und leider zeigt mir das gleichzeitig wie wenig ich Ahnung habe.
Schönen Abend noch dir.
LG STeve

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige