Code Snippet "VBA Access"
Access-Formular mit Kombinationsfeld anstelle von InputBox
Problem: Aus Access-Formularen können keine Variablen byValue zurückgegeben werden, d.h. es wird empfohlen, auf globale Variablen zurückzugreifen Eine Kombination von Formular-Eigenschaften und Aufruf als Dialogfenster ermöglicht lokale Variablen
'Formular enthält Schaltflächen btnOK und btnCancel (eigene) sowie ausgeblendetes Bezeichnungsfeld lblWeiter
'Formulareigenschaften einstellen, damit kein Schliessen möglich
'Mit Systemmenüfeld: Nein
'Schliessen Schaltfläche: Nein
'Aufruf des Formulars
'Funktion zum Starten der Erzeugung eines dekodierten Textes in Word
Function funGenerateDekodierungWord()
Dim lngTextNrLokal As Long
Dim blnWeiter As Boolean
'Öffnen als Dialogfenster, d.h. Code wird unterbrochen
DoCmd.OpenForm "frmAuswahlText", , , , , acDialog, "In Programm"
blnWeiter = CBool(Application.Forms("frmAuswahlText").Controls("lblWeiter").Caption)
'Ausstieg wenn nichts ausgewählt oder Schaltfläche Abbrechen
If IsNull(Application.Forms("frmAuswahlText").Controls("cboAuswahl")) Or Not blnWeiter Then
Exit Function
End If
lngTextNrLokal = Application.Forms("frmAuswahlText").Controls("cboAuswahl")
'Formular schliessen
DoCmd.Close acForm, "frmAuswahlText"
If IsNumeric(lngTextNrLokal) Then
Call procGenerateDekodierungWord(lngTextNrLokal)
End If
End Function
'Aufgerufen durch Schaltflächen von frmAuswahlText
'Schaltfläche Weiter übergibt -1 und Schaltfläche Abbrechen 0
Function funBtnFrmAuswahlText(ByVal intButton As Integer)
'Der von Schaltflächen übergebene Wert wird in ausgeblendetem Bezeichnungsfeld zwischengespeichert
Application.Forms("frmAuswahlText").Controls("lblWeiter").Caption = intButton
'Wenn keine OpenArgs vorhanden (direkt aufgerufen), Formular schliessen, sonst ausblenden
If Application.Forms("frmAuswahlText").OpenArgs <> "" Then
Application.Forms("frmAuswahlText").Visible = False
Else
DoCmd.Close acForm, "frmAuswahlText"
End If
End Function