Tipp 2.7 - Controls in String

Wie kann ich einem String die Namen der Controls im angegebenen Formular übergeben?

Mit dieser Funktion können Sie einem String die Namen der Steuerelemente im angegebenen Formular übergeben. Kopieren Sie einfach nachfolgenden Quellcode in die Zwischenablage und fügen Sie anschließend den Inhalt der Zwischenablage in ein neues Modul ein. Die Aufrufparameter finden Sie im Quellcode beschrieben.

Beispiel:

Option Explicit
 
Public Function A2XCtlsToString( _
                                psFrmName As String, _
                                psDelimit As String, _
                                psIn As String) _
                                As Integer
  '// =====================================================
  '// Methode   | Übergibt einem String die Namen der
  '//           | Controls im angegebenen Formular
  '// -----------------------------------------------------
  '// Parameter | psFrmName - Name des Formulars
  '               psDelimit - Trennzeichen
  '               psIn      - Leerstring
  '// -----------------------------------------------------
  '// Rückgabe  | Integer - Anzahl der Controls
  '// -----------------------------------------------------
  '// Erstellt  | Manuela Kulpa
  '//           | EDV Innovation & Consulting - Dormagen
  '// -----------------------------------------------------
  '// Beispielaufruf:
  '// Dim iCount    As Integer
  '// Dim sControls As String
  '// iCount = A2XCtlsToString("frmPersonal", _
  '//                          "; ", _
  '//                          sControls)
  '// Debug.Print "Controls: " & sControls
  '// =====================================================
  On Error GoTo HandleErr
  Dim frm As Form
  Dim ctl As Control
 
  Dim iCount   As Integer
  Dim iCounter As Integer
  Dim fBClose   As Boolean
 
  ' Ist das Formular geöffnet?
  If SysCmd(acSysCmdGetObjectState, acForm, _
            psFrmName) <> 0 Then
    ' Wenn ja, befindet es sich im Entwurfs-Modus?
    If (Forms(psFrmName).CurrentView = 0) Then
      ' Ok, ist in Ordnung, tue nichts
    Else
      ' Nein, ok öffne es im Entwurfs-Modus
      DoCmd.OpenForm psFrmName, acDesign
      fBClose = True
    End If
  Else
    DoCmd.OpenForm psFrmName, acDesign
    fBClose = True
  End If
 
  ' Formularobjekt setzen und
  ' Anzahl Controls ermitteln
  Set frm = Forms(psFrmName)
  iCount = frm.Count
 
  For Each ctl In frm.Controls
    psIn = psIn & ctl.Name
    If iCounter < iCount - 1 Then
      psIn = psIn & psDelimit
    End If
  Next ctl
 
  If fBClose Then
    DoCmd.Close acForm, psFrmName
  End If
 
  A2XCtlsToString = iCount
 
HandleExit:
  Exit Function
 
HandleErr:
  Select Case Err.Number
    Case Else
      MsgBox "Fehler " & Err.Number & ": " & _
             Err.Description, vbCritical, _
             "basFrm.A2XCtlsToString"
  End Select
  Resume HandleExit
End Function