Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
隐藏Excel表中除少数选定列以外的所有列_Excel_Vba - Fatal编程技术网

隐藏Excel表中除少数选定列以外的所有列

隐藏Excel表中除少数选定列以外的所有列,excel,vba,Excel,Vba,我有一个Excel表格ActiveSheet.ListObjects(“myTable”)。除了更有趣的列之外,我如何隐藏它的所有列?当前,我的代码是通过录制宏生成的: Columns("A:C").Hidden = True Columns("F:G").Hidden = True Columns("I:U").Hidden = True Columns("W:X").Hidden = True Columns("AA:AI").Hidden = True Columns("AK:CQ").H

我有一个Excel表格
ActiveSheet.ListObjects(“myTable”)
。除了更有趣的列之外,我如何隐藏它的所有列?当前,我的代码是通过录制宏生成的:

Columns("A:C").Hidden = True
Columns("F:G").Hidden = True
Columns("I:U").Hidden = True
Columns("W:X").Hidden = True
Columns("AA:AI").Hidden = True
Columns("AK:CQ").Hidden = True
因为不太重要的列来来去去去,或者被重新排列,所以我想按名称而不是按列字母来引用这些列。大致如下:

ActiveSheet.ListObjects("myTable").ListColumns("#All").Hidden = True
ActiveSheet.ListObjects("myTable").ListColumns("Email").Hidden = False
ActiveSheet.ListObjects("myTable").ListColumns("User").Hidden = False
...

通过以下循环可以轻松完成所需的操作:

Sub hide()
Sub hide()
Dim column As Range
Dim Lastcolumn As Long
Lastcolumn = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).column
For Each column In ActiveSheet.Range(ActiveSheet.Cells(1, 1), ActiveSheet.Cells(1, Lastcolumn))
If column = "Unhide" Or column = "Unhide also" Then
column.EntireColumn.Hidden = False
Else
column.EntireColumn.Hidden = True
End If
Next
End Sub
对于不希望隐藏的每一列,可以添加另一个带有更新名称的
语句


编辑以否定绝对列的使用,而只使用列的使用范围。

因此根据您编辑的问题,我认为您正在寻找:

Sub Check()

With ThisWorkbook.Sheets("Sheet1") 'Change accordingly
    .Range("myTable").EntireColumn.Hidden = True
    .Range("myTable[Email]").EntireColumn.Hidden = False
    .Range("myTable[User]").EntireColumn.Hidden = False
End With

End Sub

你所选择的是什么意思?工作表上实际选定的列?还是它们总是一样的?如果是后者,请告诉我们哪些列需要保持可见。它们不是字面意义上的选择。我是说精选的。图纸中没有活动的选择。除了“Email”、“User”、“Country”等栏目外,我想隐藏所有内容。我不太喜欢这个解决方案,因为这里您再次使用了一些绝对栏目字母(“A:BB”),这正是我试图避免的。如前所述,表格中的列来来去去,或者被重新安排。我担心你会这么说。因此@JvdV解决方案更加优雅。我的可以更新以隐藏所有内容,但它需要一堆嵌套的
if
语句来取消隐藏所需的语句。我会更新我的答案,但我承认它是低劣的。