当サイトは各記事にプロモーションが含まれています

MYPROTEIN
おすすめの味

GronG
おすすめの味

ULTORA
おすすめの味

ON
おすすめの味

Pick up!

筋トレ・サプリ

 
マイプロテインってどんなブランド?【おすすめな理由を徹底解説】

マイプロテインってどんなブランド?【おすすめな理由を徹底解説】

2021/04/16
 
【GronG/グロング】スタンダードとベーシックの違いは?【おすすめが決定】

【GronG/グロング】スタンダードとベーシックの違いは?【おすすめが決定】

2022/06/15
 
【1番おすすめのホエイプロテインが決定】勝手に点数評価して比較しました

【1番おすすめのホエイプロテインが決定】勝手に点数評価して比較しました

2021/05/15

働き方

 
社会人の「つまらない」を抜け出す方法を解説【行動の意味を考える】

社会人の「つまらない」を抜け出す方法を解説【行動の意味を考える】

2022/02/18
 
【徹底解剖】テックアカデミーのフロントエンドコースの情報まとめ

【徹底解剖】テックアカデミーのフロントエンドコースの情報まとめ

2022/10/19
 
【初心者必見】VBAで業務効率化を実現するまでのロードマップ【6つの手順で実現】

VBAで業務効率化を実現するまでのロードマップ【6つの手順で実現】

2021/04/13

エンタメ

 
【徹底解剖】アローバースを理解するための完全ガイド【見どころをまとめました】

アローバースを理解するための完全ガイド【見どころをまとめました】

2021/04/26
 
【トム・ハーディ】おすすめ映画5作品

【トム・ハーディ】おすすめ映画5作品

2019/03/09
 
【どんな役でもこなす俳優マーク・ウォールバーグ】おすすめ映画17選

【どんな役でもこなす俳優マーク・ウォールバーグ】おすすめ映画17選

2020/03/22

コラム

 
【入院前に必ず読んでください】病室での生活を快適にする便利グッズを紹介【体験談あり】

病室での生活を快適にする便利グッズを紹介【体験談あり】

2021/05/24
 
入院時におすすめのWi-Fiレンタルサービスを紹介

入院時におすすめのWi-Fiレンタルサービスを紹介

2021/07/20
 
【健康に良いおすすめの入浴剤は?】入浴剤を悩みに沿ったおすすめ10選

【健康に良いおすすめの入浴剤は?】入浴剤を悩みに沿ったおすすめ10選

2020/03/16

新着&プロフィール

【Excelマクロ応用術】VBAで文字数が一番多い列幅で複数列を自動調整する方法

【Excelマクロ応用術】VBAで文字数が一番多い列幅で複数列を自動調整する方法

この記事では、複数の列幅を調整する際に、1番大きな列の幅に調整する方法を紹介します。

 

VBAの環境構築がまだの人はは以下を参考にしてださい。

 

さっそくですが、以下のようなExcelの表があるとします。

マクロ実行前の表

 この表のうち、3行目のフルーツの項目について、列幅を揃えるとします。この表だと、文字数が一番多い「グレープフルーツ」の列幅に合わせたいですよね。

 

列幅を自動で調整する際は、文字数に合わせて調整されます。そのため、一番文字数が多い、セルの列幅に合わせて調整をすれば良いです。

 

手順としては以下通りです。

  1. 文字数を配列に入れる
  2. 文字数の最大値を取得
  3. 文字数の最大値のインデックス番号を取得
  4. 最大の文字数のセルの列幅を自動調整
  5. 4の列幅の大きさを取得
  6. 該当の列を5で取得した大きさに指定

 

コードと解説は以下の通りです。

    ' iはインデックス番号とセルの列番号を指す数値
    ' lens(4)はインデックス番号0~4の5つの配列
    Dim i, lens(4) As Long
    
    ' i = 2~6の繰り返し
    ' lens(0)にCells(3, 2) → 3(「りんご」の文字数)のように文字数を配列に入れる
    For i = 2 To 6
        lens(i - 2) = Len(Cells(3, i))
    Next
    
    ' maxlenが文字数の最大値
    ' jがインデックス番号を入れる変数
    ' countは文字列の最大値のインデックスを探すために使う変数
    Dim maxlen, j, count As Long
    
    ' 配列lensの最大値を取得
    maxlen = WorksheetFunction.Max(lens)
    
    
    count = 0
    ' jにlensのインデックス番号の最小値~最大値を繰り返し
    For j = LBound(lens) To UBound(lens)
        ' 配列lensのインデックス番号jが最大値だったらForを抜ける
        If lens(j) = maxlen Then
            Exit For
        End If
        
        ' lens(j)が最大値でなければcountに+1する
        ' 上記のif文で配列を抜けた時には、countがインデックス番号になっている
        count = count + 1
    Next
        
    ' 文字数が最大値の列幅を自動調整
    ' インデックス番号は0スタートであることと、該当の列のスタートがB列のため、countに+2する
    Cells(3, count + 2).Columns.AutoFit
    
    ' max_column_lenは文字列最大値の列幅の大きさ
    Dim max_column_len As Long
    max_column_len = Cells(3, count + 2).ColumnWidth
    
    ' 該当の列幅を文字列最大値の列幅に合わせる
    Range(Cells(3, 2), Cells(3, 6)).ColumnWidth = max_column_len

コードを実行すると、以下のような画像となります。

マクロ実行後の表

以上、VBAで文字数が一番多い列幅で複数列を自動調整する方法の紹介でした。

 

以下、VBAを学ぶのにおすすめの書籍となっています。ぜひ参考にしてください。