Excel VBA 列幅 自動調整 一部の列幅、全ての列幅を設定する
問題点
ExcelのVBAでワークシートの列幅を自動調整したい。自動調整は、全ての列幅、一部の列幅のそれぞれを設定したい。
プログラムコード
指定したシートのすべての列幅を設定するコード
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")
ws.Columns.AutoFit
ワークシート「Sheet1」のすべての列幅を設定するコードになります。
それぞれのコードの意味は、次のようになります。
Dim ws As Worksheet
変数wsを使用する宣言。Worksheetオブジェクトを格納する変数を宣言しています。
Set ws = ThisWorkbook.Worksheets("Sheet1")
変数wsを介して、Sheet1をオブジェクトとして操作ができるようになります。
ws.Columns.AutoFit
変数ws(ワークシートSheet1)の全ての列幅が自動調整されます。
指定したシートの一部の列幅(A列~C列)を設定するコード
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")
ws.Columns("A:C").AutoFit
最初の2行は前の項目と同じなので、解説を省略します。
ws.Columns("A:C").AutoFit
変数ws(ワークシートSheet1)のA列~C列の列幅が自動調整されます。
すべてのワークシート、すべての列幅を設定するコード
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
ws.Columns.AutoFit
Next
1行目は前の項目と同じなので、解説を省略します。
For Each ws In ThisWorkbook.Worksheets
'(ループの中身)
Next
For~Next構文で、wsのワークシート分だけループがかかります。ループの最初にそのワークシートが変数wsに格納されます。
For Each ws In ThisWorkbook.Worksheets
ws.Columns.AutoFit
Next
ワークシートの数だけループが回り、各ワークシートが変数wsに格納され、そのワークシートの横幅が自動調整されます。文書がわかりにくいですが、要するに、ここの部分だけで、ファイルのすべてのワークシートの横幅が自動調整になります。
一部のワークシート、すべての列幅を設定するコード
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
Select Case ws.Name
Case "Sheet1", "Sheet3"
Case Else
ws.Columns.AutoFit
End Select
Next
1行目とFor~Nextは前の項目と同じなので、解説を省略します。
Select Case ws.Name
Case "Sheet1", "Sheet3"
'(条件1)
Case Else
'(条件2)
End Select
Select Case文で条件分岐をさせます。ws.Nameは、この場合は、ワークシートの名前になります。
ワークシートの名前が “Sheet1" か “Sheet3" の時は条件1のところが実行され、それ以外は条件2のところが実行されます。
Select Case ws.Name
Case "Sheet1", "Sheet3"
Case Else
ws.Columns.AutoFit
End Select
Select Case文の意味を記載したところで、肝心のプログラムは、"Sheet1″ か “Sheet3″は何もしないので前記の条件1の部分は記載なし、それ以外のシートはすべての列幅の自動調整になっています。
オススメ記事
Excel VBA 列幅 自動調整 一部の列幅、全ての列幅を設定する…
問題点 ExcelのVBAでワークシートの列幅を自動調整した…
問題点 ExcelのVBAを処理しているとどうしても他のプロ…
EXCEL VBA 保存後にWindowsをシャットダウンする方法…
問題点 EXCEL VBAで、長時間動かすマクロだと、マクロ…
ディスカッション
コメント一覧
まだ、コメントがありません