正如标题所解释的,我有一个Excel 2003工作簿,并且正在将一个表格的多个列复制到另一个VBA中。我不知道,有人在源表中隐藏了几列,并且它弄糟了我如何处理目标表格中的单元格。如何确定在Excel中复制时是否存在隐藏列VBA
我怎样才能programmically确定:
- 是否有隐藏的列隐藏的列
- ?
谢谢! JFV
正如标题所解释的,我有一个Excel 2003工作簿,并且正在将一个表格的多个列复制到另一个VBA中。我不知道,有人在源表中隐藏了几列,并且它弄糟了我如何处理目标表格中的单元格。如何确定在Excel中复制时是否存在隐藏列VBA
我怎样才能programmically确定:
谢谢! JFV
对于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
您可以通过使用一个功能象检查:
Function IsColumnHidden(column As Variant) as Boolean
IsColumnHidden = False
If Columns(column).ColumnWidth = 0.0 Then IsColumnHidden = True
End Function
列宽或0.0行高是的范围是否是隐藏的指示。
如果您只想复制可见文件,那么选择一个相当不错的选项即可仅选择可见列作为范围。
这可以通过
Set visrng =rng.SpecialCells(xlCellTypeVisible)
做这是我不太清楚,如果这是你的情况是有用的,但我决定将它张贴,因为它可能是有用的人。
复制可见单元格到另一个范围,然后比较每个细胞的数量可能是最简单的方法,以确定是否有在范围隐藏单元格
如
Selection.SpecialCells(xlCellTypeVisible).Copy Destination:=VisRan
If Not Selection.Cells.Count = VisRan.Cells.Count Then
MsgBox "Selection contains Hidden Cells"
End If
也应设置某种一个标志正确的条件部分col隐藏设置为false ...也许一个数组的元素0 = col A,元素1 = col B等等 – CheeseConQueso 2009-07-06 18:37:11
@Cheese:我只是想提供一个示例遍历并检查.Hidden状态 - 有许多方法可以改进片段(使用For Each Column而不是计数器,用于实例)。 – 2009-07-06 18:43:51
@scag是啊我想到......并没有试图打击你或任何东西,只是在解决他的问题的第二部分 - ps,你的姓氏是非常熟悉的...西埃塞克斯高中?我来自Fairfield ... – CheeseConQueso 2009-07-06 18:45:11