如果值为真,则显示/隐藏列表-清除代码(VBA、EXCEL)
请问有没有可能用最清晰的版本来写这段代码?我有1-20的工作表和1-20的值,如果我打开工作簿,需要在每张工作表上进行此检查如果值为真,则显示/隐藏列表-清除代码(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
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我很高兴能帮上忙。干杯