PR

【VBA】セル内で文字列の位置を均等に割り付ける

これで楽に!?VBA活用
記事内に広告が含まれています。

こんにちは、Ryoです。
セルの横位置に対しての均等割り付けはHorizontalAlignmentプロパティ、縦位置に対してはVerticalAlignmentプロパティを用いることで設定できますが先頭文字「前」と最終文字「後」は適用されません。その場合は文字列前後にスペースを入れる処理でセル幅に対する見た目のバランス調整ができますので、今回はその内容について書いていきたいと思います。

スポンサーリンク

1.サンプル概要

セルに入力した文字に対し、HorizontalAlignmentプロパティで均等割り付けを行います。

このような形で均等割り付けになりますが、先頭文字前と最終文字の後ろは考慮されないので、セル幅に対してアンバランスな形になります。

この状態で文字列の先頭前と最終文字の後ろにスペースを入れることができるAddIndentプロパティを利用することで、以下のように幅全体に対してほぼ均等に割り付けることができます。

縦位置についても同様に処理できますが、対象とするセルの文字列が縦方向となっていることが前提となります。以下はVerticalAlignmentプロパティで縦位置の均等割り付け処理後です。

横位置の際と同様にAddIndentプロパティを用いてスペースを入れることでほぼ均等な状態となり、全体的なバランス調整が可能です。

2.サンプルコード

Sub Sample1()
   '***横位置***

   'アクティブシートのセルC3に対する処理
   With Range("C3")
      'セル横位置に対し均等割り付けを実行
      .HorizontalAlignment = xlDistributed
      
      '設定値
      ' xlCenter:中央揃え
      ' xlDistributed:均等割り付け
      ' xlJustify:両端揃え
      ' xlLeft:左詰め
      ' xlRight:右詰め
      
      '先頭文字の前、最終文字の後ろにスペースを入れる
      .AddIndent = True
   End With

End Sub

Sub Sample2()
    '***縦位置***

    'アクティブシートのセルF9に対する処理
    With Range("F9")
       'セル縦位置に対し均等割付けを実行
       .VerticalAlignment = xlDistributed
       '先頭文字の前、最終文字の後ろにスペースを入れる
       .AddIndent = True
    End With
  
End Sub

セル内の文字に対し横位置や縦位置を指定する場合にはHorizontalAlignmentプロパティ/VerticalAlignmentプロパティを利用します。その際の設定する値についてはサンプルコード内のコメントに記述している通りです。

文字列の前後にスペースを入れる処理はAddIndentプロパティを利用します。

構文:オブジェクト.AddIndent = True / False

処理対象のセルに対して実行することで、文字列の前後にスペースを入れることができます。

Sample2の文字配置縦方向に対しても処理できますが、上にも書いたように「対象セルの文字方向が縦となっていることが前提」となります。

3.まとめ

セルの枠に太枠罫線などを設定している場合、文字列が枠に隣接していると文字が被ってしまうので間隔を空けて表示したい場合などに有効な手段かと思います。



ちなみにアルファベット文字の羅列は単語一括りと判断されるので均等割り付け処理を実行しても無効になりますからご注意を。

以上、セル内で文字列の位置を均等に割り付ける方法についてでした!今回の記事が何かの参考になれば幸いです。

Ryo

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