ExcelVBAで「選択範囲内で中央」をコードで書く方法について、紹介します。
この記事のまとめ
選択セルの中で「選択範囲内で中央」をやるには、以下のVBAコードで実現できます。
Selection.HorizontalAlignment = xlCenterAcrossSelection
このように、HorizontalAlignment
プロパティにxlCenterAcrossSelection
をセットすることで実現できます。
「選択範囲内で中央」とは?
「選択範囲内で中央」にすると、セルを結合していなくても、複数セルの間で中央に配置することができます。
- 「選択範囲内で中央」設定前
- 「選択範囲内で中央」設定後
どうしてセル結合ではダメなの?
セル結合をすると、複数のセルが結合して1つのセルになったように見えます。
しかし、実際には結合したセルすべてに値がセットされているわけではなく、このうちの1つのセルのみ(上記の例ではB2セル)にしか値がセットされません。
このようなワークシートからデータを取得しようとすると、どのセルから取得していいか分かりにくくなります。
これは総務省統計局が令和2年12月18日に公開した「統計表における機械判読可能なデータの表記方法の統一ルールの策定」の「チェック項⽬1-4 セルの結合をしていないか」にも記載されています。
詳細は以下を参照ください。
総務省統計局 – 統計表における機械判読可能なデータの表記方法の統一ルールの策定
チェック項目1-4は、別紙PDFに記載されています。
選択中のセルで「選択範囲内で中央」を行うVBAコードコード
Selection.HorizontalAlignment
を使います。
HorizontalAlignment
は、Range
オブジェクトのプロパティで、水平方向の位置を定義します。
Selection
は、選択中のセルを指します。
これにxlCenterAcrossSelection
をセットすることで、「選択範囲内で中央」が実現できます。
公式ドキュメントはこちら↓
選択したセルで中央にするには、以下のコードになります。
Selection.HorizontalAlignment = xlCenterAcrossSelection
補足:HorizontalAlignment にセット可能な値
値 | 意味 | コード例 |
---|---|---|
xlGeneral | 標準 | Selection.HorizontalAlignment = xlGeneral |
xlLeft | 左詰め | Selection.HorizontalAlignment = xlLeft |
xlCenter | 中央揃え | Selection.HorizontalAlignment = xlCenter |
xlRight | 右詰め | Selection.HorizontalAlignment = xlRight |
xlFill | 繰り返し | Selection.HorizontalAlignment = xlFill |
xlJustify | 両端揃え | Selection.HorizontalAlignment = xlJustify |
xlCenterAcrossSelection | 選択範囲内で中央 | Selection.HorizontalAlignment = xlCenterAcrossSelection |
xlDistributed | 均等割り付け | Selection.HorizontalAlignment = xlDistributed |
補足:元に戻す(標準)にするには?
元に戻す(標準)にするには、xlGeneral
をセットします。
Selection.HorizontalAlignment = xlGeneral
ちなみに「標準」とは、数値や文字列によって、右寄せや左寄せ自動的に行う設定です。
例えば数値であれば右寄せ、文字列であれば左寄せが一般的です。そのような表示を行ってくれるのが「標準」です。
補足:左寄せにするには?
左寄せにするには、xlLeft
をセットします。
Selection.HorizontalAlignment = xlLeft
補足2:1つのセルの中で中央にするには?
1つのセルの中で中央にするには、xlCenter
をセットします。
Selection.HorizontalAlignment = xlCenter
補足3:セルを結合するには?
Range
オブジェクトのMergeCells
プロパティにTrue
をセットします。
Selection.MergeCells = True
垂直位置を指定する方法
「上詰め」や「中央寄せ」「下詰め」など、垂直位置の指定もExcelVBAで行うことができます。
VerticalAlignment
プロパティを使用します。
VerticalAlignment
にセット可能な値は以下のとおりです。
値 | 意味 | コード例 |
---|---|---|
xlTop | 上詰め | Selection.VerticalAlignment = xlTop |
xlCenter | 中央揃え | Selection.VerticalAlignment = xlCenter |
xlBottom | 下詰め | Selection.VerticalAlignment = xlBottom |
xlFill | 繰り返し | Selection.VerticalAlignment = xlFill |
xlJustify | 両端揃え | Selection.VerticalAlignment = xlJustify |
xlDistributed | 均等割り付け | Selection.VerticalAlignment = xlDistributed |
コメント