我有基于更改下拉列表中值的隐藏和取消隐藏行中行的代码。每次我更改下拉列表时,我都会得到'1004'的运行时错误。我之前有一个私人Sub,并将其更改为Sub,但这似乎不是解决方案。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Set rng = Target.Parent.Range("L6")
If Target.Count > 1 Then Exit Sub
If Intersect(Target, rng) Is Nothing Then Exit Sub
Application.Run "dynamic_hide"
End Sub
Sub dynamic_hide()
If Target.Range = "$S$9:$S$51" Then
If Target.Range = 0 Then Rows("F9:T51").EntireRow.Hidden = True
If Target.Value <> 0 Then Rows("F9:T51").EntireRow.Hidden = False
End If
End Sub
答案 0 :(得分:0)
你在这里遇到一些问题:
首先,Range
对象的默认属性为Value
,因此Target.Range = "$S$9:$S$51"
始终为false。请改用Target.Address
。
其次,请勿使用Application.Run
从同一Subs
使用VBProject.
拨打Call
。
第三,您不允许子dynamic_hide
知道Target
是什么,因为Target
只是Worksheet_Change
事件子例程的参数。你可以通过声明你的子类Sub dynamic_hide(ByVal Target As Range)
然后你可以使用它来解决这个问题:Call dynamic_hide(Target)
最后,由于Target
是一个范围,因此您不需要使用Target.Range
,因为Target
是一个范围,所以您可以简单地省略.Range
中的每一个Target.Range
{1}} Target.Parent.Range
没问题。