Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 基于if语句VBA动态隐藏行_Excel_Vba - Fatal编程技术网

Excel 基于if语句VBA动态隐藏行

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&

我希望有人能在以下方面帮助我:

我试图根据另一个工作表上的值动态隐藏行。然而,我得到了错误“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").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