Kann man mehrere Eigenschaften von Formualfeldern setzen?

Es kommt öfter vor, dass man Eigenschaften von verschiedenen Formularfeldern per VBA setzen möchte, z.B. bei einem neuen Datensatz sollen bestimmte Felder zur Eingabe offen sein, bei einem existierenden Datensatz nicht.

Für die o.g. Aufgabe prüft man im Formular ('Beim Anzeigen') zunächst, ob der Datensatz neu ist oder nicht.

Private Sub Form_Current()
If Me.NewRecord = False Then
...
Else
...
End If

Wenn mehrere Felder nach demselben Schema bearbeitet werden sollen, bietet es sich an, bei den betroffenen Feldern in der Eigenschaft 'Marke' einen Wert einzutragen, der dann in einer Prozedur abgefragt wird.

Funktion:
Public Function tk_Controls_Property(objF As Form, strMarke As String, strProperty As String, _
                                     Optional varValue As Variant = False)
 
'*******************************************
'Name:      tk_Controls_Property (Function)
'Purpose:
'Author:    Thomas Keßler
'Date:      Februar 20, 2004, 07:00:00
'Inputs:    objF = Formular, strMarke = Tag der Controls im Form,strProperty= Name der Eigenschaft
'           ("Enabled","Locked","Visible","BackStyle","FontSize","FontBold","BorderStyle",
'            "SpecialEffect","Value","Empty")
'           varValue=Wert der Eigenschaft
'Output:
'Example:   tk_Controls_Property3 Me, "DS", "FontBold", True
'           Ändert die Schriftart in allen Controls deren Tag "DS" enthält, in Fett
'*******************************************
On Error GoTo Err_Handler
 
Dim intI As Integer, objC As Control, varX As Variant
 
 For Each objC In objF.Controls
    'Für jedes Objekt im übergebenem Formular
    If InStr(objC.Tag, strMarke) > 0 Then
        'Wenn der gleiche Ausdruck in der Marke steht, wie übergeben
        Select Case strProperty
            'Ein Select um die einzelnen Eigenschaften zu verarbeiten
            Case "Enabled", "Locked", "Visible", "BackStyle", "FontSize", "FontBold", "BorderStyle", "SpecialEffect"
                'Für diese Eigenschaften
                objC.Properties(strProperty) = varValue
                    'Setze die entsprechenden Eigenschaften auf den übergebenen Wert
                If TypeOf objC Is SubForm Then
                    'Wenn es sich um ein Unterformular handelt
                    varX = tk_Controls_Property(objF, strMarke, strProperty, varValue)
                        'Rufe diese Funktion erneut auf, allerdings ist dann das Formular, das Unterformular
                End If
            Case "Value"
                'Wenn es sich um den Wert handelt
                objC = varValue
                    'Schreibe diesen in das Feld
                If TypeOf objC Is SubForm Then
                    varX = tk_Controls_Property(objF, strMarke, strProperty, varValue)
                End If
            Case "Empty"
                'Wenn geprüft werden soll, ob es leer ist
                If Len(Nz(objC, "")) = 0 Then
                    'Len(Nz(Feld, "") = 0 ist sicherer, da ein einfaches Leerzeichen IsNull(Feld) aufhebt
                    objC.SetFocus
                        'Setze den Focus auf das entsprechende Feld
                    MsgBox "Leider fehlt eine Eingabe in " & objC.Name & vbCrLf & _
                            "Eine Eingabe ist in diesem Feld erforderlich.", vbOKOnly + vbCritical, "Eingabefehler"
                        'Gebe eine Messagebox aus
                End If
            Case Else
                GoTo Err_Handler_Exit
        End Select
    End If
Next objC
 
'Fehlerbehandlung
Err_Handler_Exit:
    Exit Function
Err_Handler:
    If Err = 2455 Then
        Resume Next
    Else
        Dim strErrString As String
        strErrString = "Error Information..." & vbCrLf
        strErrString = strErrString & "Error#: " & Err.Number & vbCrLf
        strErrString = strErrString & "Description: " & Err.Description & vbCrLf
        MsgBox strErrString, vbCritical + vbOKOnly, "Error in Function: tk_ControlsProperty3 "
        GoTo Err_Handler_Exit
    End If
End Function

Funktionsaufruf:
allgemein - tk_Controls_Property Formularname, "Eintrag in Marke", "Formulareigenschaft", Wert
Beispiel - tk_Controls_Property Me, "Sperren", "Locked", True

-- KerstinSchiebel - 29 Oct 2008
Topic revision: r1 - 2008-10-29, KerstinSchiebel
 
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding GSI Wiki? Send feedback
Imprint (in German)
Privacy Policy (in German)