Clever-Excel-Forum

Normale Version: Mit If mehr als vier Argumente prüfen ???
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
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.
@ 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:
Anmerkung: Habe es auch schon versucht, ohne Listindex/Vorfestlegung eines Listenfeldes
klappt trotzdem nicht.
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.
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
Hallo,

prüfe mit

Code:
if lstFahrer.listindex = -1 then
=-1 ändert nichts...
er prüft nur vier
...???
Hallo,

kann nicht sein  Huh  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.
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!!!!!
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
Seiten: 1 2 3