Registriert seit: 13.02.2017
Version(en): 2013
also, das Datumsfeld (´TextBox)wird immer erkannt und geprüft, -liegt evtl. daran dass es das erste ist.
dann kommen vier Listboxen, von denen er manchmal welche prüft, mal wieder nicht...
das nächste ist eine TextBox die er auch prüft....
Ich habe bei den Listboxen über den Listindex sogar eine Vorauswahl festgelegt und trotzdem moniert er manchmal dass nichts angewählt ist und speichert den Inhalt auch nicht immer (wenn der Code das Feld übersprungen hat)
Was zusätzlich doof ist, da der Anwender ja die blaue Markierung sieht und denkt, da ist ja schon was ausgewählt und das passt.
Registriert seit: 13.02.2017
Version(en): 2013
@ Steffl
das erklärt aber noch nicht, warum er manchmal "den Inhalt" erkennt, manchmal nicht!
es funktioniert zwischendurch mit den TextBoxen und den Listenfeldern,
die Prüfung edtkilometer.value >999 klappt, Buchstaben schmeißt er als Fehler raus- alles wie gewünscht!
Da muss irgendwo anders der Wurm drin sein.
:69:
Registriert seit: 13.02.2017
Version(en): 2013
Anmerkung: Habe es auch schon versucht, ohne Listindex/Vorfestlegung eines Listenfeldes
klappt trotzdem nicht.
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo,
Textboxen und Listboxen sind aber zwei ganz unterschiedliche Dinge, müssen auch unterschiedlich abgehandelt werden.
Wenn man prüfen möchte, ob in einer Listbox eine Auswahl getätigt wurde, dann prüft man den Listindex. .Listindex > -1 bedeutet eine Auswahl ist gemacht.
Vielleicht stellst Du mal eine Beispieldatei ein.
Gruß Atilla
Registriert seit: 13.02.2017
Version(en): 2013
21.02.2017, 08:49
(Dieser Beitrag wurde zuletzt bearbeitet: 21.02.2017, 08:49 von soldblub.)
Hallo,
anbei die Datei..
es bleibt bei vier Pflichtfeldern, mehr prüft er nicht.
@atilla
warum erkennt er dann in einigen Fällen, wenn etwas im Listfeld ausgefüllt ist und dann wieder nicht?
ich würde dann prüfen??
if lstFahrer.listindex <-1 then
msgbox ""
lstFahrer.SetFocus
Exit Sub
End if
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo,
prüfe mit
Code:
if lstFahrer.listindex = -1 then
Gruß Stefan
Win 10 / Office 2016
Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:1 Nutzer sagt Danke an Steffl für diesen Beitrag 28
• soldblub
Registriert seit: 13.02.2017
Version(en): 2013
=-1 ändert nichts...
er prüft nur vier
...???
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo,
kann nicht sein

Ich habe mal die Exit Sub-Codezeilen und den Sprung ins Speichermakro auskommentiert und da kommen beim erstmaligen Aufruf 9 Meldungen (danach weniger da das Datum eingetragen wird).
Code:
Private Sub InhalteCheck1()
Dim MsgStr As String
Dim IstSel As Boolean
Dim Lauf As Long
MsgStr = "" ' Für die Ausgabe der Hinweise
IstSel = False ' Ist schon ein Eingabefeld selectiert??
Lauf = 0 ' Anzahl der "Fehler"
'
If EdtDatum.Value = "" Then ' Abfrage der einzelnen Felder
MsgBox CStr(Lauf) & ". Bitte Datum vorm Speichern eingeben" & vbCrLf ' MsgStr aufbauen
EdtDatum.SetFocus
' Exit Sub
End If
If lstTeam.ListIndex = -1 Then ' Abfrage der einzelnen Felder
MsgBox CStr(Lauf) & ". Bitte Team eingeben" & vbCrLf ' MsgStr aufbauen
lstTeam.SetFocus
' Exit Sub
End If
If lstFahrzeug.ListIndex = -1 Then ' Abfrage der einzelnen Felder
MsgBox CStr(Lauf) & ". Bitte Fahrzeug eingeben" & vbCrLf ' MsgStr aufbauen
lstFahrzeug.SetFocus
' Exit Sub
End If
If lstKennzeichen.ListIndex = -1 Then ' Abfrage der einzelnen Felder
MsgBox CStr(Lauf) & ". Bitte Kennzeichen eingeben" & vbCrLf ' MsgStr aufbauen
lstFahrzeug.SetFocus
' Exit Sub
End If
If lstTechnik.ListIndex = -1 Then ' Abfrage der einzelnen Felder
MsgBox CStr(Lauf) & ". Bitte Technik eingeben" & vbCrLf ' MsgStr aufbauen
lstTechnik.SetFocus
' Exit Sub
End If
If CLng(Val(edtKilometer.Value)) >= 999 Then ' Abfrage der einzelnen Felder
MsgBox CStr(Lauf) & ". Bitte Kilometer eingeben" & vbCrLf ' MsgStr aufbauen
edtKilometer.SetFocus
' Exit Sub
End If
If lstFahrer.ListIndex = -1 Then ' Abfrage der einzelnen Felder
MsgBox CStr(Lauf) & ". Bitte Fahrer eingeben" & vbCrLf ' MsgStr aufbauen
lstFahrer.SetFocus
' Exit Sub
End If
If lstBeifahrer.ListIndex = -1 Then ' Abfrage der einzelnen Felder
MsgBox CStr(Lauf) & ". Bitte Beifahrer eingeben" & vbCrLf ' MsgStr aufbauen
lstBeifahrer.SetFocus
' Exit Sub
End If
If Val(edtGesamtzeitBAB.Value) + Val(edtGesamtzeitAStr.Value) <= 0 Then ' Abfrage der einzelnen Felder
MsgBox CStr(Lauf) & ". Bitte Gesamtzeitstunden eingeben" & vbCrLf ' MsgStr aufbauen
edtGesamtzeitBAB.SetFocus
Exit Sub
End If
'Speicherort
End Sub
Teste mal und wenn alle Abfragen entferne die Kommentierung.
Gruß Stefan
Win 10 / Office 2016
Registriert seit: 13.04.2014
Version(en): 365
23.02.2017, 10:07
(Dieser Beitrag wurde zuletzt bearbeitet: 23.02.2017, 10:07 von BoskoBiati.)
Hallo,
ich halte das hier:
Code:
If edtGesamtzeitBAB.Value + edtGesamtzeitAStr.Value <= 0 Then ' Abfrage der einzelnen Felder
für sehr fragwürdig. Hier werden keine einzelnen Felder abgefragt! Wenn, dann müsste das so aussehen:
Code:
If edtGesamtzeitBAB.Value <0 or edtGesamtzeitAStr.Value < 0 Then ' Abfrage der einzelnen Felder
oder sogar trennen in zwei Abfragen! Momentan werden die beiden Felder in der Summe geprüft, wenn diese >0 ist dann ist es ok!
Es wird auch nirgendwo geprüft, ob die Eingaben schlüssig sind. Ich kann in Gesamt kleinere Werte eingeben als die Summe der Einzelwerte ergibt.
Größtes Problem ist, dass Du auf ="" abfragst, der Inhalt ist aber nicht "" sondern Null!!!!!
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Registriert seit: 29.09.2015
Version(en): 2030,5
23.02.2017, 10:27
(Dieser Beitrag wurde zuletzt bearbeitet: 23.02.2017, 10:27 von snb.)
Diese Code reicht:
Code:
Private Sub M_snb()
for each it in array("EdtDatum"," lstOrgaeinheit","lstFahrzeug","lstKennzeichen","lstTechnik","edtKilometer","lstBe1","lstBe2","edtGesamtzeitBAB")
If Me(it).Value = "" Then exit for
if left(it,4)="edtK" and edtKilometer.Value > 999 then exit for
If left(it,4)="edtG" and edtGesamtzeitBAB.Value + edtGesamtzeitAStr.Value <=01 then exit for
next
if it<>"" then msgbox array("Bitte " & mid(it,4) & " eingeben"
if it<>"" then it.setfocus
End Sub