运行时错误:Excel Macro 2016中的'9'下标超出范围

时间:2018-08-31 14:37:16

标签: vba excel-vba

我需要根据封面上的值设置为True还是空白来隐藏或取消隐藏excel电子表格中的某些标签。

在宏中使用下面的代码,直到到达最后一个选项卡为止。

例如:选项卡1和2设置为True,选项卡3和4为空白。

运行宏时,它将使选项卡1和2可见,并隐藏选项卡3和4,但随后失败,并显示错误消息

run-time error '9' subscript out of range

我猜这是因为没有东西可以检查,所以它失败了。如何告诉宏停止?当我调试代码时,它突出显示了其他(Worksheets(cell.Value).Visible = xlSheetHidden)之后的行

If (Worksheets ("Cover").Cells(rValue, cell.Column).Value = True) Then
    Worksheets(cell.Value).Visible = xlSheetVisible
Else 
    Worksheets(cell.Value).Visible = xlSheetHidden 
End If

1 个答案:

答案 0 :(得分:0)

这可以实现您的目标。

Private Sub hideshit()
    Dim arr As Variant
    Dim i As Long

    arr = ThisWorkbook.Sheets("Sheet1").UsedRange
    For i = LBound(arr, 1) To UBound(arr, 1)
        If arr(i, 2) = "n" Then
            Worksheets(i).Visible = False
        Else
            Worksheets(i).Visible = True
        End If
    Next i
End Sub

这是我的测试样本:

enter image description here