我可以在必须通过 VBA 完成的 excel 中使用多选列表框表单的一些帮助,表单的值是从 1 月到 6 月的几个月,如下所示。
- 一月
- 二月
- 行进
- 四月
- 可能
- 六月
例如,如果选择 Jan,我希望显示列 e 到 h。如果未选择 Jan,则将隐藏 e 到 h 列。
1 月 - (EH 栏)
2 月 - (IM 栏)
3 月 - (NR 栏)
4 月 - (SW 栏)
5 月 - (X-AB 栏)
6 月 - (AC-AG 栏)
欢迎来到堆栈溢出。有时,宏记录器是您的朋友。
我录制了一个自己隐藏列 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
Select/Selection 对清楚地表明我可以连接这两行。我像这样缩短代码:
Columns("E:H").EntireColumn.Hidden = True
由于该属性的值为True
,我知道我可以通过将值设置为来隐藏列,并通过将值设置为来True
显示列False
。
由于您没有显示您正在使用的代码,因此我将提供一个通用方法,您需要对其进行自定义以供您使用。
我在示例用户表单中添加了一个列表框。此代码将根据选择的值有选择地隐藏/取消隐藏。
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