タイトルが説明しているように、私は Excel 2003 ワークブックを持っており、あるシートのいくつかの列を VBA で別のシートにコピーしています。私にはわかりませんが、誰かが元のシートでいくつかの列を隠しており、目的のシートのセルの処理方法が台無しになっています。
プログラムでどのように判断できますか:
- 非表示の列がある場合
- 非表示になっている列は?
ありがとう!JFV
タイトルが説明しているように、私は Excel 2003 ワークブックを持っており、あるシートのいくつかの列を VBA で別のシートにコピーしています。私にはわかりませんが、誰かが元のシートでいくつかの列を隠しており、目的のシートのセルの処理方法が台無しになっています。
プログラムでどのように判断できますか:
ありがとう!JFV
の場合は、プロパティRange
を確認してください。Range.Hidden
次の 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 つです。
これは、
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
次のような関数を使用して確認できます。
Function IsColumnHidden(column As Variant) as Boolean
IsColumnHidden = False
If Columns(column).ColumnWidth = 0.0 Then IsColumnHidden = True
End Function
0.0 の列の幅または行の高さは、範囲が非表示かどうかの指標です。