Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bitte an Matthias.....

Forumthread: Bitte an Matthias.....

Bitte an Matthias.....
01.07.2017 09:27:33
STeve
Noch zwei Bitten an Matthias:
Lieber Matthias - - Guten Morgen.
Habe jetzt User-Zeiteingabe-Format auf:
..:.. - ..:..
vereinfacht/geändert.
Bei deinem ua. cbo Code bräuchte ich noch:
1.) dass die Eingabe über 24:00 nicht möglich ist. Leider kann der User derzeit noch z.B. Zeiteintragungen von 34:00....44:99.....usw. eintragen.
konkret: Pos 1 und Pos 9 nur bis max. "2"
Pos 2 und Pos 10 nur bis max. "4"
Pos 4 und Pos 12 nur bis max. "5"
2.) Durch die Vereinfachung auf - (Bindestrich) müsste der Asc Code 45 - aber eben nur auf Pos 7 zulässig bzw. Pflicht sein.
Hier dein - geänderter - Code:
Private Sub cboJD_Uebersichtbei_3_Change()  'matthias am 30.6.17
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)   'bei "bis"  _
dann 15 STellen gesamt
eintrag = Array(0, 1, 1, ":", 1, 1, " ", "-", " ", 1, 1, ":", 1, 1)               ' nur mit  _
Bindestrich - = Asc Code 45, 13 STellen gesamt
wert = cboJD_Uebersichtbei_3.Value
If wert = "" Then Exit Sub
For i = 1 To Len(wert)
If i > 13 Then Exit Sub   'Eigenbau damit nicht mehr als 13 Stellen eingetragen werden können
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 "1.) Nur Werte von 00:00 - 24:00 mö _
glich!" & Chr(10) & "2.) G E N A U  Format ..:.. - ..:.. verwenden!", , "Falsche Eingabe von Wert oder Format:"
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

In der Hoffnung dass du mir das noch richtest verbleibe ich
mit LG
STeve
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Bitte an Matthias.....
01.07.2017 13:22:12
Matthias
Moin! Hier mal auf die schnelle eine Lösung. Das mit dem - wird schon über den Eintrag am Anfang festgelegt. Die Änderung von mehr als 13 Zeichen ist auch drin (wie vorher auch schon :-) ). Jetzt sollten nur noch die normalen Zahlen zulässig sein. Wie immer bitte ausprobieren und testen. Den Code mit dem Abbruch des Verlassens bei wenige als die gewünschten Zeichen, musst du übrigens noch anpassen.
Und eine Bitte - das ist aber nicht böse gemeint - bitte nicht soviel loben. Freut mich wenn der Code so wie gewünscht läuft, mehr brauche ich nicht (vor allem nicht in der Betreffzeile :-) ) . Schönes Wochenende noch und bei Fragen / Problemen einfach nochmal melden. VG
Private Sub cboJD_Uebersichtbei_3_Change()
Dim eintrag()
Dim i As Long
Dim wert As String
Dim teil
Dim temp
If Me.cboJD_Uebersichtbei_3.Tag = "x" Then Exit Sub
eintrag = Array(0, 1, 1, ":", 1, 1, " ", "-", " ", 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 = ""
Exit Sub
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 "1.) Nur Werte von 00:00 - 24:00 mö _
glich!" & Chr(10) & "2.) G E N A U  Format ..:.. - ..:.. verwenden!", , "Falsche Eingabe von Wert oder Format:"
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
DANKE....krieg aber die 5 stellige cbo nicht hin
01.07.2017 17:16:05
STeve
Hi Matthias.
Alles so eingebaut. Läuft sauber und schnell bei den 13 stelligen cbo.Perfekt+Spitze......halte mich mit dem loben zurück (auf alle Fälle in der Betreffzeile ;-)). Aber wem Lob gebührt dem soll es auch ausreichend zukommen.
Jetzt hab ich noch 5 stellige cbo's.....also einfach so: 22:00
zu befüllen.
Diese adaptierte ich auch auf deinen Code.............aber die Schleife durchblicke ich nicht (was ich rausnehmen kann):
Private Sub cboDienstbeginn_h_Change() 'progr. von Matthias am 1.7.17
Dim eintrag()
Dim i As Long
Dim wert As String
Dim teil
Dim temp
If Me.cboDienstbeginn_h.Tag = "x" Then Exit Sub
eintrag = Array(0, 1, 1, ":", 1, 1)
wert = cboDienstbeginn_h.Value
If wert = "" Then Exit Sub
For i = 1 To Len(wert)
If i > 5 Then Exit Sub
If Len(wert) > UBound(eintrag) Then
wert = Left(wert, UBound(eintrag))
Me.cboDienstbeginn_h.Tag = "x"
Me.cboDienstbeginn_h.Value = wert
Me.cboDienstbeginn_h.Tag = ""
Exit Sub
End If
If Asc(Mid(wert, i, 1)) > 47 And Asc(Mid(wert, i, 1))  'die Schleife müsste auf cboBox mit nur 5 Stellen  _
adaptiert werden
Case 1, 9
If temp  eintrag(i) Then
If Me.cboDienstbeginn_h.Tag  "y" Then MsgBox "1.) Nur Werte von 00:00 - 24:00 möglich! _
" & Chr(10) & "2.) G E N A U  Format ..:.. verwenden!", , "Falsche Eingabe von Wert oder Format:"
Me.cboDienstbeginn_h.Tag = "y"
cboDienstbeginn_h.Value = Left(wert, Len(wert) - 1)
Me.cboDienstbeginn_h.Tag = ""
Exit Sub
End If
Next i
End Sub

DANKE schon mal im voraus......
LG STeve
Anzeige
AW: DANKE....krieg aber die 5 stellige cbo nicht hin
01.07.2017 17:42:14
Matthias
Hallo! Das wäre der Code für die 5stellige Combo. Achte aber drauf, die Zeile von dir mit if i > 5 then Exit Sub, führt mE dazu, dass du mehr Werte einfügen kannst (das Makro löscht dann ja nichts mehr raus) - gilt genauso bei den 13 stelligen. In der Schleife die direkt darunter kommt, wird das schon bearbeitet (da steht Ubound(eintrag) für 5 ). Falls du mehrere Boxen hast, den Code einfach anpassen ( dann immer den Namen der Box da wo er vorkommt ändern) oder ich bastle noch eine wartungsfreundlichere Variante. Einfach nochmal melden. VG

Private Sub cboDienstbeginn_h_Change()
Dim eintrag()
Dim i As Long
Dim wert As String
Dim teil
Dim temp
If Me.cboDienstbeginn_h.Tag = "x" Then Exit Sub
eintrag = Array(0, 1, 1, ":", 1, 1)
wert = cboDienstbeginn_h.Value
For i = 1 To Len(wert)
If Len(wert) > UBound(eintrag) Then
wert = Left(wert, UBound(eintrag))
Me.cboDienstbeginn_h.Tag = "x"
Me.cboDienstbeginn_h.Value = wert
Me.cboDienstbeginn_h.Tag = ""
Exit Sub
End If
If Asc(Mid(wert, i, 1)) > 47 And Asc(Mid(wert, i, 1))  eintrag(i) Then
If Me.cboDienstbeginn_h.Tag  "y" Then MsgBox "1.) Nur Werte von 00:00 - 24:00 möglich! _
" & Chr(10) & "2.) G E N A U  Format ..:.. verwenden!", , "Falsche Eingabe von Wert oder Format:"
Me.cboDienstbeginn_h.Tag = "y"
cboDienstbeginn_h.Value = Left(wert, Len(wert) - 1)
Me.cboDienstbeginn_h.Tag = ""
Exit Sub
End If
Next i
End Sub

Anzeige
Mir bleibt nur mehr MERCI zu sagen.....
01.07.2017 19:35:13
STeve
Soooo Matthias......MERCI vielmals....für die so schnelle Bereitstellung des Codes und deine Hilfs-Bereitschaft.
Code wurde und wird von mir verarbeitet.
Klappt alles bestens.
Mein If i .. und 13 Then Exit Sub.... :-)
wird gestrichen.
Bist in meinem Abendgebet eingeschlossen!!!
Wünsch dir noch einen hoffentlich entspannten Samstag-Abend.
LG STeve
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige