运行时错误' 1004'使用我的VBA来隐藏和取消隐藏行

时间:2015-02-23 16:38:29

标签: excel vba excel-vba

我有基于更改下拉列表中值的隐藏和取消隐藏行中行的代码。每次我更改下拉列表时,我都会得到'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

1 个答案:

答案 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没问题。