Home » Excel VBA Rangeオブジェクト » SpecialCellsメソッド » VBAでワークシートに非表示の列があるかどうかを判定する

VBAでワークシートに非表示の列があるかどうかを判定する

動作検証バージョン:Windows 11 Home + 64bit Excel バージョン 2404(ビルド17521.20000クイック実行)ベータチャネル

「excel VBA 非表示列の有無確認」
「vba 非表示の列があるか判断する」
といった検索キーワードで時折アクセスがあります。

特定の列が非表示かどうかを判定するには、Range.Hiddenプロパティを使います。

Range.Hiddenプロパティは、非表示であればTrue、非表示でなければ(表示されていれば)Falseを返します。

[スポンサードリンク]

ワークシート上に非表示の列があるかどうかを判定するだけで良いのであれば、Range.Hiddenプロパティを使わない他の方法もあります。

ワークシートに非表示列があるかを判定するサンプルマクロ

以下のExcelマクロで、アクティブなワークシートに非表示列があるかどうかを判定できます。

Sub 非表示列があるかどうかを判定する()
 If Columns.Count <> Rows(1).SpecialCells(xlCellTypeVisible).Count Then
  MsgBox "非表示の列が有ります!"
 Else
  MsgBox "非表示の列はありません。"
 End If
End Sub

サンプルマクロで行っているコードについて

式「Columns.Count」で、アクティブシートの列数が取得できます。
Columns.Countの戻り値は、xlsxファイルならば「16384」、xlsファイルならば「256」です。

「Rows(1).SpecialCells(xlCellTypeVisible).Count」で、アクティブシートの1行目の可視セル(見えているセル)の個数が取得できます。

Range.SpecialCells(xlCellTypeVisible)で可視セルを表すRangeオブジェクトが取得でき、Range.Countプロパティでその個数を取得している式です。

xlsxファイルで非表示になっている列が存在しなければ、「Rows(1).SpecialCells(xlCellTypeVisible).Count」の戻り値は「16384」ですが、非表示の列が存在すれば「16384」よりも少なくなります。

この判定を行っているのが、

If Columns.Count <> Rows(1).SpecialCells(xlCellTypeVisible).Count Then

です。

[スポンサードリンク]

Home » Excel VBA Rangeオブジェクト » SpecialCellsメソッド » VBAでワークシートに非表示の列があるかどうかを判定する

「SpecialCellsメソッド」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.