Hallo,
ich habe 20 Textfelder in meinem Excel Sheet und muss nun bei jedem abfragen ob eine Null (oder Nichts) eingegeben wurde oder nicht.
Da ich so eine sehr lange If Abfrage bekomme, habe ich mir gedacht, dass Ganze mit einer for Schleife zu durchlaufen, und über den Index i das jeweilige Textfeld anzusprechen.
Hab versucht den String „Texfeld“ mit dem Index i zu verbinden und über die Methode Value den Wert abzufragen, aber das funktioniert nicht.
Hi Johanna,
um Mißverständnissen vorzubeugen: meinst du richtige Textfelder oder die Zellen von Excel?
Wenn du Textfelder meinst: vergib Indizes. Nenne sie alle z.B. „Text1“ und ändere die Index-Eigenschaft auf 1, 2, 3…20. Dann kannst du eine Schleife machen.
Ich hoffe, das geht in Excel so…
Möglichkeit 1:
Du könntest ein eindimensionales Datenfeld erstellen mit der gleichen Anzahl Felder wie TextBoxen auf Deinem Tabellenblatt vorhanden sind. Folgende Schritte wären dafür notwendig:
gehe über das Menü „Einfügen“ auf „Modul“
schreibe in den Deklarationsabschnitt des Modul-Code-Fensters folgenden Code:
Public MeinDatenfeld(1 To 20) As Variant
Dann müsstest Du für TextBox1 folgenden Code programmieren:
Private Sub TextBox1\_Change()
MeinDatenfeld(1) = TextBox1.Text
End Sub
Diesen Code müsstest Du dann entsprechend für alle 20 TextBoxen schreiben.
Danach kannst Du, um die eingetragenen Werte zu überprüfen, das Datenfeld in einer Schleife durchlaufen:
For a = 1 to 20
If MeinDatenfeld(a) = "" Then
'Code
End If
If MeinDatenfeld(a) = 0 Then
'Code
End If
Next
Möglichkeit 2:
Du verwendest das folgende Code-Prinzip:
Private Sub CommandButton1\_Click()
'Alle Textboxen auf einem Tabellenblatt
'der Button zum Auslösen dieser Prozedur befindet sich in diesem Beispiel auch auf der Tabelle
Dim shp As Shape
For Each shp In Me.Shapes
If shp.Type = msoOLEControlObject Then '12 = msoOLEControlObject 'Kontrolle ob: OLE
If shp.OLEFormat.progID Like "\*TextBox\*" Then ''Kontrolle ob: TextBox
If shp.OLEFormat.Object.Object.Text = 0 Then
MsgBox "In " & shp.OLEFormat.Object.Name & " steht eine 0"
End If
If shp.OLEFormat.Object.Object.Text = "" Then
MsgBox "In " & shp.OLEFormat.Object.Name & " steht nix"
End If
End If
End If
Next
End Sub
Allerdings weiss ich gar net genau was ein msoOLEControlObject genau ist, sind das sämtliche Steuerelemente auf dem Tabellenblatt, die dann abgearbeitet werden?
Was spricht man denn genau mit OLEFormat.Object.Object an, das Objekt selber ?
Also dankeschön!
Grüsse
Johanna
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hallo Johanna.
Bitte überschätze meine Fähigkeiten nicht. So genau kann ich Dir das auch alles nicht erklären. Der Code für ‚Möglichkeit 2‘ ist nicht zu 100 % von mir, da hatte ich selber mal Hilfe. Ist sogar noch nicht mal so lange her.
Wirklich professionelle Hilfe kannst Du hier erhalten: