【问题标题】:Define sheets and worksheets in VBA在 VBA 中定义工作表和工作表
【发布时间】:2015-07-08 00:23:49
【问题描述】:

我的工作簿既有图表工作表又有普通工作表,因此我使用Sheets 而不是Worksheets。但是,我不知道 sht 在下面的代码集中应该是什么类型。我确定它不可能是Worksheet

' Hide all sheets/charts except Sheet1
Sub Hide_Sheets()

    Dim sht As ???

    For Each sht In ActiveWorkbook.Sheets
        If sht.Name <> Sheet3.Name Then
            sht.Visible = False
        End If
    Next sht

End Sub

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    “图表和工作表是两个不同的集合。” --> https://stackoverflow.com/a/6804704/138938

    如果您同时拥有图表工作表和常规工作表,则可以像这样遍历对象集合:

    Sub Hide_Objects()
        Dim wb As Workbook
        Dim obj As Object
    
        Set wb = ActiveWorkbook
    
        For Each obj In wb.Sheets
            If obj.Name <> "Sheet1" Then
                obj.Visible = False
            End If
        Next obj
    End Sub
    

    或者你可以像这样遍历两个集合:

    Sub Hide_Sheets_And_Charts()
        Dim wb As Workbook
        Dim sht As Worksheet
        Dim cht As Chart
    
        Set wb = ActiveWorkbook
    
        For Each sht In wb.Worksheets
            If sht.Name <> "Sheet1" Then
                sht.Visible = False
            End If
        Next sht
    
        For Each cht In wb.Charts
            If cht.Name <> "Sheet1" Then
                cht.Visible = False
            End If
        Next cht
    
    End Sub
    

    【讨论】:

      【解决方案2】:

      使用 Variant 然后单步执行代码,您将能够看到它是什么。 变体无需执行任何其他操作即可工作。

      我建议对变量使用实名,以便您在将来的某个阶段更容易阅读您的代码。

      Sub Hide_Sheets()
      
          Dim sheet_ As Variant
      
          For Each sheet_ In ActiveWorkbook.Sheets
              If sheet_.Name <> Sheet3.Name Then
                  sheet_.Visible = False
              End If
          Next sheet_
      
      End Sub
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-11
      • 2010-10-19
      相关资源
      最近更新 更多