【问题标题】:Hide or visible sheets隐藏或可见的工作表
【发布时间】:2023-02-10 03:22:59
【问题描述】:

我是来自 B10:G40 的表范围,其中 B11 列之后显示工作表名称(IFRS1、2、3 等),C11:G40 列具有是或否数据验证。我需要编写一个宏来显示或隐藏工作表 IFRS1、2、3 等,如果它在任何单元格范围 C11:G40 中是,并且隐藏是它的编号。

If [C11] = "Yes" Then
Sheets("IFRS 1").Visible = True
Else
Sheets("IFRS 1").Visible = False
End If

If [C12] = "Yes" Then
Sheets("IFRS 2").Visible = True
Else
Sheets("IFRS 2").Visible = False
End If

If [C13] = "Yes" Then
Sheets("IFRS 3").Visible = True
Else
Sheets("IFRS 3").Visible = False
End If

If [C14] = "Yes" Then
Sheets("IFRS 5").Visible = True
Else
Sheets("IFRS 5").Visible = False
End If

If [C15] = "Yes" Then
Sheets("IFRS 6").Visible = True
Else
Sheets("IFRS 6").Visible = False
End If

If [C16] = "Yes" Then
Sheets("IFRS 7").Visible = True
Else
Sheets("IFRS 7").Visible = False
End If

If [C17] = "Yes" Then
Sheets("IFRS 13").Visible = True
Else
Sheets("IFRS 13").Visible = False
End If

If [C18] = "Yes" Then
Sheets("IFRS 14").Visible = True
Else
Sheets("IFRS 14").Visible = False
End If

If [C19] = "Yes" Then
Sheets("IFRS 15").Visible = True
Else
Sheets("IFRS 15").Visible = False
End If

If [C20] = "Yes" Then
Sheets("IFRS 16").Visible = True
Else
Sheets("IFRS 16").Visible = False
End If


If [C21] = "Yes" Then
Sheets("IAS 1").Visible = True
Else
Sheets("IAS 1").Visible = False
End If

If [C22] = "Yes" Then
Sheets("IAS 2").Visible = True
Else
Sheets("IAS 2").Visible = False
End If

If [C23] = "Yes" Then
Sheets("IAS 7").Visible = True
Else
Sheets("IAS 7").Visible = False
End If

If [C24] = "Yes" Then
Sheets("IAS 8").Visible = True
Else
Sheets("IAS 8").Visible = False
End If

If [C25] = "Yes" Then
Sheets("IAS 10").Visible = True
Else
Sheets("IAS 10").Visible = False
End If

If [C26] = "Yes" Then
Sheets("IAS 12").Visible = True
Else
Sheets("IAS 12").Visible = False
End If


If [C27] = "Yes" Then
Sheets("IAS 16").Visible = True
Else
Sheets("IAS 16").Visible = False
End If

If [C28] = "Yes" Then
Sheets("IAS 19").Visible = True
Else
Sheets("IAS 19").Visible = False
End If


If [C29] = "Yes" Then
Sheets("IAS 20").Visible = True
Else
Sheets("IAS 20").Visible = False
End If

If [C30] = "Yes" Then
Sheets("IAS 21").Visible = True
Else
Sheets("IAS 21").Visible = False
End If

If [C31] = "Yes" Then
Sheets("IAS 23").Visible = True
Else
Sheets("IAS 23").Visible = False
End If

If [C32] = "Yes" Then
Sheets("IAS 24").Visible = True
Else
Sheets("IAS 24").Visible = False
End If


If [C33] = "Yes" Then
Sheets("IAS 27").Visible = True
Else
Sheets("IAS 27").Visible = False
End If


If [C34] = "Yes" Then
Sheets("IAS 29").Visible = True
Else
Sheets("IAS 29").Visible = False
End If

If [C35] = "Yes" Then
Sheets("IAS 32").Visible = True
Else
Sheets("IAS 32").Visible = False
End If

If [C36] = "Yes" Then
Sheets("IAS 34").Visible = True
Else
Sheets("IAS 34").Visible = False
End If

If [C37] = "Yes" Then
Sheets("IAS 36").Visible = True
Else
Sheets("IAS 36").Visible = False
End If


If [C38] = "Yes" Then
Sheets("IAS 38").Visible = True
Else
Sheets("IAS 38").Visible = False
End If


If [C39] = "Yes" Then
Sheets("IAS 40").Visible = True
Else
Sheets("IAS 40").Visible = False
End If


If [C40] = "Yes" Then
Sheets("IAS 41").Visible = True
Else
Sheets("IAS 41").Visible = False
End If




End Sub

【问题讨论】:

  • 您可以用单行替换每个 If 块,例如Sheets("IFRS 1").Visible = ( [C11] = "Yes" ) 除此之外,你还有什么具体问题吗?

标签: excel vba


【解决方案1】:

您应该考虑使用循环而不是重复非常相似的代码:

Sub HideShowSheets()
    Dim wb As Workbook, x As Long, wsSettings As Worksheet
    
    Set wb = ThisWorkbook
    Set wsSettings = wb.Worksheets("settings") 'for example
    
    For x = 1 To 41
        wb.Worksheets("IFRS " & x).Visible = (wsSettings.Range("C10").Offset(x).Value = "Yes")
    Next x
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-10
    • 1970-01-01
    • 2022-11-16
    • 2021-12-03
    • 2012-05-10
    • 2021-06-08
    • 2017-04-17
    • 2019-12-30
    相关资源
    最近更新 更多