ExcelVBAで行の高さ調整 | Autofitと現在の行の高さにプラス

エクセルは主に表計算ソフトとして知られていますが、大量のテキストを入力する場合、行の高さの違いが問題になることがあります。テキスト量によって行の高さを自動的に調整できる「AutoFit」機能がありますが、これだけでは、印刷時にテキストが切れてしまう可能性があります。

さらに、手動で行の高さを調整しても、データを並べ替えた際に元の設定が保持されず、テキストが正しく表示されないことがあります。

こうした問題に対処するために、VBA(Visual Basic for Applications)を使用することが効果的です。VBAを活用することで、特定の条件や制約を考慮して行の高さを変更し、データの整合性を確保できます。これにより、テキストが見切れない状態を維持しつつ、データの整理や並べ替えにも対応できます。

目次

すべての行を自動調整(AutoFit)する

セル内の文字に合わせてExcelVBAで自動調整するには、AutoFitメソッドを使います。

AutoFitメソッドは、Excel VBAで使用される行や列のサイズを、内容に合わせて自動的に調整するためのメソッドです。主にテキストや数値などのセルの内容に基づいて、行や列の幅や高さを調整するのに利用されます。

AutoFitを使用すると、選択された行全体の高さが、その行に含まれるセル内の最大の内容に基づいて自動的に調整されます。

以下はアクティブシートの行全体の高さを、各行に含まれるセル内の最大の内容に合わせて自動的に調整します。

Sub sample()
 Rows.AutoFit
End Sub

現在の行の高さにプラスして印刷時対応

全ての行の高さを自動調整しても、印刷すると文字が表示しきれないことがあります。自動調整後に高さをプラスする方法です。

現在の行の高さを取得し高さをプラスする

Sub sample2()
    Dim i As Long
    Dim r As Double
    
    Rows.AutoFit
    For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row    
            r = Rows(i).RowHeight
            Rows(i).RowHeight = r + 5                
    Next i   
End Sub
説明
  • 5行目:行の高さを自動調整
  • 6・9行目:各行に対して高さを設定
  • 7行目:現在の行の高さを取得
  • 8行目:現在の高さにプラス「5」の場合、数字は自由に変更します

注意点:変更前の行の高さが405.5以上ある場合は、実行時エラーになります。

エクセルVBA・実行時エラー

実行時エラー'1004'

行の高さの最大値は409.5ポイントのため、エラーが発生します。

最大行の高さを超えないようにする

このコードでは、最初に「maxRH」として409.5ポイントを設定し、各行の高さがこの値を超えないように調整しています。行の高さが既に最大の場合は変更せず、超える場合は最大値に設定されます。

Sub sample4()
    Dim i As Long
    Dim r As Double
    Dim maxRH As Double
   
    maxRHt = 409.5      ' 初期の最大行の高さを設定
    
    Rows.AutoFit        ' 行の高さを自動調整
    For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row     ' 各行に対して高さを設定
        r = Rows(i).RowHeight                           ' 現在の行の高さを取得
        If r + 5 <= maxRH Then                          ' 最大行の高さを超えないように調整
            Rows(i).RowHeight = r + 5
        Else
            Rows(i).RowHeight = maxRowHeight
        End If
    Next i
End Sub
説明
  • 6行目:初期の最大行の高さを設定
  • 8行目:行の高さを自動調整
  • 9・16行目:各行に対して高さを設定
  • 10行目:現在の行の高さを取得
  • 11行目:最大行の高さを超えないように調整
  • 12行目:現在の高さにプラス「5」の場合、数字は自由に変更します
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次