Ich möchte beim Öffnen der Mappe prüfen lassen, ob in UF "Parameter" bestimmte Textfelder mit Werten bestückt sind. Diese Werte sind oder werden in der gleichnamigen Tabelle hinterlegt.
Dazu habe ich im Netz folgenden Code gefunden und wollte ihn anpassen, aber er funktioniert nicht, wie erhofft.
Private Sub Workbook_Open()
Dim lngMonth As Long
Dim blnFound As Boolean
Dim objName As name
Dim ctrElement As control
For Each ctrElement In frm_Parameter.Controls
If TypeName(ctrElement) = "TextBox" Then
Select Case ctrElement.name
Case Is = "txt_Name", "txt_Funktion"
Case Else
If IsNull(ctrElement) Then
MsgBox "Bitte alle Pflichtfelder ausfüllen!" & ctrElement.name
frm_Parameter.Show
Exit For
End If
End Select
End If
Next ctrElement
Ursprünglich wollte ich jedem dieser Textfelder, die geprüft werden sollen, folgendes zuordnen.. _ .
With Sheets("Parameter")
If .Cells(15, 3).Value = "" Then 'Textfeld "Name"
MsgBox "Bitte deinen Namen eingeben!", vbOKOnly + vbInformation, "Parameter Name"
frm_Parameter.Show
End If
End With
und so weiter.
Dies wollte ich aber einfacher machen und kam auf die Idee einer Schleife. An ein Array hatte ich auch schon gedacht, aber da stehe ich aktuell auf dem Schlauch.
Nun passiert beim Start der Mappe nichts, obwohl txt_Name leer ist.
Wenn ich statt
If IsNull(ctrElement) Then
nun
If ctrElement.Value = "" Then
schreibe, kommt zwar die MsgBox, aber es wird eine vollkommend andere TextBox angezeigt und sie ist nicht mal leer. Die im Case angegebenen TextBoxen sind zwar leer, werden aber nicht genannt.
For Each ctrElement In frm_Parameter.Controls
If TypeName(ctrElement) = "TextBox" Then
Select Case ctrElement.name
Case Is = "txt_Name", "txt_Funktion"
Case Else
If ctrElement.Value = "" Then
MsgBox "Bitte alle Pflichtfelder ausfüllen!" & ctrElement.name
frm_Parameter.Show
Exit For
End If
End Select
End If
Next ctrElement
Wie kann ich die Gültigkeitsprüfung richtig machen?
Vielen Dank für eure Hilfe.
LG
Peer