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