根据下拉列表中的select创build一个隐藏和显示列的macros

我对macros的世界是全新的,但之前已经在QTP上做了一些VBScript。 我正在寻找创build一个macros,这将隐藏某些列取决于用户从下拉列表中select。 我不确定语法,以及如何识别我希望隐藏的列以及如何使用下拉列表标识单元格。

这大概是我将如何看待它 –

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是否会以这种方式识别对象,还是需要声明它?

我如何识别我想隐藏的列?

您在Excel中定义的名称在Excel中作为普通variables提供,所以这不应该是任何问题。

在你的情况下,我会build议使用Switch Case语句。 这看起来如下所示:

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

另外请记住,一旦你改变一个单元格的macros被调用,你将需要把这个代码放入

 Private Sub Worksheet_Change(ByVal Target As Range) End Sub 

这个Sub必须被放置在工作表本身的代码部分,并且每次单元格在工作表中被改变时都会被执行。

让我知道如果这足以让你继续下去,或者如果你需要更多的帮助。

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

  1. 隐藏第1和第2列
  2. 查看 – 自定义视图 – 添加 – 将其命名为“选项1”
  3. 取消隐藏,然后隐藏第2列和第3列
  4. 查看 – 自定义视图 – 添加 – 将其命名为“选项2”
  5. 取消隐藏,然后隐藏第3列和第4列
  6. 视图 – 自定义视图 – 添加 – 将其命名为“选项3”
  7. 取消隐藏
  8. 在单元格中创build数据validation(不会隐藏),make是带有“Option1,Option2,Option3”的列表
  9. 将该单元命名为ViewType
  10. 右键单击工作表选项卡,然后select查看代码,然后将下面的代码放在该代码窗格中

     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 

当用户从下拉菜单中selectOption1时,将显示隐藏第1列和第2列的Option1视图。这是pipe理隐藏和取消隐藏的好方法,因为如果您想更改自定义视图,而不是编辑代码。