Posts tagged: VBA-Code

Kleine Code-Helferlein

By , 4. Februar 2020

Hallo,
heute möchte ich euch ein paar nützliche Code-Listings vorstellen, die mir bestimmte Arbeiten erleichtern.
Zum ersten ist es eine Prozedur, die mir geöffnete Objekte – Formulare oder Berichte – schließt ohne dass ich jedesmal „DoCmd.close acForm, Me.Name“ schreiben muss. Entwickler sind auch nur faule Menschen 🙂
Statt dessen schreibe ich der Einfachheit halber nur:

hide Me

Die Prozedur dazu in einem Modul sieht so aus:

Public Sub hide(ByRef obj As Object)
    If obj.Application.Forms.Count > 0 Then
        DoCmd.Close acForm, obj.Name
    Else
        DoCmd.Close acReport, obj.Name
    End If
End Sub

Das zweite Helferlein betrifft Dialog-Formulare die ich in diesem Zusammenhang dazu verwende um mir vom Anwender ein OK für irgendwas zu holen, sei es um was zu löschen oder sonst irgendwas. Die Function incl. der Deklaration einer globalen Variable in einem Modul sieht dazu wie folgt aus:

Global selectedOK As Boolean

Public Function CheckOK(ByVal cFormName As String, Optional ByVal vValue As Variant) As Boolean
    DoCmd.OpenForm cFormName, , , , , acDialog, vValue
    If selectedOK Then
        selectedOK = False
        CheckOK = True
    End If
End Function

Im aufgerufenen Formular kann ich dann im Form_Load-Ereignis Me.OpenArgs auswerten um z.B. einen bestimmten Text anzuzeigen o.Ä. In obiger Function wird in der If-Abfrage die globale Variable sofort wieder zurückgesetzt, so dass ich mir keine Gedanken machen muss um deren Status. Daher verwende ich auch den Rückgabewert dieser Function zur weiteren Code-Steuerung, und nicht die globale Variable irgendwo in einem Formular, weil eben nur hier ein nur einem einzigen Ort die Globale Variable zurückgesetzt wird.

Bei Klick auf einen Löschen-Button oder OK-Button in dem Dialog-Formular schreibe ich im entsprechenden Click-Ereignis dann nur folgendes:

Private Sub cmdDelete_Click()
    selectedOK = True
    hide Me
End Sub

Der dritte Tipp betrifft ein bestimmtes Sonderzeichen, welches beim Verwenden zu unerwünschten Ergebnissen führen kann. Hast du schon mal versucht folgenden Text in ein Bezeichnungsfeld über die Caption-Eigenschaft zu schreiben:

Me.Bezeichnungsfeld1.Caption = "Meier GmbH & Co. KG"

Man wird schnell feststellen dass Access das &-Zeichen anderst interpretiert. Die Lösung ist schlichtweg das &-Zeichen zu verdoppeln. Doch was wenn man statt mit Texten mit Variablen arbeitet? Jedesmal die Replace()-Funktion bemühen? Das war mir zu umständlich, so ist es zu folgendem Mini-Codelisting gekommen:

Public Function doubleAND(ByVal cValue As String) As String
    doubleAND = Replace(cValue, "&", "&&")
End Function

Jetzt kann ich ganz einfach wie folgt das schreiben:

Me.Bezeichnungsfeld1.Caption = doubleAND(Firmenname)

Das soll es jetzt fürs erste gewesen sein.
Bis dahin
©2020 Andreas Vogt

OfficeFolders theme by Themocracy