隐藏基于Combobox(表单)的列在Excel中

时间:2014-01-30 16:37:08

标签: excel vba excel-vba combobox

我为所有设置了不同的预测选项。我过去在另一份工作中做过这件事,我无法弄清楚我哪里出错了。

Private Sub ComboBox1_Change()

  If ComboBox1.Value = "2 Weeks" Then
      Columns("J:L").Select
      Selection.EntireColumn.Hidden = False
      Columns("M:R").Select
      Selection.EntireColumn.Hidden = True
  End If

  If ComboBox1.Value = "6 Weeks" Then
      Columns("M:O").Select
      Selection.EntireColumn.Hidden = False
      Columns("J:L").Select
      Selection.EntireColumn.Hidden = True
      Columns("P:R").Select
      Selection.EntireColumn.Hidden = True
  End If

  If ComboBox1.Value = "12 Weeks" Then
      Columns("P:R").Select
      Selection.EntireColumn.Hidden = False
      Columns("J:O").Select
      Selection.EntireColumn.Hidden = True
  End If

End Sub

2 个答案:

答案 0 :(得分:3)

看起来你的代码应该运行得很好。我把它改写得更简洁,它完美地工作(使用Active-X控件)。

Private Sub ComboBox1_Change()

Select Case ComboBox1.Value
  Case "2 Weeks"
    Columns("J:L").Hidden = False
    Columns("M:R").Hidden = True
  Case "6 Weeks"
    Columns("J:L").Hidden = True
    Columns("M:O").Hidden = False
    Columns("P:R").Hidden = True
  Case "12 Weeks"
    Columns("J:O").Hidden = True
    Columns("P:R").Hidden = False
End Select

End Sub

答案 1 :(得分:3)

  

在标题中我包含了它是一个表单控件。 - phentrus 8分钟前

我之所以感到困惑并且在上面的评论中问你是否使用表单控件或ActiveX控件是因为你的问题标题是“表单”但代码是用于ActiveX。

对于表单控件,将此代码粘贴到模块中。

Option Explicit

Sub DropDown1_Change()
    Dim DDown As Shape

    Set DDown = ActiveSheet.Shapes(Application.Caller)

    Select Case DDown.ControlFormat.List(DDown.ControlFormat.ListIndex)
        Case "2 Weeks"
            Columns("J:L").Hidden = False
            Columns("M:R").Hidden = True
        Case "6 Weeks"
            Columns("J:L").Hidden = True
            Columns("M:O").Hidden = False
            Columns("P:R").Hidden = True
        Case "12 Weeks"
            Columns("J:O").Hidden = True
            Columns("P:R").Hidden = False
    End Select
End Sub

接下来右键单击Form Combobox并将上面的宏指定给它:)