本記事はプロモーションを含みます

Excel VBA 列幅 自動調整 一部の列幅、全ての列幅を設定する

eyecatch_471

問題点

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の部分は記載なし、それ以外のシートはすべての列幅の自動調整になっています。

問題が解決したら、お友達と共有しませんか?

この記事にいっぱいおごってみる?

KOBE WINGのAmazonほしい物リスト

オススメ記事

eyecatch_771

Excel VBA 特定のセルが見えるようにスクロールする方法…

問題点 ExcelのVBAでワークシートのセルに値を入力して…

eyecatch_465

EXCEL VBA 保存後にWindowsをシャットダウンする方法…

問題点 EXCEL VBAで、長時間動かすマクロだと、マクロ…

eyecatch_477

Excel VBA 速度アップの方法 高速化…

問題点 ExcelのVBAを処理しているとどうしても他のプロ…


VBAVBA,Excel

Posted by KobeWing