0

我可以在必须通过 VBA 完成的 excel 中使用多选列表框表单的一些帮助,表单的值是从 1 月到 6 月的几个月,如下所示。

  • 一月
  • 二月
  • 行进
  • 四月
  • 可能
  • 六月

例如,如果选择 Jan,我希望显示列 e 到 h。如果未选择 Jan,则将隐藏 e 到 h 列。

1 月 - (EH 栏)
2 月 - (IM 栏)
3 月 - (NR 栏)
4 月 - (SW 栏)
5 月 - (X-AB 栏)
6 月 - (AC-AG 栏)

4

1 回答 1

1

欢迎来到堆栈溢出。有时,宏记录器是您的朋友。

我录制了一个自己隐藏列 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
于 2012-07-17T14:35:50.253 回答