Excel &引用;家属。计数“;语句在“中使用时重新启动宏”;工作表“U选择更改”;附属的

Excel &引用;家属。计数“;语句在“中使用时重新启动宏”;工作表“U选择更改”;附属的,excel,vba,error-handling,onclick,dependencies,Excel,Vba,Error Handling,Onclick,Dependencies,我正在尝试获取所选范围的依赖项的数量(如果所选范围中的单元格数量为1)。当我使用下面的代码时,它对所有单元格都能正常工作(对于没有任何依赖项的单元格和具有依赖项的单元格) 但当在工作表_SelectionChange中使用相同的逻辑时(如下代码所示) 它适用于没有任何依赖项的单元格,但适用于有依赖项的单元格“dependents.Count”重新启动宏。执行后 HasDependents = Something.Dependents.Count 语句,宏重新启动并执行 Sub Workshee

我正在尝试获取所选范围的依赖项的数量(如果所选范围中的单元格数量为1)。当我使用下面的代码时,它对所有单元格都能正常工作(对于没有任何依赖项的单元格和具有依赖项的单元格)

但当在工作表_SelectionChange中使用相同的逻辑时(如下代码所示)

它适用于没有任何依赖项的单元格,但适用于有依赖项的单元格“dependents.Count”重新启动宏。执行后

HasDependents = Something.Dependents.Count
语句,宏重新启动并执行

Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
再说一遍。我的问题是,为什么宏在执行“Dependents.Count”后在第二种情况下重新启动?
对于“工作表\u SelectionChange”,我已将代码放在工作表代码区域而不是模块中。

请求宏似乎触发了单元格选择事件。此外,只要未找到依赖项,就会抛出错误1004:未找到单元格。。依赖项的检索似乎是递归的;进入每个作为依赖项查找的对象,以查找另一层依赖项

我通过添加一个调用来禁用,从而使例程本身没有被调用,从而稳定了您的进程

Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
    If Target.Count = 1 Then
        On Error GoTo bm_Err_Exit
        Dim dc As Long
        Application.EnableEvents = False
        dc = Target.Dependents.Count
        If CBool(dc) Then
            'MsgBox Target.Address(0, 0) & Chr(10) & Chr(10) & _
                    dc & " dependancies found."
            Debug.Print Target.Address(0, 0) & Chr(10) & _
                    dc & " dependancies found."
        Else
            'never reaches here; error 1004 is thrown when no dependents
            'MsgBox "No dependancies found."
            Debug.Print "No dependancies found."
        End If
    End If
bm_Safe_Exit:
    Application.EnableEvents = True
    Exit Sub
bm_Err_Exit:
    Debug.Print Err.Number & ": " & Err.Description
    Application.EnableEvents = True
End Sub
当当前select没有依赖项时,基本错误控制报告了1004个错误


➣您可能希望浏览以及。

请求显示正在触发单元格选择事件的。此外,只要未找到依赖项,就会抛出错误1004:未找到单元格。。依赖项的检索似乎是递归的;进入每个作为依赖项查找的对象,以查找另一层依赖项

我通过添加一个调用来禁用,从而使例程本身没有被调用,从而稳定了您的进程

Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
    If Target.Count = 1 Then
        On Error GoTo bm_Err_Exit
        Dim dc As Long
        Application.EnableEvents = False
        dc = Target.Dependents.Count
        If CBool(dc) Then
            'MsgBox Target.Address(0, 0) & Chr(10) & Chr(10) & _
                    dc & " dependancies found."
            Debug.Print Target.Address(0, 0) & Chr(10) & _
                    dc & " dependancies found."
        Else
            'never reaches here; error 1004 is thrown when no dependents
            'MsgBox "No dependancies found."
            Debug.Print "No dependancies found."
        End If
    End If
bm_Safe_Exit:
    Application.EnableEvents = True
    Exit Sub
bm_Err_Exit:
    Debug.Print Err.Number & ": " & Err.Description
    Application.EnableEvents = True
End Sub
当当前select没有依赖项时,基本错误控制报告了1004个错误


CharStyle您可能希望探索的内容以及

Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
    If Target.Count = 1 Then
        On Error GoTo bm_Err_Exit
        Dim dc As Long
        Application.EnableEvents = False
        dc = Target.Dependents.Count
        If CBool(dc) Then
            'MsgBox Target.Address(0, 0) & Chr(10) & Chr(10) & _
                    dc & " dependancies found."
            Debug.Print Target.Address(0, 0) & Chr(10) & _
                    dc & " dependancies found."
        Else
            'never reaches here; error 1004 is thrown when no dependents
            'MsgBox "No dependancies found."
            Debug.Print "No dependancies found."
        End If
    End If
bm_Safe_Exit:
    Application.EnableEvents = True
    Exit Sub
bm_Err_Exit:
    Debug.Print Err.Number & ": " & Err.Description
    Application.EnableEvents = True
End Sub