2009-07-06 66 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 
相關問題