如果多个单元格中的值等于0,我想隐藏一行。我尝试了此VBA代码,它“有效”,但最后没有隐藏具有0的行。
Sub Rehien_ausblenden()
Dim i As Integer
Application.ScreenUpdating = False
Worksheets("Daten").Activate
For i = 12 To 45
If Cells(i, 7).Value = 0 And Cells(i, 8).Value = 0 _
And Cells(i, 9).Value = 0 And Cells(i, 10).Value Then
Rows(i).EntireRow.Hidden = True
End If
Next
MsgBox ("Completed")
Application.ScreenUpdating = True
End Sub
答案 0 :(得分:0)
And Cells(i, 10).Value Then
可能缺少= 0
吗?请检查And Cells(i, 10).Value = 0 Then
是否有效。
我还建议进行以下更改:
.Activate
,而改为使用With
语句(阅读可能会有所帮助
How to avoid using Select in Excel VBA。Long
代替Integer
:在VBA(Why Use Integer Instead of Long?)中使用Integer
没有好处,但是使用Integer
行计数,因为Excel有超过Integer
无法处理的行。请注意,您的代码仅隐藏行,而从不取消隐藏任何内容。因此,即使您多次运行此命令,即使if
语句不再为真,任何隐藏的行也将始终保持隐藏状态。
Sub Rehien_ausblenden()
Application.ScreenUpdating = False
With ThisWorkbook.Worksheets("Daten")
Dim i As Long
For i = 12 To 45
If .Cells(i, 7).Value = 0 And .Cells(i, 8).Value = 0 _
And .Cells(i, 9).Value = 0 And .Cells(i, 10).Value = 0 Then
.Rows(i).EntireRow.Hidden = True
End If
Next i
End With
MsgBox "Completed"
Application.ScreenUpdating = True
End Sub
答案 1 :(得分:0)
正如Ren所提到的,您确实需要按以下步骤更正代码:
If Cells(i, 7).Value = 0 And Cells(i, 8).Value = 0 _
And Cells(i, 9).Value = 0 And Cells(i, 10).Value = 0 Then
(在第10列的单元格中添加 = 0
)
此外,我想通知您,未在单元格中填充值也会导致单元格值为零:在我的情况下,我仅在第12行中填充了值0,其余均为空白但仍然隐藏了从12到45的所有行。