|
|
Our Hot Pick: Rising Antivirus 2006 - Certified by TUV & Checkmark! Get 10% discount by entering this coupon code: ONDISCOUNT10
After searching a through the newsgroup and not finding anything that did exactly what I want, I've created the following functions to return a collection of controls in tab order. As I'm fairly new to Access VBA, are there any gotcha's here that I might be missing? If not, then hopefully others will find this code helpful.
---------------------------------------------------------------------------- Function HasTabStop(ctl As Access.Control) As Boolean ' Returns True if provided control has a TabStop property. On Error Resume Next HasTabStop = ctl.TabStop End Function
Function ControlsInTabOrder(FormSection As Access.Section) As Collection ' Returns an collection of controls in tab order.
Dim asControlNames() As String Dim colControlsInOrder As New Collection Dim ctl As Access.Control Dim i As Long
ReDim asControlNames(FormSection.Controls.Count)
For Each ctl In FormSection.Controls If HasTabStop(ctl) Then If ctl.TabStop = True Then asControlNames(ctl.TabIndex) = ctl.Name End If Next ctl
For i = 0 To UBound(asControlNames) If asControlNames(i) <> "" Then colControlsInOrder.Add FormSection.Controls(asControlNames(i)) End If Next i
Set ControlsInTabOrder = colControlsInOrder
Exit_Function: Exit Function Error_Handler: MsgBox "Error " & Err.Number & vbNewLine & _ Err.Description & vbNewLine & vbNewLine & _ "Problem occurs in ControlsInTabOrder of UDF", vbCritical, "Code Error" GoTo Exit_Function End Function ----------------------------------------------------------------------------
It can be used like this: ---------------------------------------------------------------------------- Sub ValidateForm() For Each ctl In ControlsInTabOrder(Me.Detail) If TypeName(ctl) <> "CommandButton" Then 'No need to validate buttons. Debug.Print ctl.TabIndex End If Next ctl End Sub ---------------------------------------------------------------------------
-Jeremy
|
|
|