在Excel 2010中使用VBA隐藏列

在Excel 2010中使用VBA隐藏列,excel,vba,Excel,Vba,基于工作表的特定单元格(如A1)中存储的值,我想在工作表中隐藏以B列开始的许多列 我正在尝试做的示例: 如果单元格A1的值为10,则隐藏B列加上B后面的10列 如果单元格A2的值=11,则隐藏B列加上B后面的11列 困难实际上是Excel(或者至少是我的Excel文件)使用字母表(A,B,…)作为列名称的方式。在使用类似于行(“2:&range(“A1”).value)”的代码和设置和设置.hide=true的代码之前,我已经对行执行了此操作。您可以按索引号引用列,并且可以使用设置要选择的列

基于工作表的特定单元格(如
A1
)中存储的值,我想在工作表中隐藏以B列开始的许多列

我正在尝试做的示例:

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

困难实际上是Excel(或者至少是我的Excel文件)使用字母表(A,B,…)作为列名称的方式。在使用类似于
行(“2:&range(“A1”).value)”的代码和设置
和设置
.hide=true

的代码之前,我已经对行执行了此操作。您可以按索引号引用列,并且可以使用设置要选择的列数,如下所示:

Sub HideColumns()
    Dim numColumnsToHide

    numColumnsToHide = Cells(1, 1).Value

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

    Selection.EntireColumn.Hidden = True
End Sub

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

我想对格伦的上述回答添加一条评论,但没有足够的声誉。我要补充的是,您不需要激活工作表或选择列,只需继续并隐藏列:

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

请不要把事情复杂化,就这么做吧

眼下动脉()

范围(“D:E”).entireclumn.Hidden=True


结束Sub

非常感谢。它工作得很好。只是对现有问题的延伸。如果我想对其他工作表(例如sheeet1)隐藏列,该怎么办?我尝试床单(“床单1”)。列(2)。调整大小(,numColumnsToHide)。选择,但此引用方法无效。您需要使Sheet2成为活动工作表。您可以通过添加
工作表(“Sheet2”)。在设置numCOlumnsToHide的值之后,但在
列(2)之前激活
。调整…
行的大小