Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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
如果值为真,则显示/隐藏列表-清除代码(VBA、EXCEL)_Vba_Excel - Fatal编程技术网

如果值为真,则显示/隐藏列表-清除代码(VBA、EXCEL)

如果值为真,则显示/隐藏列表-清除代码(VBA、EXCEL),vba,excel,Vba,Excel,请问有没有可能用最清晰的版本来写这段代码?我有1-20的工作表和1-20的值,如果我打开工作簿,需要在每张工作表上进行此检查 Private Sub Workbook_Open() If ThisWorkbook.Sheets("OPERACE_EXIST").Cells(2, 2).Value = True Then Sheets("TP_OP_010").Visible = True Else Sheets("TP_OP_01

请问有没有可能用最清晰的版本来写这段代码?我有1-20的工作表和1-20的值,如果我打开工作簿,需要在每张工作表上进行此检查

Private Sub Workbook_Open()       
If ThisWorkbook.Sheets("OPERACE_EXIST").Cells(2, 2).Value = True Then

        Sheets("TP_OP_010").Visible = True
         Else
        Sheets("TP_OP_010").Visible = xlSheetVeryHidden
        End If


        If ThisWorkbook.Sheets("OPERACE_EXIST").Cells(3, 2).Value = True Then

       Sheets("TP_OP_020").Visible = True
         Else
        Sheets("TP_OP_020").Visible = xlSheetVeryHidden
        End If

    If ThisWorkbook.Sheets("OPERACE_EXIST").Cells(4, 2).Value = True Then

       Sheets("TP_OP_030").Visible = True
         Else
        Sheets("TP_OP_030").Visible = xlSheetVeryHidden
        End If
类似这样的情况(但不确定工作表的命名,因此可能需要对代码的该部分进行调整)

类似这样的情况(但不确定工作表的命名,因此可能需要对代码的该部分进行调整)


如果工作表命名约定一致:

Private Sub Workbook_Open()
    Dim i As Integer
    Dim SheetName As String
    With ThisWorkbook.Sheets("OPERACE_EXIST")
        For i = 2 To 31
            SheetName = "TP_OP_" & Format((i - 1) * 10,"000")
            ThisWorkbook.Sheets(SheetName).Visible = IIf(.Cells(i, 2).Value, xlSheetVisible, xlSheetVeryHidden)
        Next
    End With

End Sub
或使用工作表名称数组:

Private Sub Workbook_Open()
    Dim i As Integer
    Dim SheetName As Variant
    i = 1

    With ThisWorkbook.Sheets("OPERACE_EXIST")
        For Each SheetName In Array("TP_OP_010",  "TP_OP_020",  "TP_OP_030",  "TP_OP_040",  "TP_OP_050",  "TP_OP_060",  "TP_OP_070",  "TP_OP_080",  "TP_OP_090",  "TP_OP_100",  "TP_OP_110",  "TP_OP_120",  "TP_OP_130",  "TP_OP_140",  "TP_OP_150",  "TP_OP_160",  "TP_OP_170",  "TP_OP_180",  "TP_OP_190",  "TP_OP_200")
            i = i + 1
            ThisWorkbook.Sheets(SheetName).Visible = IIf(.Cells(i, 2).Value, xlSheetVisible, xlSheetVeryHidden)
        Next
    End With

End Sub

如果工作表命名约定一致:

Private Sub Workbook_Open()
    Dim i As Integer
    Dim SheetName As String
    With ThisWorkbook.Sheets("OPERACE_EXIST")
        For i = 2 To 31
            SheetName = "TP_OP_" & Format((i - 1) * 10,"000")
            ThisWorkbook.Sheets(SheetName).Visible = IIf(.Cells(i, 2).Value, xlSheetVisible, xlSheetVeryHidden)
        Next
    End With

End Sub
或使用工作表名称数组:

Private Sub Workbook_Open()
    Dim i As Integer
    Dim SheetName As Variant
    i = 1

    With ThisWorkbook.Sheets("OPERACE_EXIST")
        For Each SheetName In Array("TP_OP_010",  "TP_OP_020",  "TP_OP_030",  "TP_OP_040",  "TP_OP_050",  "TP_OP_060",  "TP_OP_070",  "TP_OP_080",  "TP_OP_090",  "TP_OP_100",  "TP_OP_110",  "TP_OP_120",  "TP_OP_130",  "TP_OP_140",  "TP_OP_150",  "TP_OP_160",  "TP_OP_170",  "TP_OP_180",  "TP_OP_190",  "TP_OP_200")
            i = i + 1
            ThisWorkbook.Sheets(SheetName).Visible = IIf(.Cells(i, 2).Value, xlSheetVisible, xlSheetVeryHidden)
        Next
    End With

End Sub

图纸名称将递增10。在工作表模块中使用
Me
引用工作簿很有趣。工作表名称递增10。在工作表模块中使用
Me
引用工作簿很有趣。我得到的错误下标超出了此工作簿的范围。Sheets(SheetName)。Visible=IIf(.Cells(I,2)。Value,xlSheetVisible,xlSheetVeryHidden)我的值从B2开始B20@Nataniell您需要调整工作表名称。你用的是哪个版本?现在可以用了。我忘了加TP_OP_200。对不起,谢谢你的帮助:)@Nataniell我很高兴能帮上忙。干杯我获取的错误下标超出此工作簿的范围。SheetName(SheetName)。Visible=IIf(.Cells(I,2)。Value,xlSheetVisible,xlSheetVeryHidden)我的值从B2开始B20@Nataniell您需要调整工作表名称。你用的是哪个版本?现在可以用了。我忘了加TP_OP_200。对不起,谢谢你的帮助:)@Nataniell我很高兴能帮上忙。干杯