在Excel中基于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 

好像你的代码应该工作得很好。 我重写它是更简洁,它完美的工作(与一个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 

在我包括的标题是一个表单控件。 – 发情8分钟前

我之所以迷惑,是因为你的问题标题是“表单”,而代码是用于ActiveX的,所以在上面的评论中你是否使用了表单控件或ActiveX控件。

对于Form Control,将这个代码粘贴到一个模块中。

 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 

然后右键单击你的表单combobox,并将上面的macros分配给它:)