2009-07-06 34 views
1

正如标题所解释的,我有一个Excel 2003工作簿,并且正在将一个表格的多个列复制到另一个VBA中。我不知道,有人在源表中隐藏了几列,并且它弄糟了我如何处理目标表格中的单元格。如何确定在Excel中复制时是否存在隐藏列VBA

我怎样才能programmically确定:

  1. 是否有隐藏的列隐藏的列

谢谢! JFV

回答

8

对于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

也应设置某种一个标志正确的条件部分col隐藏设置为false ...也许一个数组的元素0 = col A,元素1 = col B等等 – CheeseConQueso 2009-07-06 18:37:11

+0

@Cheese:我只是想提供一个示例遍历并检查.Hidden状态 - 有许多方法可以改进片段(使用For Each Column而不是计数器,用于实例)。 – 2009-07-06 18:43:51

+0

@scag是啊我想到......并没有试图打击你或任何东西,只是在解决他的问题的第二部分 - ps,你的姓氏是非常熟悉的...西埃塞克斯高中?我来自Fairfield ... – CheeseConQueso 2009-07-06 18:45:11

0

您可以通过使用一个功能象检查:

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

列宽或0.0行高是的范围是否是隐藏的指示。

1

如果您只想复制可见文件,那么选择一个相当不错的选项即可仅选择可见列作为范围。

这可以通过

Set visrng =rng.SpecialCells(xlCellTypeVisible) 

做这是我不太清楚,如果这是你的情况是有用的,但我决定将它张贴,因为它可能是有用的人。

1

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

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

If Not Selection.Cells.Count = VisRan.Cells.Count Then 
    MsgBox "Selection contains Hidden Cells" 
End If 
相关问题