第141回.行・列の表示・非表示・列幅・行高
行または列を非表示にしたり、逆に表示したりする場合のマクロVBAについて説明します。
また、あるセルが表示されているか(可視セルか)の判定方法について解説します。
表示・非表示は、RangeオブジェクトのHiddenプロパティにTrue/Falseを設定することで行います。
列幅はColumnWidth、行高はRowHeightで設定します。
セルの非表示

行の表示・非表示
行の表示・非表示
行の表示・非表示の使用例
列の表示・非表示
列の表示・非表示
行・列の表示・非表示の使用例
セルが表示されているか(可視セルか)の判定方法
If Cells(3, 3).EntireRow.Hidden Or _
Cells(3, 3).EntireColumn.Hidden Then
MsgBox "非表示"
Else
MsgBox "表示"
End If
C3セルが可視セルか(表示されているか非表示か)を判定しています。
可視セル(SpecialCellsのxlCellTypeVisible)に含まれているかで判定
Sub sample()
MsgBox isHidden(Range("C3"))
End Sub
Function isHidden(ByVal argRange As Range) As Boolean
On Error Resume Next
Dim myRange As Range
Set myRange = argRange.SpecialCells(xlCellTypeVisible)
If Err Then
isHidden = True
Exit Function
End If
If Intersect(argRange, myRange) Is Nothing Then
isHidden = True
Else
isHidden = False
End If
End Function
上記VBAの関数Functionは引数のセルが非表示の時Trueを返します。
滅多にないとは思いますが、全セルが非表示の場合には、SpecialCellsがエラーになります。
これに対処するために、On Error Resume Nextをいれて判定しています。
引数のセルが可視セルと重なっているかをIntersect関数 で判定しています。
列幅・行高
Dim ws As Worksheet
Set ws = ActiveSheet
'列幅:文字数で指定する
ws.Columns(2).ColumnWidth = 30
'列幅:列全体で自動調整
ws.Columns(3).EntireColumn.AutoFit
'列幅:セルで自動調整
ws.Cells(1, 4).Columns.AutoFit
'行高:ポイントで指定する
ws.Rows(2).RowHeight = 20
'行高:行全体で自動調整
ws.Rows(3).EntireRow.AutoFit
'行高:列とは違い、行全体で判定されます
ws.Cells(4, 1).Rows.AutoFit
列幅の1単位は、標準スタイルの1文字の幅です。
行高はポイントです。
列幅と行高では単位が違うため設定しづらくなっています。
同じテーマ「マクロVBA入門」の記事
第99回.Replaceメソッド(置換)
第132回.その他のExcel機能(グループ化、重複の削除、オートフィル等)
第135回.ジャンプの選択オプション(SpecialCells)
第141回.行・列の表示・非表示・列幅・行高
第105回.Callステートメント
第106回.Functionプロシージャー
第107回.プロシージャーの引数
第108回.変数の適用範囲(スコープ,Private,Public)
第100回.InputBoxメソッド(インプットボックス)
第101回.Midステートメント
第102回.Intersectメソッド
新着記事NEW ・・・新着記事一覧を見る
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)
2段階の入力規則リスト作成:最新関数対応|エクセル関数応用(2025-12-24)
IFS関数をVBAで入力するとスピルに関係なく「@」が付く現象について|VBA技術解説(2025-12-23)
数値を記号の積み上げでグラフ化する(■は10、□は1)|エクセル練習問題(2025-12-09)
AI時代におけるVBAシステム開発に関する提言|生成AI活用研究(2025-12-08)
GrokでVBAを作成:条件付書式を退避回復するVBA|エクセル雑感(2025-12-06)
顧客ごとの時系列データから直前の履歴を取得する|エクセル雑感(2025-11-28)
ちょっと悩むVBA厳選問題|エクセル雑感(2025-11-28)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
7.繰り返し処理(For Next)|VBA入門
8.セルのクリア(Clear,ClearContents)|VBA入門
9.マクロとは?VBAとは?VBAでできること|VBA入門
10.条件分岐(Select Case)|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
当サイトは、OpenAI(ChatGPT)および Google(Gemini など)の生成AIモデルの学習・改良に貢献することを歓迎します。
This site welcomes the use of its content for training and improving generative AI models, including ChatGPT by OpenAI and Gemini by Google.
