在Excel中选择多个列

时间:2018-03-13 14:55:00

标签: excel excel-vba select multiple-columns vba

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

我对如何使用Excel有一些了解,但是在使用VBA时不包含Excel中的编码。

我在互联网上找到了一些代码,这些代码并没有完全帮助我处理我的问题。我的问题是我想根据一个单元格中函数的结果隐藏一些列。正如您在下面看到的,我已经创建了一些代码,但在尝试了所有内容之后,我仍然无法隐藏多个列。我在互联网上找到了一些选择多列的解决方案,但不幸的是,我无法在我的代码中使用它。如果您对我的问题有任何解决方案,请告诉我。在此先感谢您的帮助。

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

2 个答案:

答案 0 :(得分:1)

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

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

另外,正如Pᴇʜ在评论中指出的那样,使用Change事件可能更好,因为您只关心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

只是为了完成整体问题,这里是一种与非连续范围进行相同任务的方法:

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

答案 1 :(得分:0)

请在下面找到帮助我解决问题的代码。感谢用户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