VB 2008 - Zugriff auf 'Control'

Hallo,

ich habe auf einer UserForm verschiedene Steuerelemente - an der Stelle geht es um MaskedTextboxes.
Nun möchte ich per Kontrollkästchen dass einige Textboxen deaktiviert werden (Enabled = False).
Die Textboxen heißen „txt“ und dahinter eine fortlaufende zweistellige Nummer (eine für die Spalte und eine für die Zeile).

Nun wollte ich einen Code erstellen der folgendes sagt:

Spalte = 1 'in diesem Beispiel
For Zeile = 2 To 7 'das sind die Textboxen wo ich den Zugriff sperren möchte
Controls(„txt“ & Spalte & Zeile).Enabled = False
Next

So hatte ich das in Excel bisher gemacht (wenn ich mich recht erinnere).

VB 2008 macht da jedoch Probleme bzgl. Zugriff auf „Controls“.

Wisst Ihr wie ich das lösen kann?
Falls ihr die konkreten Fehlerbeschreibungen wollt müsste ich noch mal nachschauen (hab vb jetzt nicht offen).

LG

Hallo,
so würde ich es machen:

For Each ctrl As Control In Me.Controls
Dim reg As System.Text.RegularExpressions.Regex = New System.Text.RegularExpressions.Regex("^txt[2-7]")
If reg.Match(ctrl.Name).Success Then Debug.Print(ctrl.Name)
Next

Liebe Grüße, Tom

Statt

Debug.Print(ctrl.Name)

natürlich ctrl.Enabled=False

Liebe Grüße, Tom

Hallo Tom,

ich danke dir. Leider bin ich noch nicht zum testen gekommen :smile:

Eine Sache ist mir aufgefallen (hatte es nicht so ausführlich beschrieben): Meine Textfelder heißen nicht nur txt1 - txt7 sondern sind 2-Dimensional beschrieben. Also von txt11, txt12, … txt17 bis txt71 … txt77

Wie muss ich jetzt die Textfelder in deinem Code benennen, da es eben erst zur Laufzeit herauskommt ob ich den Code für die Zeile 2 (txt 2 1 … txt 2 7) oder für Zeile 5 (oder so) brauche.
Es sollte also nicht nur da stehen „^txt[2…7]“ sondern (so würde ich es „früher“ beschreiben): Controls(„txt“ & Zeile & Spalte).Enabled = False

LG Tobi@s

Hallo Tobi@s,
muss du denn eine Unterscheidung zwischen Zeile und Spalte treffen oder sind alle Textbox, die mit txt beginnen, betroffen?
Der reguläre Ausdruck kann leich angepasst werden: „^txt“ oder „^txt[2-7][0-9]“ oder „^txt[2-7]?“, … Je nachdem, welche Variante bei dir zutrifft. Die Syntax der regulären Ausdrücke schlägst du am besten in der Hilfe nach. Ein gutes Tool, dass dir beim erlernen von regulären Ausdrücken helfen kann, ist The Regulator.

Gruß, Tom

Hallo Metal-Frog,

oder sind alle Textbox, die mit txt beginnen, betroffen?

Also ich habe eine Userform in der 7 Spalten sind (für die Wochentage) und 7 Zeilen für verschiedene Mahlzeiten. In die Textboxen sollen nun die jeweiligen Preise eingetragen werden können.
Nun soll der Nutzer auswählen können (per Kontrollkästchen) ob für eine Speise ein „Wochenpreis“ da ist (oft bietet der Anbieter bei größeren Firmen auch Pauschal-Preise an). Dann soll er eben „Di - So“ auf Enabled = False setzen und nur durch Eintrag im Textfeld am Mo soll er die anderen Textfelder dann automatisch füllen.
Und deshalb habe ich die Textfelder „txt“ [Spalte][Zeile] benannt.

LG