VBA Excel For循环不按预期运行

时间:2014-08-25 05:37:00

标签: excel vba excel-vba

所以我有两个Subs,一个名为Show_Hide,另一个名为hideAllRows。这两个子都用于折叠Excel工作表中的大量行,我有一个for循环,它检查具有内容的单元格的部分,并告诉代码不要折叠这些单元格。 for循环嵌入在hideAllRows子区域内,该子组不起作用。代码不会返回任何错误,只有在执行hideAllRows时隐藏具有内容的单元格时,它才会起作用。

当按下按钮时,在hideAllRows子中调用ShowHide子,这允许我使用hideAllRows子来引用我想要显示或隐藏的行,这部分可以工作。我使用For循环来检测行是否有内容,如果有,则表单不应该隐藏它们,而是表单应显示这些行并隐藏不包含内容的单元格。我在这里做错了什么建议?代码

 Sub Show_Hide(RowColumn As String, RangeSelected As String, Hide As Boolean)
  Application.Calculation = xlCalculationManual
  If RowColumn = "Column" Then
    Columns(RangeSelected).Select
    Selection.EntireColumn.Hidden = Hide
  Else
    Rows(RangeSelected).Select
    Selection.EntireRow.Hidden = Hide
  End If
  Application.Calculation = xlCalculationAutomatic
 End Sub



Sub hideAllRows()

 Call Show_Hide("Row", "7:57", True)
 Call Show_Hide("Row", "59:68", True)
 Call Show_Hide("Row", "70:169", True)
 Call Show_Hide("Row", "171:180", True)
 Call Show_Hide("Row", "182:281", True)
 Call Show_Hide("Row", "283:332", True)
 Call Show_Hide("Row", "334:383", True)
 Call Show_Hide("Row", "385:434", True)
 Call Show_Hide("Row", "436:485", True)
 Call Show_Hide("Row", "487:496", True)
 Call Show_Hide("Row", "498:507", True)
 Call Show_Hide("Row", "509:518", True)

 Call Show_Hide("Row", "529:578", True)
 Call Show_Hide("Row", "580:589", True)
 Call Show_Hide("Row", "591:701", True)
 Call Show_Hide("Row", "703:802", True)
 Call Show_Hide("Row", "804:853", True)
 Call Show_Hide("Row", "855:904", True)
 Call Show_Hide("Row", "906:955", True)
 Call Show_Hide("Row", "957:1006", True)
 Call Show_Hide("Row", "1008:1017", True)
 Call Show_Hide("Row", "1019:1028", True)
 Call Show_Hide("Row", "1030:1039", True)
 Call Show_Hide("Row", "1041:1090", True)
 Call Show_Hide("Row", "1092:1141", True)
 Call Show_Hide("Row", "1143:1192", True)
 Call Show_Hide("Row", "1194:1244", True)
 Call Show_Hide("Row", "1261:1268", True)



 For i = 7 To 1269
    If i = 7 Then i = 1269
    Stuff = ActiveSheet.Cells(i, 1).Value
    If Stuff <> "" Then
        Rows(i & ":" & i).Select
        Selection.EntireRow.Hidden = False
    End If
 Next i
 Call UpdateButton(ActiveSheet.Shapes("Button13" & ActiveSheet.Name), "Show All Rows", "showAllRows")
 End Sub

1 个答案:

答案 0 :(得分:3)

此处,在If i = 7 Then i = 1269'您强制For循环退出。

您需要重新检查该部分。