使用VBA在Excel中隐藏和取消隐藏选定图纸

使用VBA在Excel中隐藏和取消隐藏选定图纸,excel,vba,Excel,Vba,问题: 我想有能力隐藏和取消隐藏选定的(多个)表的形式 可用资源: 有许多可用资源显示如何一次取消隐藏和隐藏所有图纸,但不灵活 说明: 因为sheet5是隐藏的,所以选中了sheet5对应的复选框 逻辑/方法: 获取所有图纸的名称,包括隐藏的图纸并将其绑定到标签,检查是否为隐藏或取消隐藏并将其绑定到复选框 标签和复选框是自动创建的,标签和复选框以某种方式相互链接,以便程序知道要隐藏和取消隐藏的图纸 编写代码以检查复选框是否在选中/未选中之间更改其状态 我终于能做这项工作了。这可能不是好代

问题: 我想有能力隐藏和取消隐藏选定的(多个)表的形式

可用资源: 有许多可用资源显示如何一次取消隐藏和隐藏所有图纸,但不灵活

说明:

因为sheet5是隐藏的,所以选中了sheet5对应的复选框

逻辑/方法:

  • 获取所有图纸的名称,包括隐藏的图纸并将其绑定到标签,检查是否为隐藏或取消隐藏并将其绑定到复选框
标签和复选框是自动创建的,标签和复选框以某种方式相互链接,以便程序知道要隐藏和取消隐藏的图纸

  • 编写代码以检查复选框是否在选中/未选中之间更改其状态

    • 我终于能做这项工作了。这可能不是好代码,但它可以工作

      Private Sub btListAllSheets_Click()
      
          With Me.ListBox1
      
          .Clear
          .ColumnHeads = True
          .ColumnCount = 2
          Dim status As String
      
          For i = 1 To Sheets.Count
              If Sheets(i).Visible = xlSheetHidden Then
                 status = "Invisible"
              Else
                 status = "Visible"
              End If
      
          ListBox1.AddItem (Sheets(i).Name)
          ListBox1.List(ListBox1.ListCount - 1, 1) = status
      
          Next i
          End With
      
      End Sub
      
      Private Sub bt_hideunhideselectedsheet_Click()
      
          Dim str As String
          str = Me.ListBox1.Column(1, Me.ListBox1.ListIndex)
      
          For Each Sh In ThisWorkbook.Worksheets
      
          If Sh.Name = Me.ListBox1.Value And str = "Visible" Then    
              Sh.Visible = False   
          ElseIf Sh.Name = Me.ListBox1.Value And str = "Invisible" Then    
              Sh.Visible = True
          End If
      
          Next Sh
      
      End Sub
      


      您也是在VB.Net/C中这样做的吗?谢谢您的提问。我正试图在excel的VBA中实现这一点。winform仅用于解释目的:[1]我已经学会了如何隐藏和取消隐藏工作表。[2] 自动创建标签和复选框有问题您想在运行时创建所有这些控件吗?或者,您是否希望预先设置这些控件,并根据工作表是否可见来启用/禁用它们?我希望在运行表单/宏时获得该列表。[1] 表单显示所有图纸(最多可能有300张图纸)。[2] 如果图纸处于取消隐藏状态,则选中复选框;如果处于隐藏状态,则取消选中复选框。[3] 如果我点击选中的-取消隐藏,如果我点击未选中的-隐藏。
      最多有300张图纸。
      在这种情况下,我建议使用列表框或组合框。:)