EXCELのYouTube始めました!

EXCEL初心者に向けたYouTubeチャンネルを開始しました(^^)/
ぜひチャンネル登録よろしくお願いします!

効率よくエクセルを学ぶ!
スポンサーリンク

【Excel】エクセルのVBA(マクロ)にて列の幅の指定や取得や自動調節する方法【シート、指定列、複数列など:ColumnWidth】

Excelのスキルアップ

エクセルはデータ解析・管理を行うツールとして非常に機能が高く、上手く使いこなせると業務を大幅に効率化できるため、その扱いに慣れておくといいです。

ただ機能が充実しているあまり初心者にとっては処理方法がよくわからないことも多いといえます。

例えばエクセルのVBA(マクロ)にてて列の幅や指定や取得や自動調節する(シート、指定列、複数列など)にはどう処理すればいいのか理解していますか。

ここでは、このクセルのVBA(マクロ)にて列の幅や行の高さを変更したり自動調節する(シート、指定列、複数列・複数行など)について解説していきますので、参考にしてみてください。

 

スポンサーリンク

エクセルのVBAでの列の幅の変更・指定の方法【マクロ:ColumnWidth】

それでは以下のサンプルを用いて、エクセルのVBAにてシート全体の列の幅を指定・変更する方法について見ていきましょう。

シート全体の列の場を一括変更するためのサンプルコードは以下の通りです。

Sub 列の幅の指定()
Cells.ColumnWidth = 5
End Sub

マクロの画面をalt+F11にて開き、以下のよう入力します。

 

上のコードの意味を確認していきます。

Sub 列の幅の指定()

→マクロ名を「列の幅の指定(」として、定義しています

 

Cells.ColumnWidth = 5

→Cellsにてシート全体(すべてのセル)を指定。

.ColumnWidth = 5 にて、列の幅をすべて5に指定・変更としています。

 

End Sub

終了

という意味になります。

VBA画面を閉じ、マクロを実行させましょう。

この操作の実行によってシート全体の列の幅を5と変更することができました。

 

指定の1列のみの列の幅を変更する方法【マクロ】

上ではシート全体の列の幅をVBAにて一括変更しましたが、ある特定の1列のみをマクロにて指定したいこともあるでしょう。

この場合には、以下のサンプルコードを使用するといいです。

 

Sub 列の幅の指定2()
Columns(3).ColumnWidth = 20
End Sub

 

基本的なコードとしては、VBAにおけるシート全体の列の幅を指定する方法と似ていますが、一部Cells(セルすべての指定) → Columns(3)(今回は3列目のみの指定)と変更しています。

単純に3列目という1列のみを指定したわけです。今回はその幅を20としてみましょう。

これでマクロを実行すると、以下のよう1列だけの列の幅を変更することができました。

 

エクセルのVBA(マクロ)にて複数列の幅を変更・指定する方法

なお、マクロにて指定の1列のみでなく複数列の幅を一気に変更したいこともあるでしょう。

このような場合では、以下のよう複数列を指定した上で列の幅を変えていくといいです・

 

Sub 列の幅の指定3()
Columns(“C:E”).ColumnWidth = 20
End Sub

このVBAを実行すると以下の通りとなります。

 

なお、複数列を数値で指定したいときは以下のようrangeメソッドも待つようしましょう。

Sub 列の幅の指定4()
Range(Columns(3), Columns(5)).ColumnWidth = 20
End Sub

上と同様の結果となります。

 

エクセルのVBA(マクロ)にて1列おきに列の幅を指定する方法【連続でない】

なお上ではVBAにて連続する複数列の挿入を行ったものの、1列おきなどの連続でない複数列の幅を変えたいこともあるでしょう。

この場合のサンプルコードは以下の通り。

 

Sub 飛ばし列の幅変更()
Dim i, lRow As Long
maxcol = Worksheets(“Sheet11”).Cells(1, Columns.Count).End(xlToLeft).Column
For i = maxcol To 2 Step -2
Columns(i).ColumnWidth = 20

Next i
End Sub

 

コードの意味は以下の通り。

Sub 飛ばし列の幅変更()

→マクロ名の定義

 

    Dim i, lRow As Long

→後のfor文で使う変数iの定義

 

maxcol = Worksheets(“Sheet11”).Cells(1, Columns.Count).End(xlToLeft).Column

→最終列の取得。Cells(1, Columns.Count).で1行目に着目、End(xlToLeft).Column で、一度シートの最も右にいきそこから左に飛び、最終列を取得している

 

    For i = maxcol To 2 Step -2
Columns(i).ColumnWidth = 20
Next i

→ループ処理て、採取列から1行おきに2列目に達するまで、列の幅を20に変更

 

End Sub

→終了

です。

実行結果は以下の通り。

ただマクロではさまざまな記載方法があるため、あくまでコードは一例と覚えておきましょう。

 

VBAにて列の幅の自動調整を行う方法

※編集中

 

エクセルのVBA(マクロ)にて列の幅の取得を行う方法

上では列の幅の変更をマクロにて行う方法でしたが、列の幅の取得を行いたいこともあるでしょう。

指定の列(今回は2列目にしてみます)の幅を取得するには、以下のコードを用いるといいです。

 

Sub 列幅の取得()
Dim d As Double
d = Columns(2).ColumnWidth
MsgBox d
End Sub

これを実行すると、以下のように指定の列の幅がメッセージボックスとして取得できました。

上のコードの意味は以下の通り。

Sub 列幅の取得()

→マクロ名の定義

 

Dim d As Double

→dの型の定義

 

d = Columns(2).ColumnWidth

→2列目の列の幅を取得(数値や列のローマ字(Aなど)など任意の指定が可能)

 

MsgBox d

→メッセージボックスとして表示

 

End Sub

→終了。

 

 

まとめ VBA(マクロ)にて列の幅の指定や取得などを行う方法【エクセル】

ここでは、マクロにおける列の幅や指定や取得や自動調節する方法などについて解説しました。

基本的には、一つ一つのコードの意味を理解し流れを考えてスクリプトを組めばいいです。

エクセルでのさまざまな処理になれ、日々の業務を効率化させていきましょう。

 

コメント

タイトルとURLをコピーしました