第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 ・・・新着記事一覧を見る
列全体を指定する時のRangeとColumnsの違い|ツイッター出題回答 (2023-09-24)
シートのActiveXチェックボックスの指定方法|ツイッター出題回答 (2023-09-24)
ByRef引数の型が一致しません。|ツイッター出題回答 (2023-09-22)
シートコピー後のアクティブシートは何か|ツイッター出題回答 (2023-09-19)
Excel関数の引数を省略した場合について|ツイッター出題回答 (2023-09-14)
セル個数を返すRange.CountLargeプロパティとは|VBA技術解説(2023-09-08)
記号を繰り返してグラフ作成(10単位で折り返す)|ツイッター出題回答 (2023-08-28)
シートを削除:不定数のシート名に対応|VBAサンプル集(2023-08-24)
ランクによりボイントを付ける(同順位はポイントを分割)|ツイッター出題回答 (2023-08-22)
OneDrive使用時のThisWorkbook.Pathの扱い方|VBA技術解説(2023-07-26)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.繰り返し処理(For Next)|VBA入門
4.変数宣言のDimとデータ型|VBA入門
5.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
6.マクロとは?VBAとは?VBAでできること|VBA入門
7.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
8.並べ替え(Sort)|VBA入門
9.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
10.条件分岐(IF)|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。