---Posted by Dev Ashish---

(Q) How can I cycle through the controls on a form and retrieve their names?

(A) Use the following function as an example. Pass the form's name to it and watch thedebug window!!

Note: Make sure you also copy fIsLoaded function since fEnumControlsuses it internally to make sure that the form to be enumerated is open.

 

'************ Code Start ***************'This code was originally written by Dev Ashish.'It is not to be altered or distributed,'except as part of an application.'You are free to use it in any application,'provided the copyright notice is left unchanged.'Code Courtesy of'Dev AshishFunction fEnumControls(ByVal strfrmToEnum As String)'prints out control's Type and Name'will NOT enumerate controls within an embedded subformDim astrCtlName() As StringDim i As Integer, intCnt As IntegerDim frm As Form'Un-Comment the next two lines for Access 95'Const acPage = 124'Const acTabCtl = 123    'if form is closed, exit function    If Not fIsLoaded(strfrmToEnum) Then        MsgBox "Form " & strfrmToEnum & " is probably closed!! " & _            vbCrLf & "Please open it & try again.", vbCritical        Exit Function    End If    Set frm = Forms(strfrmToEnum)    'Count the number of controls    intCnt = frm.Count        'Initialize the array to hold control names    ReDim astrCtlName(0 To intCnt - 1, 0 To 1)    For i = 0 To intCnt - 1        astrCtlName(i, 0) = frm(i).Name        'Use ControlType to determine the Type of Control        Select Case frm(i).ControlType            Case acLabel: astrCtlName(i, 1) = "Label"            Case acRectangle: astrCtlName(i, 1) = "Rectangle"            Case acLine: astrCtlName(i, 1) = "Line"            Case acImage: astrCtlName(i, 1) = "Image"            Case acCommandButton: astrCtlName(i, 1) = "Command Button"            Case acOptionButton: astrCtlName(i, 1) = "Option button"            Case acCheckBox: astrCtlName(i, 1) = "Check box"            Case acOptionGroup: astrCtlName(i, 1) = "Option group"            Case acBoundObjectFrame: astrCtlName(i, 1) = "Bound object frame"            Case acTextBox: astrCtlName(i, 1) = "Text Box"            Case acListBox: astrCtlName(i, 1) = "List box"            Case acComboBox: astrCtlName(i, 1) = "Combo box"            Case acSubform: astrCtlName(i, 1) = "SubForm"            Case acObjectFrame: astrCtlName(i, 1) = "Unbound object frame or chart"            Case acPageBreak: astrCtlName(i, 1) = "Page break"            Case acPage: astrCtlName(i, 1) = "Page"            Case acCustomControl: astrCtlName(i, 1) = "ActiveX (custom) control"            Case acToggleButton: astrCtlName(i, 1) = "Toggle Button"            Case acTabCtl: astrCtlName(i, 1) = "Tab Control"        End Select    Next i        'Print out the array in an orderly fashion    Debug.Print "Control Name", "Control Type"    Debug.Print "------------", "------------"    For i = 0 To intCnt - 1        Debug.Print astrCtlName(i, 0), astrCtlName(i, 1)    Next i    Erase astrCtlNameEnd Function'************ Code End ***************