正如标题所解释的那样,我有一个Excel 2003工作簿,我在VBA中将一个工作表的一些列复制到另一个工作表。我不知道,有人在源表上隐藏了几列,并且搞砸了我如何处理目标表中的单元格。
我如何以程序方式确定:
谢谢! JFV
答案 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