Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Mit If mehr als vier Argumente prüfen ???
#11
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.
Antworten Top
#12
@ 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:
Antworten Top
#13
Anmerkung: Habe es auch schon versucht, ohne Listindex/Vorfestlegung eines Listenfeldes
klappt trotzdem nicht.
Antworten Top
#14
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
Antworten Top
#15
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
Antworten Top
#16
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:
  • soldblub
Antworten Top
#17
=-1 ändert nichts...
er prüft nur vier
...???
Antworten Top
#18
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.
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#19
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.
[-] Folgende(r) 1 Nutzer sagt Danke an BoskoBiati für diesen Beitrag:
  • soldblub
Antworten Top
#20
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
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste