我在Worksheet_Change事件中的Excel/VBA中发现了一个问题。我需要将Target.Dependents分配给Range,但是如果它没有任何依赖项,则会引发错误。我尝试测试Target.Dependents.Cells.Count,但这没有用。有任何想法吗?

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Cells.Count > 1 OR Target.Dependents.Cells.Count = 0 Then Exit Sub

Dim TestRange As Range

Set TestRange = Target.Dependents

我也尝试过“Target.Dependents什么都没有”。

最佳答案

简短的回答是,没有方法可以测试依赖项而不会引发错误,因为属性本​​身被设置为如果被访问就会引发错误,并且没有任何错误。我不喜欢这种设计,但是没有抑制错误的方法就无法阻止它。 AFAIK这是您将要做的最好的事情。

Sub Example()
    Dim rng As Excel.Range
    Set rng = Excel.Selection
    If HasDependents(rng) Then
        MsgBox rng.Dependents.Count & " dependancies found."
    Else
        MsgBox "No dependancies found."
    End If
End Sub

Public Function HasDependents(ByVal target As Excel.Range) As Boolean
    On Error Resume Next
    HasDependents = target.Dependents.Count
End Function

说明,如果没有依赖项,则会引发错误,并且HasDependents的值与default类型(false)保持不变,从而返回false。如果有从属,则计数值将永远不会为零。所有非零整数都将转换为true,因此当将count分配为返回值时,将返回true。它与您已经在使用的东西非常接近。

09-28 14:37