关于VBA,我仍然是一个初学者,我正在尝试编写一个代码,如果其单元格值等于0并且用户选择将另一个单元格值设置为正确的措辞,则该行将隐藏行。但是,我编写的代码似乎无效。我确定我已经忘记添加某些内容,或者丢失了一些关键元素,但似乎无法弄清楚它是什么。
我在下面发布了我的代码。任何帮助将非常感激。
Sub HideEmptyRows()
Application.EnableEvents = False
Worksheets("Filtered Data").Rows("7:600").EntireRow.Hidden = False
If Range("J7") = "Filter" Then
For Each cell In Range("J10:J503")
If cell.Value = 0 Then
cell.EntireRow.Hidden = True
End If
Next cell
Application.EnableEvents = True
End Sub
答案 0 :(得分:0)
考虑:
Sub HideEmptyRows()
Application.EnableEvents = False
With Worksheets("Filtered Data")
.Rows("7:600").EntireRow.Hidden = False
If .Range("J7") = "Filter" Then
For Each cell In .Range("J10:J503")
If cell.Value = 0 Then
cell.EntireRow.Hidden = True
End If
Next cell
End If
End With
Application.EnableEvents = True
End Sub
注意:
With
答案 1 :(得分:0)
您无需测试是否确实存在名为"Filtered Data"
的工作表。
您取消隐藏Worksheets("Filtered Data")
中的行,但随后检查值并在碰巧是ActiveSheet
的任何工作表中隐藏行。
您没有声明变量cell
。 Option Explicit
是个好朋友;使用它。
缺少End If
。
否则,代码会起作用;经过这样的测试:
Option Explicit
Sub HideEmptyRows()
Dim cell As Range
Application.EnableEvents = False
With Worksheets("Filtered Data")
.Rows("7:600").EntireRow.Hidden = False
If .Range("J7") = "Filter" Then
For Each cell In .Range("J10:J503")
If cell.Value = 0 Then
cell.EntireRow.Hidden = True
End If
Next cell
End If
End With
Application.EnableEvents = True
End Sub