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 ???
#21
Hallo,

die Prüfung der Listboxen hast Du nicht richtig. Meine Anmerkungen hast Du nicht umgestzt.

Man prüft ob eine Listbox Inhalte hat, in dem man den Listcount feststellt, also über die Anzahl der Listeneinträge. Bei 0 sind keine.
Diese Prüfung brauchst Du nicht, da Deine Listboxen ja bei Aufruf der Userform gefüllt werden.

Da Du statt Komboboxen, welche man in solchen Fällen eigentlich nutzt, Listboxen verwendest, ist natürlich etwas Sichtbar aber nicht ausgewählt.
Erst wenn etwas aus der Listbox etwas ausgewählt wurde, kann man es auch identifizieren.
Da hatte ich ja geschrieben, dass man dafür den Listindex prüft. Ist der > -1 dann  ist ein Eintrag ausgewählt.
Zum Verständnis:
Listindex = 0 -> 1. Eintrag aus der Listbox
Listindex = 1 -> 2. Eintrag aus der Listbox usw.

Zu guter Letzt hoffe ich, dass meine Erklärungen irgendwann irgend jemandem nutzen.

Deswegen unten Dein Code mit den nötigen Änderungen:


Code:
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 auswählen" & vbCrLf ' MsgStr aufbauen
lstTeam.SetFocus
Exit Sub
End If

If lstFahrzeug.ListIndex = -1 Then ' Abfrage der einzelnen Felder
MsgBox CStr(Lauf) & ". Bitte Fahrzeug auswählen" & vbCrLf ' MsgStr aufbauen
lstFahrzeug.SetFocus
Exit Sub
End If

If lstKennzeichen.ListIndex = -1 Then ' Abfrage der einzelnen Felder
MsgBox CStr(Lauf) & ". Bitte Kennzeichen auswählen" & vbCrLf ' MsgStr aufbauen
lstKennzeichen.SetFocus
Exit Sub
End If

If lstTechnik.Value.ListIndex = -1 Then ' Abfrage der einzelnen Felder
MsgBox CStr(Lauf) & ". Bitte Technik auswählen" & vbCrLf ' MsgStr aufbauen
lstTechnik.SetFocus
Exit Sub
End If


If 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.Value = "" Then ' Abfrage der einzelnen Felder
MsgBox CStr(Lauf) & ". Bitte Fahrer eingeben" & vbCrLf ' MsgStr aufbauen
lstFahrer.SetFocus
Exit Sub
End If

If lstBeifahrer.Value = "" Then ' Abfrage der einzelnen Felder
MsgBox CStr(Lauf) & ". Bitte Beifahrer eingeben" & vbCrLf ' MsgStr aufbauen
lstBeifahrer.SetFocus
Exit Sub
End If

If Val(edtGesamtzeitBAB.Value) = 0 Then ' Abfrage der einzelnen Felder
MsgBox CStr(Lauf) & ". Bitte Gesamtzeitstunden eingeben" & vbCrLf ' MsgStr aufbauen
edtGesamtzeitBAB.SetFocus
Exit Sub
End If

If Val(edtGesamtzeitAStr) = 0 Then ' Abfrage der einzelnen Felder
MsgBox CStr(Lauf) & ". Bitte Gesamtzeitstunden eingeben" & vbCrLf ' MsgStr aufbauen
edtGesamtzeitBAB.SetFocus
Exit Sub
End If

Speicherort

End Sub

Und Edgars Einlassung ist auch richtig, nur wenn eine Textbox keinen Inhalt hat, dann wird es an der Stelle wieder zum Fehler kommen.
Deshalb habe ich dass noch etwas angepasst. Mit Val() wird auch "" geschluckt.
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • soldblub
Antworten Top
#22
(23.02.2017, 09:27)snb schrieb: Diese Code reicht:


nee, reicht nicht.
Gruß Atilla
Antworten Top
#23
super, vielen Dank für die ganzen Anmerkungen und Kommentare


>aktuell läufts
Antworten Top
#24
@Att

Zu wenig Infos. Dann ist deine Bemerkung sinnlos. (und etwas höfflicher wäre auch nicht falsch)
Du darfst immer einen Vorschlag anpassen.

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 Me(it)="" then msgbox array("Bitte " & mid(it,4) & " eingeben"
  if me(it)="" then it.setfocus
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#25
Hallo snb,


Huh   Huh   Huh 

:92:  :92:  :92:

Du schreibst: "dieser Code reicht" mehr nicht
und ich schreibe "nee, reicht nicht" und ich bin unhöflich.

Das ist nicht in Ordnung. Infos sind genügend da. Vor Deinem Beitrag hatte ich den TE darauf hingewiesen, dass Listboxen anders abgefragt werden.
In Deinem Code finde ich nirgends eine Abfrage auf Listboxen. Darum ist Dein Code nicht ausreichend!
Das hat nichts damit zu tun, dass man auf die von Dir eingestellte Art, einiges zusammenfassen kann und teils auch einfacher zu handhaben ist.
Beim Nächten ähnlichen Problem kann es sogar sein, dass ich eine angepasste Version Deines Codes nutze.

Weitere Infos findest Du auch in den Folgebeiträgen. Du liest keine Beiträge und schreibst: "zu wenig Infos"

Ich finde das Kopfschütteln Smily nicht, sonst würde ich jetzt 10 davon hier einfügen.
Dann musst Du jetzt ohne Smilys auskommen.
Gruß Atilla
Antworten Top


Gehe zu:


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