Excel VBAでセルの罫線を引く位置を指定するときには、BordersコレクションのItemプロパティ(厳密には_Defaultプロパティ)の引数に、XlBordersIndex列挙に定義されている定数を指定します。
実は定数に指定されていない数値を指定しても、罫線を引けるようです(裏技的な方法ですが)。
指定した位置に罫線を引く
以下のSubプロシージャを実効してみると、定数に指定されていない数値を指定しても、罫線を引けることが確認できます。
Dim rng As Range
Set rng = Cells(2, "B").Resize(2, 3)
rng.Select
rng.Borders(1).Color = rgbRed
End Sub
Sub 各セルの右側に罫線を引く()
Dim rng As Range
Set rng = Cells(5, "B").Resize(2, 3)
rng.Select
rng.Borders(2).Color = rgbRed
End Sub
Sub 各セルの上側に罫線を引く()
Dim rng As Range
Set rng = Cells(8, "B").Resize(2, 3)
rng.Select
rng.Borders(3).Color = rgbRed
End Sub
Dim rng As Range
Set rng = Cells(11, "B").Resize(2, 3)
rng.Select
rng.Borders(4).Color = rgbRed
End Sub
上記のSubプロシージャを実行するとわかるとおり、
1で各セルの左側
2で各セルの右側
3で各セルの上側
4で各セルの下側
の罫線を表すBorderオブジェクトを取得できるようです。
Borders.Itemに1から4を指定することの信頼度
Borders.Itemプロパティの引数に1から4を指定できることが、どれくらい信頼できるのかが気になるところでしょう。
Dim bdr As Border, n As Long For Each bdr In Range("F2:H3").Borders
n = n + 1
If n > 4 Then Exit Sub
bdr.Color = rgbRed
MsgBox n
Next bdr
End Sub
上記のように、For Each~Nextループを使ってBordersコレクションからBorderオブジェクトを取得できる順番と、Borders.Itemに1~4を指定したときの挙動に不自然さを感じないこと、XlBordersIndex列挙に定義されている数値が5から始まる連続した整数で、しかも、5・6が斜め罫線であることを考えると、私は1~4を指定したときの挙動はかなり信頼していいのではないかと考えています。
最終更新日時:2019-11-18 12:37
- Newer:ExcelでADO・ADODBへの参照設定を
- Older:グローバル変数をローカルウィンドウで?
Home » Excel VBA Rangeオブジェクト » 罫線・Borders » Bordersの引数に定数以外の値を指定してみる