Excel 基于if语句VBA动态隐藏行
我希望有人能在以下方面帮助我: 我试图根据另一个工作表上的值动态隐藏行。然而,我得到了错误“Next without For”,但我也不确定代码的功能。如果有人能在这里帮助我,我将非常感激Excel 基于if语句VBA动态隐藏行,excel,vba,Excel,Vba,我希望有人能在以下方面帮助我: 我试图根据另一个工作表上的值动态隐藏行。然而,我得到了错误“Next without For”,但我也不确定代码的功能。如果有人能在这里帮助我,我将非常感激 Sub Update() Dim x As Integer For x = 8 To 22 If Sheets("1").Cells(x, 3).Value = 0 Then Sheets("2").Rows("x - 3 : x - 3&
Sub Update()
Dim x As Integer
For x = 8 To 22
If Sheets("1").Cells(x, 3).Value = 0 Then
Sheets("2").Rows("x - 3 : x - 3").Select
Selection.EntireRow.Hidden = True
Else
Sheets("2").Rows("x - 3 : x - 3").Select
Selection.EntireRow.Hidden = False
End if
Next x
End Sub
编辑(解决方案)
有效的代码是:
Sub Update()
Dim x As Integer
For x = 8 To 22
If Sheets("1").Cells(x, 3).Value = 0 Then
Sheets("2").Rows((x - 3) & ":" & (x - 3)).Hidden = True
Else
Sheets("2").Rows((x - 3) & ":" & (x - 3)).Hidden = False
End If
Next x
End Sub
或
您可以更改此部分以简化代码,因为您不必选择工作表:
If Sheets("1").Cells(x, 3).Value = 0 Then
Sheets("2").Rows("x - 3 : x - 3").Select
Selection.EntireRow.Hidden = True
Else
致:
“x-3:x-3”
是一个字符串。正如@DS_London提到的使用(x-3)和“&(x-3)
Sheets(“2”)。行((x-3)和“:”&(x-3))。隐藏的
可以写Sheets(“2”)。行(x-3)。隐藏的
Dim x As Long
For x = 8 To 22
Sheets("2").Rows(x - 3).Hidden = Sheets("1").Cells(x, 3).Value = 0
Next x
您忘记在if语句之后键入
end if
。。谢谢但是,我仍然会遇到以下类型不匹配:工作表(“2”)。行(“x-3:x-3”)。选择。甚至可以这样定义它吗?我想你需要。在使用select之前激活工作表。“x-3:x-3”不会被解释为“5:5”。它应该是(x-3)&“&(x-3)。感谢DS_London的帮助,现在它工作得很好<代码>工作表(“1”)。单元格(x,3).Value=0将返回True或False-这是隐藏属性想要的。你可以把它放在那里。但对于0,空白单元格似乎也会返回True。考虑到这一点,你可以使用Sheets(“2”)。Rows(x)。Hidden=(Sheets(“1”)。Cells(x,3)。Value=0和Sheets(“1”)。Cells(x,3)。Value”“)
ya,这太先进了,他可能不理解lol。感谢Darren更全面的解释!
If Sheets("1").Cells(x, 3).Value = 0 Then
Sheets("2").Rows(x).Hidden = True
Else
Dim x As Long
For x = 8 To 22
Sheets("2").Rows(x - 3).Hidden = Sheets("1").Cells(x, 3).Value = 0
Next x