PDA

Vollständige Version anzeigen : Formularobjekte zusammengefasst bearbeiten


OliverGerds
28.04.2011, 09:12
Moin,

ich habe das berühmte Brett vor dem Kopf.

ich möchte in einem Formular mehrere Felder via VBA mit Eigenschaften versehen.
Momentan mache ich dies so.

Me.Start.Locked = -1
Me.Link.Locked = -1
Me.Status.Locked = -1
Me.Prio.Locked = -1
.....


Wie kann ich die ganzen Objekte zusammenfassen?
Oder geht das nicht?

Grüße
Oliver

Fred_BS
28.04.2011, 09:16
Hallo Oliver,

du kannst die Controls-Auflistung in einer For...Next Schleife durchlaufen und für alle/bestimmte Controls etwas festlegen. Zur Unterscheidung benutze ich dabei gerne die "Tag" Eigenschaft.

HTH
Fred

OliverGerds
28.04.2011, 09:25
Hallo Fred,

Entschuldigung!
Ich hätte gleich mal sagen sollen, dass ich nicht gerade viel Ahnung habe.
Ich verstehe kaum, was du mir damit sagen willst, geschweige, dass ich überhaupt eine Ahnung davon habe, wie ich dies umsetzen sollte.

Vielleicht hast du ja ein Beispiel. Damit finde ich mich vielleicht dann zurecht.

Gruß
Oliver

Atrus2711
28.04.2011, 09:30
Hi,

die relevanten Elemente kannst du manuell in der Eigenschaft Marke (engl. Tag) mit einem beliebigen Kennzeichen belegen. Dieses Kennzeichen kannst du per VBA auswerten, in dem du alle Steuerelemente des Formulars per Schleife durchgehst und jeweils den Tag untersuchst. Etwa so:


Dim ctl as Control 'oder variant
For each ctl in Me.Controls
If ctl.tag = "X" Then
ctl.Locked = Not ctl.Locked 'Umschalten
End If
Next ctl

Fred_BS
28.04.2011, 09:46
Hallo Oliver,

nehmen wir mal an, das Setzen der Eigenschaften soll beim Anzeigen eines Datensatzes passieren, dann könnte das so aussehen:

Private Sub Form_Current()
Dim ctl As Control

For Each ctl In Me.Controls
if ctl.Controltype = acTextBox ' nur Textfelder
If ctl.Tag = 1 Then
ctl.Locked = True
ElseIf ctl.Tag = 2 Then
ctl.Locked = False
Else
ctl.BackColor = vbRed
End If
end if
Next
End Sub

Die Controltype-Eigenschaft zu prüfen ist notwendig, da nicht alles für alle Controls gesetzt werden kann.
Die TAG - Eigenschaft setzt Du nach Bedarf im Eigenschaftsfenster des Controls unter "Andere" - "Marke".

HTH
Fred

OliverGerds
28.04.2011, 15:59
Hallo Martin, hallo Fred,

Vielen Dank!
Da habe ich mir jetzt aber einige (viele) Zeilen Code sparen können.

Grüße
Oliver