根据在不同工作表的单独单元格中所做的选择,使用VBA隐藏/取消隐藏表中的列(命名范围)

根据在不同工作表的单独单元格中所做的选择,使用VBA隐藏/取消隐藏表中的列(命名范围),vba,excel,Vba,Excel,我在第1页有一个选择标准单元格,在第2页有一个表格。表1单元格B3将有一个带有不同选项的下拉列表。我希望能够在此下拉列表中进行选择,从而隐藏/取消隐藏Sheet2表中的某些列。到目前为止,我下面的代码是基于与表在同一张纸上所做的选择,我被卡住了,因为代码没有像我期望的那样工作 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 2 And Target.Row = 3 And Target.Value =

我在第1页有一个选择标准单元格,在第2页有一个表格。表1单元格B3将有一个带有不同选项的下拉列表。我希望能够在此下拉列表中进行选择,从而隐藏/取消隐藏Sheet2表中的某些列。到目前为止,我下面的代码是基于与表在同一张纸上所做的选择,我被卡住了,因为代码没有像我期望的那样工作

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 2 And Target.Row = 3 And Target.Value = "CustomView" Then

Range("Fruits", "Months").Select

Application.Selection.EntireColumn.Hidden = True

Else

Range("Fruits", "Months").Select


Application.Selection.EntireColumn.Hidden = False

End If

End Sub

我使用“公式”部分指定的命名范围。“月”在G列,“果”在I列,但代码当前隐藏G、H和I列,而不仅仅是G列和I列。此外,每次我尝试将选择标准移动到单独的工作表时,都会出现错误。如有任何帮助或建议,我们将不胜感激。

您的范围选择不正确。而不是
范围(“果实”,“月份”)。选择
您需要改为执行
范围(“果实,月份”)。选择
我想建议重新编写,以帮助您简化此代码的可读性和可维护性

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Address = "$B$3" Then 
        Range("Fruits,Months").EntireColumn.Hidden = Target.Value = "CustomView"
    End If

End Sub

要明确的是,这不应该被标记为答案,因为tigeravatar已经解决了您的问题。

谢谢@tigervatar-这解决了我的问题,没有按要求隐藏列。谢谢@Scott Holtzman,代码现在也更清晰直观了。我仍然面临的一个问题是,通过将target.address单元格放在单独的工作表上,使代码能够工作。这可能吗?不确定我是否应该创建一个单独的问题-但基本上我需要下拉单元格(目前在B3中)位于不同的工作表上和/或与命令按钮或复选框关联,因为有多个不同的视图可供选择from@ThomasTcred-将其移动到另一张纸上,您必须将更改代码放置在该工作表中,并将要隐藏的范围绑定到它们所在的工作表上。所以,
工作表(“Sheet1”).范围(“水果,月份”).entireclumn…
感谢@Scott为我工作。谢谢你的帮助!