在Excel中选择多列

在Excel中选择多列,excel,select,multiple-columns,vba,Excel,Select,Multiple Columns,Vba,我目前正在我的工作中从事一个项目,需要对Excel有很好的理解。对于这个项目,我必须设计一个Excel模板,我目前正在这个工作 我有一些关于如何使用Excel的知识,但不包括使用VBA在Excel中进行编码 我在互联网上发现了一些代码,这些代码并不能完全帮助我解决问题。我的问题是,我想根据一个单元格中函数的结果隐藏一些列。正如您在下面看到的,我已经创建了一些代码,但在尝试了所有操作之后,仍然无法隐藏多个列。我在internet上找到了一些选择多个列的解决方案,但不幸的是,我无法在代码中使用它。请

我目前正在我的工作中从事一个项目,需要对Excel有很好的理解。对于这个项目,我必须设计一个Excel模板,我目前正在这个工作

我有一些关于如何使用Excel的知识,但不包括使用VBA在Excel中进行编码

我在互联网上发现了一些代码,这些代码并不能完全帮助我解决问题。我的问题是,我想根据一个单元格中函数的结果隐藏一些列。正如您在下面看到的,我已经创建了一些代码,但在尝试了所有操作之后,仍然无法隐藏多个列。我在internet上找到了一些选择多个列的解决方案,但不幸的是,我无法在代码中使用它。请让我知道,如果你有任何解决我的问题的办法。提前感谢你的帮助

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Range("B5").Value = "USD" Then
        Columns("C").EntireColumn.Hidden = True
    ElseIf Range("B5").Value = "LC" Then
        Columns("C").EntireColumn.Hidden = False
    End If
End Sub

可能有几种方法可以解决您的问题。当与多个行或列交互时,您需要使用
Range
属性。以下是一种方法(假设连续范围):

另外,作为pᴇʜ在评论中指出,最好使用更改事件,因为您只关心B5是否/何时更改。
SelectionChange
事件可能会触发比您需要的更多的事件(同样,等待您的工作表设置)。以下是使用不同事件的相同代码:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$B$5" Then
        If Target.Value = "USD" Then
            Range("C:D").EntireColumn.Hidden = True
        ElseIf Target.Value = "LC" Then
            Range("C:D").EntireColumn.Hidden = False
        End If
    End If       
End Sub
为了完成整个ask,以下是一种使用非连续范围执行相同任务的方法:


请在下面找到帮助我解决问题的代码。感谢用户Pᴇʜ和sous2817。希望这可以帮助其他人

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Range("B5").Value = "USD" Then
        Union(Columns("C"), Columns("E")).EntireColumn.Hidden = True
    ElseIf Range("B5").Value = "LC" Then
        Union(Columns("C"), Columns("E")).EntireColumn.Hidden = False
    End If
End Sub

此外,如果B5不是一个公式,您可以将
工作表_Change
事件(而不是
工作表_SelectionChange
事件)与
if Target.Address=“$B$5”结合使用,然后
仅在B5中的值更改时触发隐藏/显示,而不是每次单元格选择更改时触发隐藏/显示,哪个应该更有效。谢谢你的评论。我已经尝试过这段代码,效果很好,但是,您能告诉我如何选择不同的列(例如C列和g列)吗。感谢you@Ali使用
Union()
类似
Union(列(“C”)、列(“G”)。EntireColumn.Hidden=True
。也适用于范围
联合(范围(“C:E”)、列(“G”)
@Pᴇʜ,谢谢你的建议。这正是我所寻求的。然而,不幸的是,代码不是自动工作的。我之前没有提到,但细胞B5确实是一个公式的结果。如果我填写LC或USD,那么C列和G列是隐藏的/未隐藏的。但是,如果B5是一个公式,则不会发生任何事情。正如我已经提到的,如果B5是一个公式的结果,则
工作表\u Change
事件不起作用。然后您只能使用
SelectionChange
事件。
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$B$5" Then
        If Target.Value = "USD" Then
            Union(Columns("C"), Columns("G")).EntireColumn.Hidden = True
        ElseIf Target.Value = "LC" Then
            Union(Columns("C"), Columns("G")).EntireColumn.Hidden = False
        End If
    End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Range("B5").Value = "USD" Then
        Union(Columns("C"), Columns("E")).EntireColumn.Hidden = True
    ElseIf Range("B5").Value = "LC" Then
        Union(Columns("C"), Columns("E")).EntireColumn.Hidden = False
    End If
End Sub