2012-07-17 107 views
0

我可以在excel中使用一個多選列表框表單的幫助,通過VBA來完成,表單的值是從jan-june開始的月份,如下所示。使用選定的列表框值來動態地隱藏/顯示列

  • JAN
  • FEB
  • MARCH
  • APRIL
  • MAY
  • JUNE

如果選擇例如一月,我想顯示的列,例如通過小時。 如果Jan未被選中,則列e到h將被隱藏。

JAN - (COLUMNS EH)
FEB - (COLUMNS IM)
MARCH - (COLUMNS NR)
APRIL - (COLUMNS SW)
MAY - (列×-AB)
JUNE - (COLUMNS AC-AG)

回答

1

歡迎來到Stack Overflow。有時候,宏錄像機是你的朋友。

我自己記錄的隱藏列宏E至H.這裏是所記錄的代碼:

Sub Macro1() 
' 
' Macro1 Macro 
' Macro recorded 7/17/2012 by Jimmy Peña 
' 

' 
    Columns("E:H").Select 
    Selection.EntireColumn.Hidden = True 
End Sub 

選擇/選擇對是清楚地表明,我可以連接這兩條線。我縮短了這樣的代碼:

Columns("E:H").EntireColumn.Hidden = True

由於屬性採用的True的值,我知道我可以通過將該值設置爲False值設置爲True和顯示的列隱藏列。

由於您沒有顯示您正在使用的代碼,因此我將提供一種通用方法,您將需要自定義以供您使用。

我添加了一個列表框給示例用戶窗體。此代碼將根據選擇的值選擇性地隱藏/取消隱藏。

Private Sub ListBox1_Click() 

    Dim selectedValue As String 

    ' get selected value from listbox 
    selectedValue = ListBox1.value 

    Application.ScreenUpdating = False 

    ' unhide any columns 
    Cells.EntireColumn.Hidden = False 

    Select Case selectedValue 
    Case "JAN" 
    Columns("E:H").EntireColumn.Hidden = True 
    Case "FEB" 
    Columns("I:M").EntireColumn.Hidden = True 
    Case "MARCH" 
    Columns("N:R").EntireColumn.Hidden = True 
    Case "APRIL" 
    Columns("S:W").EntireColumn.Hidden = True 
    Case "MAY" 
    Columns("X:AB").EntireColumn.Hidden = True 
    Case "JUNE" 
    Columns("AC:AG").EntireColumn.Hidden = True 
    End Select 

    Application.ScreenUpdating = True 

End Sub 
+0

請問您的解決方案使用正常的窗體控件或ActiveX窗體控件 – user1422641 2012-07-17 16:21:18

+0

@ user1422641這是在VBA用戶窗體列表框,但不應該花太多適應任何其他類型的ListBox控件的使用。 – JimmyPena 2012-07-17 16:37:39

相關問題