根据下拉列表中的选择创建一个隐藏和显示列的宏

时间:2010-07-06 08:38:25

标签: excel vba excel-vba excel-2007

我对宏的世界全新,但之前在QTP上做了一些VBScript。我希望创建一个宏,它将隐藏某些列,具体取决于从下拉列表中的用户选择。我不确定语法以及如何识别我想隐藏的列以及如何使用下拉列表识别单元格。

以下是我看待它的大致情况 -

Sub HideColumns()
    If cell(ViewType).Value = "Option 1" Then
       Cells(Column_1, Column_2).EntireColumn.Hidden = True
    ElseIf cell(ViewType).Value = "Option 2" Then
       Cells(Column_2, Column_3).EntireColumn.Hidden = True
    ElseIf cell(ViewType).Value = "Option 3" Then
       Cells(Column_3, Column_4).EntireColumn.Hidden = True
    End If
End Sub 

我在Excel中使用下拉列表ViewType命名了单元格 - VBA会以这种方式识别对象,还是需要声明它?

如何识别我想隐藏的列?

2 个答案:

答案 0 :(得分:1)

您在Excel中定义的名称在Excel中可用作常规变量,因此这不应该是任何问题。

在您的情况下,我建议使用Switch Case声明。这看起来如下:

Select Case ActiveWorkbook.Names("ViewType").RefersToRange
         Case "Option 1" 
              ' Hide Column X
         Case "Option 2" 
              ' Hide Column Y
End Select

另请注意,一旦更改单元格,要调用宏,您需要将此代码放入

Private Sub Worksheet_Change(ByVal Target As Range)
End Sub

此Sub必须放在Sheet本身的代码部分中,并且每次在Sheet中更改单元格时都会执行。

请告诉我这是否足以让您继续,或者如果您需要更多帮助。

答案 1 :(得分:1)

我喜欢在隐藏和取消隐藏列时使用自定义视图。自定义视图位于“视图”选项卡(> = 2007)和“视图”菜单(< = 2003)下。这是一个例子:

  1. 隐藏第1列和第2列
  2. 查看 - 自定义视图 - 添加 - 将其命名为“Option1”
  3. 取消隐藏,然后隐藏第2列和第3列
  4. 查看 - 自定义视图 - 添加 - 将其命名为“Option2”
  5. 取消隐藏,然后隐藏第3列和第4列
  6. 查看 - 自定义视图 - 添加 - 将其命名为“Option3”
  7. 取消隐藏
  8. 在单元格中创建数据验证(不会隐藏),make是一个包含“Option1,Option2,Option3”的列表
  9. 命名单元格ViewType
  10. 右键单击工作表选项卡,然后选择“查看代码”并将以下代码放在该代码窗格中

    Private Sub Worksheet_Change(ByVal Target As Range)
    
        'Only work on the cell named ViewType
        'The Me keyword refers to the sheet whose code module you're in
        If Target.Address = Me.Range("ViewType").Address Then
            'Show the custom view that corresponds to the value selected
            'in the dropdown
            ActiveWorkbook.CustomViews(Target.Value).Show
        End If
    
    End Sub
    
  11. 当用户从下拉列表中选择Option1时,会显示隐藏第1列和第2列的Option1视图。这是一种管理隐藏和取消隐藏的好方法,因为如果您想要更改自定义视图,可以调整自定义视图,而不是编辑代码。