Private Function IsCtrlArray(ctl As Control) As Boolean On Error GoTo CtrlErr
Debug.Assert ctl.Index IsCtrlArray = True Exit Function CtrlErr: IsCtrlArray = False End Function 如果函数返回True表示有控件数组。
问题: 如何判断某控件是否为控件数组? 解答: [chickenzzz(打呼噜的小鸡) 提供] 在 Form 中编写如下函数: Private Function IsControlArray(ControlName As String) As Boolean IsControlArray = (VBA.VarType(VBA.CallByName(Me, ControlName, VbGet)) = vbObject) 'IsControlArray = (VBA.TypeName(VBA.CallByName(Me, ControlName, VbGet)) = "Object") End Function
Private Function IsCtrlArray(ctl As Control) As Boolean On Error Resume Next Dim i As Integer Dim ctl As Control For Each ctl In Me.Controls Err.Clear i = ctl.Index If Err.Number = 0 Then IsCtrlArray = True Exit Function End If Next IsCtrlArray = False End Function
On Error GoTo CtrlErr
Debug.Assert ctl.Index
IsCtrlArray = True
Exit Function
CtrlErr:
IsCtrlArray = False
End Function
如果函数返回True表示有控件数组。
解答: [chickenzzz(打呼噜的小鸡) 提供]
在 Form 中编写如下函数:
Private Function IsControlArray(ControlName As String) As Boolean
IsControlArray = (VBA.VarType(VBA.CallByName(Me, ControlName, VbGet)) = vbObject)
'IsControlArray = (VBA.TypeName(VBA.CallByName(Me, ControlName, VbGet)) = "Object")
End Function
Private Function IsCtrlArray(ctl As Control) As Boolean
On Error Resume Next
Dim i As Integer
Dim ctl As Control
For Each ctl In Me.Controls
Err.Clear
i = ctl.Index
If Err.Number = 0 Then
IsCtrlArray = True
Exit Function
End If
Next
IsCtrlArray = False
End Function