セルの文字の横と縦の配置を設定
セルの文字の配置はExcelの操作では、セル右クリック→セルの書式設定→配置タブ、で設定します。Excelを使っていれば必ずと言っていいほど利用する機能です。
VBAでも同様の設定を行うことが出来ます。
セルの書式設定とプロパティの関係が以下の図になります。
ここでは図の黄色部分の、横位置を設定するHorizontalAlignmentプロパティと、縦位置を設定するVerticalAlignmentプロパティについて説明します。
構文
1 2 |
Rangeオブジェクト.HorizontalAlignment Rangeオブジェクト.VerticalAlignment |
Rangeオブジェクトにはセル範囲を指定します。
どちらのプロパティも取得と設定を行うことが出来ます。
複数のセルをRangeオブジェクトで指定されている場合で、各セルの配置位置が異なる場合、取得結果はNullになります。
以下はNullが返却されるサンプルです。
1 2 3 4 5 6 7 8 9 10 11 12 |
Sub VerticalAlignmentNullTest() Dim v Range("D4").VerticalAlignment = xlCenter Range("D5").VerticalAlignment = xlBottom Range("D6").VerticalAlignment = xlJustify '// 縦位置が各セルで異なるためNullが返却される v = Range("D4:D6").VerticalAlignment Debug.Print v End Sub |
実行結果
Null
横:HorizontalAlignmentの設定値
いくつかの設定値は他のプロパティが設定できなくなるものがあります。
定数 | 値 | 内容 | 設定できなくなるプロパティ |
---|---|---|---|
xlGeneral | 1 | (既定値)標準設定 | AddIndent(前後スペース) |
xlLeft | -4131 | 左詰め | AddIndent(前後スペース) |
xlCenter | -4108 | 中央 | AddIndent(前後スペース) |
xlRight | -4152 | 右詰め | AddIndent(前後スペース) |
xlFill | 5 | 繰り返し | AddIndent(前後スペース) ShrinkToFit(縮小表示) Orientation(角度) |
xlJustify | -4130 | 両端揃え | AddIndent(前後スペース) ShrinkToFit(縮小表示) |
xlCenterAcrossSelection | 7 | 選択範囲内で中央 | AddIndent(前後スペース) Orientation(角度) |
xlDistributed | -4117 | 均等割り付け | ShrinkToFit(縮小表示) |
両端揃えはとても便利な設定です。セル内で折り返しがある場合に右端に文字を揃えてくれるので見やすさが向上します。
縦:VerticalAlignmentの設定値
いくつかの設定値は他のプロパティが設定できなくなるものがあります。
定数 | 値 | 内容 | 設定できなくなるプロパティ |
---|---|---|---|
xlTop | -4160 | 上詰め | なし |
xlCenter | -4108 | 中央揃え | なし |
xlBottom | -4107 | 下詰め | なし |
xlJustify | -4130 | 両端揃え | ShrinkToFit(縮小表示) |
xlDistributed | -4117 | 均等割り付け | ShrinkToFit(縮小表示) |
横配置のサンプルコード
C列にはセルの横幅より長い文、D列には短い文で1行目から8行目までの横位置を各設定値に変更しています。
1 2 3 4 5 6 7 8 9 10 |
Sub HorizontalAlignmentTest() Range("C1:D1").HorizontalAlignment = xlGeneral Range("C2:D2").HorizontalAlignment = xlLeft Range("C3:D3").HorizontalAlignment = xlCenter Range("C4:D4").HorizontalAlignment = xlRight Range("C5:D5").HorizontalAlignment = xlFill Range("C6:D6").HorizontalAlignment = xlJustify Range("C7:D7").HorizontalAlignment = xlCenterAcrossSelection Range("C8:D8").HorizontalAlignment = xlDistributed End Sub |
縦位置のサンプルコード
C列にはセルの横幅より長い文、D列には短い文で1行目から5行目までの縦位置を各設定値に変更しています。
1 2 3 4 5 6 7 |
Sub VerticalAlignmentTest() Range("C1:D1").VerticalAlignment = xlGeneral Range("C2:D2").VerticalAlignment = xlCenter Range("C3:D3").VerticalAlignment = xlBottom Range("C4:D4").VerticalAlignment = xlJustify Range("C5:D5").VerticalAlignment = xlDistributed End Sub |