Einführung "VBA mit Microsoft Office"

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