【VBA】左寄せ・右寄せ・中央揃えを5分でマスター!コピペできるサンプルコードを紹介
テキストの左寄せ・右寄せ・中央揃えを使って見た目がキレイな書類を作成したい!
こんな処理を自動化するVBAをご紹介します。
この記事では、
VBAを使ってセルの配置を自動編集し作業効率をアップさせる方法
が紹介されています。
VBAでの『左寄せ・中央揃え・右寄せ』の基本的な使い方から、実務で使える応用テクニックを徹底解説。
コピペで使えるサンプルコードや図を用いてVBAの作り方を紹介しているので初心者でも安心です。
さらに、
「数値は右寄せ、文字列は左寄せ」といった条件付きの配置設定や、大量データの一括処理など、実践的なテクニック
も紹介しています。
VBAを使ってテキストの配置作業の効率を上げたい方は、ぜひ最後までご覧ください。
目次
【VBA】左寄せ・中央揃え・右寄せをする基本知識
エクセルで数値やテキストを見やすく整理するには、セルの配置設定が重要です。
VBAを使えば、これらの配置編集を完全自動化することができます。
大量のデータを処理することが多い、様式であらかじめテキストの配置が決められている、という業務への導入がおすすめ
セルの配置を制御するにはHorizontalAlignmentプロパティを使用しますが、その前に基本的な配置の違いを理解しておきましょう。
左寄せ・中央揃え・右寄せの違いとは
エクセルでは、文字列は左寄せ、数値は右寄せが基本の配置となっています。
セルの配置を区別するポイントがこちら
左寄せの特徴
→ 主にテキストデータを見やすく表示する際に配置される(請求書や領収書の品目名など)
中央揃えの特徴
→ デザイン性を高めるために見出しやタイトルといった情報がセルの中心に配置される
右揃えの特徴
→ 数値データを縦に揃えて表示しする配置される
上記のようにテキストの配置を区別する目的は
見やすく専門的な印象を与える表や資料に仕上がるから
です。
こんな感じ
HorizontalAlignmentプロパティの使い方
VBAでセルの配置を設定するには、HorizontalAlignmentプロパティを使用します。
このプロパティには、
xlLeft(左寄せ)、xlCenter(中央揃え)、xlRight(右寄せ)
という3つの主要な設定値があります。
配置を変更する基本となるサンプルコードがこちら
Sub SetAlignment()
' 左寄せの場合
Range("A1").HorizontalAlignment = xlLeft
' 中央揃えの場合
Range("B1").HorizontalAlignment = xlCenter
' 右寄せの場合
Range("C1").HorizontalAlignment = xlRight
End Sub
A1セルのテキストを左寄せ、B1セルのテキストを中央揃え、C1セルのテキストを右寄せにする
という内容です。
よくある配置ミスと対処法
配置設定で最もよくあるミスは、セルの書式設定が予期せず変更されてしまうことです。
これを防ぐための対策がこちら
- 配置を変更する前にセルの現在の書式を保持するコードを追加する
- セルの結合範囲全体を選択してから配置を変更する
- セルの書式設定がロックされていないか確認する
VBAで左寄せ・中央揃え・右寄せを操作するサンプルコード
実際の業務では、複数のセルに対して一括で配置を設定することがほとんどですよね。
セル1つ1つ配置を変更していたら時間がいくらあってもありません。
VBAを使えば、
数百個から数千個のセル配置ををまとめて変更することが可能
です。
ここでは、実務でよく使用する具体的なサンプルコードを紹介します。
コピぺして扱っているエクセルに導入してみてください。
左寄せにするサンプルコード
選択した範囲を一括で左寄せにするサンプルコードがこちら
Sub SetLeftAlignment()
' エラー処理を追加
On Error Resume Next
' 選択範囲を左寄せに設定
Selection.HorizontalAlignment = xlLeft
' 処理完了メッセージ
If Err.Number = 0 Then
MsgBox "左寄せの設定が完了しました。"
Else
MsgBox "エラーが発生しました。"
End If
End Sub
選択中の範囲を左寄せにする。また、処理完了時またはエラー発生時にメッセージボックスを表示する
という内容です。
中央揃えにするサンプルコード
指定した範囲を中央揃えにするサンプルコードがこちら
Sub SetCenterAlignment()
' 特定の範囲を中央揃えに設定
With Range("A1:D10")
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter ' 上下の中央揃えも同時に設定
End With
End Sub
A1からD1セルを左右上下で中央揃えにする
という内容です。
右寄せにするサンプルコード
数値を含むセルを右寄せにするサンプルコードがこちら
Sub SetRightAlignmentForNumbers()
Dim cell As Range
' 選択範囲内の各セルをチェック
For Each cell In Selection
' セルに数値が含まれている場合は右寄せに
If IsNumeric(cell.Value) Then
cell.HorizontalAlignment = xlRight
End If
Next cell
End Sub
選択中のセルで数値が含まれるテキストがあれば右寄せにする
という内容です。
複数のセルを一括で配置変更する方法
複数セルの配置を条件に応じて変更するサンプルコードがこちら
Sub SetMultipleAlignment()
Dim ws As Worksheet
Dim rng As Range
Set ws = ActiveSheet
Set rng = ws.Range("A1:E100")
With rng
' 文字列は左寄せ
.Cells.SpecialCells(xlCellTypeConstants, 2).HorizontalAlignment = xlLeft
' 数値は右寄せ
.Cells.SpecialCells(xlCellTypeConstants, 1).HorizontalAlignment = xlRight
End With
End Sub
A1セルからE100セルの範囲で、文字列は左寄せ、数値は右寄せにする
という内容です。
テキストが中央揃えの状態でVBAを実行した結果がこちら
A1セルからE100セルの範囲で文字列は左寄せ、数値は右寄せとなりました。
【実務で使えるVBA】実践的な活用方法と応用テクニック
実務では単純な配置変更だけでなく、より複雑な処理が求められることがほとんどです。
ここでは、エクセル業務でよく使われるVBAに配置を変更するVBAを組み込む方法を解説。
これらのテクニックを使いこなすことで、より柔軟で効率的な作業が可能になります。
条件に応じて配置を変更する方法
データの内容によって適切な配置が異なる場合、条件分岐を使用して自動的に最適な配置する処理が求められます。
条件分岐コードと配置変更コードが組み合わせられたサンプルコードがこちら
Sub SetConditionalAlignment()
Dim cell As Range
For Each cell In Selection
Select Case True
Case IsNumeric(cell.Value)
cell.HorizontalAlignment = xlRight
Case Len(cell.Value) > 20
cell.HorizontalAlignment = xlLeft
Case Else
cell.HorizontalAlignment = xlCenter
End Select
Next cell
End Sub
選択中セル内のテキストが、数値の場合右寄せ、文字数が20文字より多い場合左寄せ、文字数が20文字以下の場合中央揃えにする
という内容です。
実行結果がこちら
フォーマット作成の自動化への活用法
定期的に作成する帳票やレポートのフォーマットに配置を変更するVBAを組み込むことで作業効率アップに繋がります。
決められたフォーマットのテキスト配置を調整するサンプルコードがこちら
Sub CreateReportFormat()
' ヘッダー部分の設定
Range("A1:F1").HorizontalAlignment = xlCenter
Range("A1:F1").Interior.Color = RGB(200, 200, 200)
' データ部分の設定
With Range("A2:F100")
.Columns(1).HorizontalAlignment = xlLeft ' 項目名
.Columns(2).HorizontalAlignment = xlCenter ' コード
.Columns(3).HorizontalAlignment = xlRight ' 数値
End With
End Sub
1行目タイトル部分(A1セルからF1セル)は、テキストを中央揃えにし背景色を鼠色に変更
1列目は左寄せ、2列目は中央揃え、3列目は右寄せ
という内容です。
実行結果がこちら
エラー処理の実装方法
実務で使用するVBAには、不用意なエラー発生を防ぐために必ずエラー処理を実装しましょう。
エラー処理を含むサンプルコードがこちら
Sub AlignmentWithErrorHandling()
On Error GoTo ErrorHandler
Application.ScreenUpdating = False
' メイン処理
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
ExitSub:
Application.ScreenUpdating = True
Exit Sub
ErrorHandler:
MsgBox "エラーが発生しました。" & vbNewLine & _
"エラー番号:" & Err.Number & vbNewLine & _
"エラー内容:" & Err.Description
Resume ExitSub
End Sub
2行目は、エラーが発生した場合12行目にジャンプする。
13行目以降のコードは、「エラー番号」と「エラー内容」をメッセージボックスで表示する。
という内容です。
エラー発生時、単に処理を止めるのではなくエラー内容を表示することでデバックの効率アップに繋がります。
関連記事「初心者でもわかるデバックの方法」では効率的なデバック方法を解説しています。
よくあるトラブルと解決方法
VBAでセルの配置を操作する際に発生しやすいトラブルとその解決方法を説明します。
これから紹介する知識があれば、
多くの問題を事前に防ぐことができより安定したマクロの作成が可能になる
はずです。
よくエラーが発生して作業が進まない、なぜエラーが発生するのかわからない、という方は是非参考にしてみてください。
配置が反映されない場合の対処法
配置が反映されない主な原因は、「シートの保護」や「不適切な範囲の選択」の可能性が高いので
コードを疑う前に2つのポイントを確認してみてください。
それでも改善しない場合は、VBAを使ってエラーの原因をチェックすることも可能です。
エラーで不具合箇所の場所を把握するサンプルコードはこちら
Sub CheckAndSetAlignment()
' シートが保護されているかチェック
If ActiveSheet.ProtectContents Then
MsgBox "シートが保護されています。保護を解除してください。"
Exit Sub
End If
' 選択範囲が有効かチェック
If Selection Is Nothing Then
MsgBox "有効な範囲が選択されていません。"
Exit Sub
End If
' 配置設定
Selection.HorizontalAlignment = xlCenter
End Sub
3行目で「シートの保護」があるかチェックをする。8行目でセルの選択範囲のチェックをする。エラーがなければ選択セルを中央揃えにする。
という内容です。
実行結果がこちら
エラーが発生する原因と解決策
「無効なセル範囲の指定」や「メモリ不足」もありがちなエラー要因なので注意しましょう。
大量のデータ処理でエラーを発生させないためのサンプルコードはこちら
Sub SafeAlignmentSetting()
Dim rng As Range
Dim chunk As Range
' 大きな範囲を分割して処理
For Each chunk In Selection.Cells.SpecialCells(xlCellTypeConstants)
chunk.HorizontalAlignment = xlRight
' メモリを解放
DoEvents
Next chunk
End Sub
範囲指定して処理をし最後にメモリを解放する
という内容です。
For~Nextを1つ1つセルを選択するコードではないので、処理に必要なメモリの省略が可能。
パフォーマンスを向上させるコツ
大量のデータを処理する際は、処理速度を意識することも重要です。
パフォーマンスの良いサンプルコードがこちら
Sub OptimizedAlignment()
' 画面更新と自動計算を無効化
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
.EnableEvents = False
End With
' 処理内容をここに記述
Range("A1:Z1000").HorizontalAlignment = xlCenter
' 設定を元に戻す
With Application
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
.EnableEvents = True
End With
End Sub
3行目から7行目のコードは、処理速度の低下に繋がる「処理中の画面更新」「処理中の自動計算」をオフにする
という内容です。
11行目~15行目のコードは、オフにした「処理中の画面更新」「処理中の自動計算」を元に戻す
という内容です。
作成したVBAの始まりと終わりに「処理中の画面更新」「処理中の自動計算」を操作するコードを入力するだけで
パフォーマンスを大幅に向上させることができます。
必要に応じて、自分の環境に合わせてカスタマイズしてください。
いかがでしたでしょうか。
セルの配置を変更するVBAを使いこなせるようになれば、
見た目のキレイな資料作りの効率化に役立てることが可能
です。
この記事を読んで、
「VBAやってみたい!」「いろんなエクセル業務の自動化に挑戦したい!!」
と感じてくれた方はエクセルVBAの情報を定期的に配信しているメルマガへの登録を検討してみてください。
エクセル業務で苦しんだ私の経験を元に、
実務で役立つVBA情報をお届けしています。
この記事が、あなたの業務効率化への第一歩となることを願っています。
ディスカッション
コメント一覧
まだ、コメントがありません