1

正如标题所解释的,我有一个 Excel 2003 工作簿,并且我在 VBA 中将一个工作表的多个列复制到另一个工作表。我不知道,有人在源工作表上隐藏了几列,这弄乱了我处理目标工作表中单元格的方式。

我如何以编程方式确定:

  1. 如果有隐藏列
  2. 隐藏了哪些列?

谢谢!联合部队

4

5 回答 5

10

对于 a Range,请检查Range.Hidden属性。

以下来自 MSDN 的片段是如何隐藏/取消隐藏行/列的一个很好的示例:

 Worksheets("Sheet1").Columns("C").Hidden = True

您还可以使用If语句测试该值:

 For ColCounter = 1 To 10
      If Columns("C").Hidden = True Then
           Columns("C").Hidden = False
      End If
 Next
于 2009-07-06T18:32:58.980 回答
1

如果您只想复制可见文件,那么一个非常好的选项是仅选择可见列作为范围。

这可以通过

Set visrng =rng.SpecialCells(xlCellTypeVisible)

我不清楚这是否对您的情况有用,但我决定发布它,因为它可能对其他人有用。

于 2009-10-23T16:17:54.857 回答
1

将可见单元格复制到另一个范围,然后比较每个单元格中的单元格数量可能是确定该范围内是否存在隐藏单元格的最简单方法

例如

Selection.SpecialCells(xlCellTypeVisible).Copy Destination:=VisRan

If Not Selection.Cells.Count = VisRan.Cells.Count Then
    MsgBox "Selection contains Hidden Cells"
End If
于 2012-09-14T22:10:23.113 回答
0

您可以使用以下功能进行检查:

Function IsColumnHidden(column As Variant) as Boolean
    IsColumnHidden = False
    If Columns(column).ColumnWidth = 0.0 Then IsColumnHidden = True
End Function

列宽或行高 0.0 表示该范围是否隐藏。

于 2009-07-06T18:37:51.403 回答
-1

这是我测试过的一个,如果你想隐藏/取消隐藏列,它工作得很好

Sub Macro1_Test_Hidden() ' ' Macro1_Test_Hidden Macro ' ' ' If Columns("BH:XFA").Hidden = False Then Columns("BH:XFA").Select Range("BH:XFA").Activate Selection.EntireColumn.Hidden = True Else Columns("BH:XFA").Select Range("BH:XFA").Activate Selection.EntireColumn.Hidden = False End If ' ' End Sub

于 2018-11-08T00:23:27.777 回答