Lan*_*rts 5 excel vba event-handling excel-vba
我在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
Run Code Online (Sandbox Code Playgroud)
我也试过"Target.Dependents Is Nothing".
Oor*_*ang 10
简短的回答,没有办法在没有引发错误的情况下测试家属,因为属性本身被设置为在访问时引发错误且没有任何错误.我不喜欢这个设计,但没有办法在没有压制错误的情况下阻止它.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
Run Code Online (Sandbox Code Playgroud)
解释,如果没有依赖项,则引发错误并且HasDependents的值保持不变,类型为default,即false,因此返回false.如果是家属,计值永远不会为零.所有非零整数都转换为true,因此当count被指定为返回值时,返回true.它与你已经使用的非常接近.