Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1636to1640
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
ComboBoxen prüfen, Inhalt löschen
11.08.2018 10:16:23
Olga
Hallo,
in meiner Userform soll geprüft werden ob ein Datensatz komplett ausgefüllt wurde.
Wenn nicht soll eine Fehlermeldung kommen und die ComboBox setfocus bekommen.
Es funktioniert jedoch ist mein Code lange und da ich dies noch in 3 anderen gleichgestalteten Arten ausführen möchte, wollte ich nachfragen ob es nicht eine Verkürzung des Codes gibt.
Auch das mit dem "Löschen" gefällt mir nicht.
Danke!
Gruß
Olga
https://www.herber.de/bbs/user/123271.xlsm

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

Betreff
Datum
Anwender
Anzeige
AW: ComboBoxen prüfen, Inhalt löschen
11.08.2018 11:09:46
Daniel
Hi
du kannst doch die Controls über zwei Schleifen alle ansprechen (Nummer und Teilname) und so die Abfrage kürzer programmieren.
Außerdem kannst du das in eine Funktion auslagern, wenn es von mehreren Stellen genutzt werden soll.
Private Sub CommandButton1_Click()
If Not Check Like "F*" Then End
End Sub
Private Sub CommandButton2_Click()
MsgBox Check
End Sub
Private Function Check() As String
Dim ErgGesamt As String
Dim ErgEinzel As String
Dim i As Long
Const T1 As String = "cboReg_W"
Dim T2
Dim Zähler As Long
Dim Prüf As Long
For i = 1 To 8
Prüf = 0
ErgEinzel = ""
For Each T2 In Array("", "Masch", "S")
With Me.Controls(T1 & T2 & i)
If .Value = "" Then
ErgEinzel = ErgEinzel & vbLf & "- " & .Name
Else
Prüf = Prüf + 1
End If
End With
Next
Select Case Prüf
Case 0
Case 1, 2
ErgGesamt = ErgGesamt & ErgEinzel
Zähler = Zähler + 1
Case 3
Zähler = Zähler + 1
End Select
Next
If Zähler = 0 Then
Check = "nichts ausgefüllt"
Else
If ErgGesamt = "" Then
Check = "alles i.O."
Else
Check = "Folgende Felder müssen noch gefüllt werden:" & ErgGesamt
End If
End If
End Function
Gruß Daniel
Anzeige
AW: ComboBoxen prüfen, Inhalt löschen
11.08.2018 17:06:58
Olga
Hallo Daniel,
ist echt Super wie Du das gelöst hast. Besonders gut gefällt mit auch die Variante Like "F*" auf sowas muß man(n) erst mal kommen.
Danke!
Gruß
Olag
AW: ComboBoxen prüfen, Inhalt löschen
12.08.2018 08:12:08
olga
Hallo,
noch eine Frage zum prüfen.
Ich möchte das Array dynamisch gestalten.
Die Boxen sind gleich nur die Prüfung soll unterschiedlich namen haben.
Wie muß ich es bewerkstelligen das einmal nach CommandButton1 und einmal nach 2 geprüft wird.
Fehlermaldung kommt "With Me.Controls(T2 & i)" Typ unverträglich Laufzeitfehler 13
Danke!
Gruß
Olga
Dim arr() As Variant
Dim sPruef As String
Private Sub CommandButton1_Click()
arr = Array("cboReg_Werkzeug_Anzahl", "cboReg_Werkzeug_Maschine", "cboReg_Werkzeug_Stunden")
Check
End Sub
Private Sub CommandButton2_Click()
'arr = Array("cboReg_Material_Anzahl", "cboReg_Material_Einheit", "cboReg_Material_Bezeichnung") _
sPruef = "cboReg_Material_Anzahl""" & "," & """cboReg_Material_Einheit""" & "," & """ _
cboReg_Material_Bezeichnung"
Check
End Sub


Private Function Check() As String
Dim ErgGesamt As String
Dim ErgEinzel As String
Dim i As Long
Dim T2
Dim Zähler As Long
Dim Prüf As Long
For i = 1 To 8
Prüf = 0
ErgEinzel = ""
'     For Each T2 In Array(arr)
For Each T2 In Array(sPruef)
With Me.Controls(T2 & i)
If .Value = "" Then
ErgEinzel = ErgEinzel & vbLf & "- " & .Name
Else
Prüf = Prüf + 1
End If
End With
Next
Select Case Prüf
Case 0
Case 1, 2
ErgGesamt = ErgGesamt & ErgEinzel
Zähler = Zähler + 1
Case 3
Zähler = Zähler + 1
End Select
Next
If Zähler = 0 Then
Check = "nichts ausgefüllt"
Else
If ErgGesamt = "" Then
Check = "alles i.O."
Else
Check = "Folgende Felder müssen noch gefüllt werden:" & ErgGesamt
End If
End If
End Function

https://www.herber.de/bbs/user/123274.xlsm
Anzeige
AW: gelöst For Each T2 In arr
12.08.2018 09:19:38
olga
.

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige