エクセルは主に表計算ソフトとして知られていますが、大量のテキストを入力する場合、行の高さの違いが問題になることがあります。テキスト量によって行の高さを自動的に調整できる「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」の場合、数字は自由に変更します
実行時エラー'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」の場合、数字は自由に変更します