在Excel 2010中使用VBA隐藏列

时间:2013-02-24 03:00:25

标签: excel-vba vba excel

根据存储在特定单元格(例如工作表的A1)中的值,我想隐藏工作表中从列B开始的多个列。

我想要做的例子:

  • 如果单元格A1的值= 10,则在B
  • 之后隐藏B列加10列
  • 如果单元格A2的值= 11,则在B
  • 之后隐藏B列加11列

难点实际上是Excel(或至少我的Excel文件)使用字母(A,B,...)作为列名称的方式。在使用rows("2:" & range("A1").value)之类的代码并设置.hide = true

之前,我已在行上完成此操作

3 个答案:

答案 0 :(得分:2)

您可以按照索引编号引用列:Columns(indexnumber),您可以使用Resize()设置要选择的列数,如下所示:

Sub HideColumns()
    Dim numColumnsToHide

    numColumnsToHide = Cells(1, 1).Value

    Columns(2).Resize(, numColumnsToHide).Select

    Selection.EntireColumn.Hidden = True
End Sub

显然,此代码在A1中没有任何值验证,因此如果有人在HideColumns()中运行A1而没有整数,则会发生不好的事情。这也不会取消隐藏任何隐藏的列。

答案 1 :(得分:2)

我想对Glenn上面的回答添加评论,但没有足够的声誉。我要补充的是,您不需要激活工作表或选择列,您可以简单地继续隐藏列:

Worksheets("TheSheet").Columns(2).Resize(, numColumnsToHide).EntireColumn.Hidden = True

答案 2 :(得分:0)

请不要只是使它复杂化

Sub ocultaColunas()

Range(“ D:E”)。EntireColumn.Hidden = True

结束子