我在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。它与您已经在使用的东西非常接近。