Tipp 2.6 - Controls in Array
Wie kann ich einem Array die Namen der Controls im angegebenen Formular übergeben?
Mit dieser Funktion können Sie einem Array 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 A2XCtlsToArray( _ psFrmName As String, _ pasControls() As String) _ As Integer '// ===================================================== '// Methode | Übergibt einem Array die Namen der '// | Controls im angegebenen Formular '// ----------------------------------------------------- '// Parameter | psFrmName - Name des Formulars '// | pasControls() - Array zum Füllen der '// | Namen '// ----------------------------------------------------- '// Rückgabe | Integer - Anzahl der Controls '// ----------------------------------------------------- '// Erstellt | Manuela Kulpa '// | EDV Innovation & Consulting - Dormagen '// ----------------------------------------------------- '// Beispielaufruf: '// Dim iCount As Integer '// Dim iCounter As Integer '// Dim asControls() As String '// '// iCount = A2XCtlsToArray("frmPersonal", _ '// asControls) '// Debug.Print "Formular Controls:" '// For iCounter = 0 To iCount - 1 '// Debug.Print iCounter & ": " & _ '// asControls(iCounter) '// Next iCounter '// ===================================================== 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 ' Ist das Formular im Entwurfs-Modus? If (Forms(psFrmName).CurrentView = 0) Then ' Ok, ist in Ordnung, tue nichts Else ' Nein, öffne es im Entwurfs-Modus DoCmd.OpenForm psFrmName, acDesign fBClose = True End If Else ' Öffne das Formular im Entwurfs-Modus DoCmd.OpenForm psFrmName, acDesign fBClose = True End If ' Formularobjekt setzen und Anzahl der Controls ' ermitteln Set frm = Forms(psFrmName) iCount = frm.Count ReDim pasControls(0 To iCount - 1) For Each ctl In frm.Controls pasControls(iCounter) = ctl.Name iCounter = iCounter + 1 Next ctl If fBClose Then DoCmd.Close acForm, psFrmName End If A2XCtlsToArray = iCount HandleExit: Exit Function HandleErr: Select Case Err.Number Case Else MsgBox "Fehler " & Err.Number & ": " & _ Err.Description, vbCritical, _ "basFrm.A2XCtlsToArray" End Select Resume HandleExit End Function