この記事では、非表示の列を特定する方法についてご説明します。
【動画】非表示の列を特定する実際の動き
本題に入る前に、まずは次の動画をご覧ください。
マクロを実行すると非表示の列位置を特定し、(表示用に設置した)listboxに出力しています。
Excelファイルの例
今回は以下のExcelファイルを用意しました。
BからC列、GからI列、KからM列、PからR列が非表示に設定されています。
この非表示にされている列を表示するためにListboxを設置しました。
マクロを実行すると、この非表示にされている列がListboxに表示されます。
マクロ作成の流れ
STEP.1
シートのすべての列に対して非表示かどうか判定する
シートのすべての列に対して非表示かどうか判定します。
もし非表示の列が特定できた場合、その表示の列位置をListboxに表示させています。
もし非表示の列が特定できた場合、その表示の列位置をListboxに表示させています。
コードの例
Option Explicit
Sub test()
Dim ws As Worksheet 'ワークシート変数
Dim cnt As Long 'カウンタ用変数
'シート名を取得する
Set ws = Worksheets("top")
'Listboxをクリアする
ListBox1.Clear
'列の数だけ処理を繰り返すFor文
For cnt = 1 To ws.Columns.Count
If ws.Columns(cnt).Hidden Then
'非表示の列の場合
'ListBoxに非表示の列位置を出力する(アルファベット表示)
ListBox1.AddItem Split(ws.Cells(1, cnt).Address, "$")(1)
End If
Next cnt
End Sub注目すべきコード①
最初に見て頂きたいのは15行目です。
'列の数だけ処理を繰り返すFor文
For cnt = 1 To ws.Columns.Countコードの説明
以上のコードは、列の数だけ処理を繰り返すFor文です。
非表示のセルを特定するため、すべてのセルの数だけ処理を繰り返します。
注目すべきコード②
次に見て頂きたいのは17行目から24行目です。
If ws.Columns(cnt).Hidden Then
'非表示の列の場合
'ListBoxに非表示の列位置を出力する(アルファベット表示)
ListBox1.AddItem Split(ws.Cells(1, cnt).Address, "$")(1)
End Ifコードの説明
以上のコードは、列が非表示の列なのか判定し、非表示の列の場合はListboxに列位置のアルファベットを設定するコードです。
一番左の列が非表示ならAを、左から2番目の列が非表示ならBをListboxに設定します。
コードの詳細
17行目でHiddenプロパティの値がTrueかどうか判定し、Trueの場合は22行目ではListboxに行位置を設定しています。
動作確認
最後に
この記事では、非表示の列を特定する方法についてご説明しました。
非表示の列を特定したいときには本記事を参考にしてみてくださいね。
プログラミングのスキルを習得するなら
プログラミングのスキルを習得したい、今のスキルをもっと高めたい、そう考えているなら「プログラミングスクール」がおすすめです。
プログラミングのスキルの基礎を身につけるなら「TechAcademy」で1週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。




