【セル結合はダメ!】ExcelVBAで「選択範囲内で中央」にする方法

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をセットすることで、「選択範囲内で中央」が実現できます。

公式ドキュメントはこちら↓

Range.HorizontalAlignment property (Excel)
Office VBA reference topic

選択したセルで中央にするには、以下のコードになります。

    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

コメント

タイトルとURLをコピーしました