如何确定在Excel VBA中复制时是否存在隐藏列

时间:2009-07-06 18:26:33

标签: vba excel-vba excel-2003 excel

正如标题所解释的那样,我有一个Excel 2003工作簿,我在VBA中将一个工作表的一些列复制到另一个工作表。我不知道,有人在源表上隐藏了几列,并且搞砸了我如何处理目标表中的单元格。

我如何以程序方式确定:

  1. 如果有隐藏的列
  2. 隐藏哪些列?
  3. 谢谢! JFV

5 个答案:

答案 0 :(得分:9)

对于Range,请查看Range.Hidden property.

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

答案 1 :(得分:1)

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

这可以通过

完成
Set visrng =rng.SpecialCells(xlCellTypeVisible)

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

答案 2 :(得分:1)

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

例如

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

If Not Selection.Cells.Count = VisRan.Cells.Count Then
    MsgBox "Selection contains Hidden Cells"
End If

答案 3 :(得分:0)

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

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

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

答案 4 :(得分:-1)

这是我测试过的一种,如果您想隐藏/取消隐藏列,效果很好

subprocess