2012-05-05 267 views
1

問題: 我想有隱藏,並通過形式取消隱藏選定的(多)張的能力隱藏在Excel中取消隱藏選定的工作表使用VBA

可用的資源: ,顯示有許多可用的資源如何取消隱藏和隱藏在一個所有表,但不靈活

解釋:

enter image description here

因爲sheet5隱藏複選框對應於施哲三t5被檢查。

邏輯/方法:

  • 獲取所有的表名稱包括牆根者並將其綁定到標籤,檢查它是否隱藏或顯示並綁定到複選框。

標籤和複選框是自動創建的,標籤和複選框以某種方式相互鏈接,因此程序知道要隱藏和取消隱藏哪些表單。

  • 編寫代碼來檢查複選框是否在選中/未選中狀態之間改變其狀態。
+1

這是一件容易的事情:)你嘗試過什麼? –

+1

你還在VB.Net/C#中做這個嗎? –

+0

謝謝你的提問。我正在嘗試在Excel中使用VBA。 winform只是爲了解釋目的:[1]我已經學會了如何隱藏和取消隱藏表單。 [2]我在自動創建標籤和複選框時遇到問題 – NCC

回答

2

謝謝你提供的所有提示,最後我能夠完成這項工作。它可能不是一個好的代碼,但它的工作原理。

enter image description here

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 

+1

+ 1上的兩列,以便努力解決您的問題:)是的,你幾乎在那裏,但我意思是稍微不同的方式:) –