Home » Excel VBA Rangeオブジェクト » 罫線・Borders » Bordersの引数に定数以外の値を指定してみる

Bordersの引数に定数以外の値を指定してみる

動作検証バージョン:Windows版Excel(バージョン1809 ビルド10827.20138)

Excel VBAでセルの罫線を引く位置を指定するときには、BordersコレクションのItemプロパティ(厳密には_Defaultプロパティ)の引数に、XlBordersIndex列挙に定義されている定数を指定します。

実は定数に指定されていない数値を指定しても、罫線を引けるようです(裏技的な方法ですが)。

[スポンサードリンク]

指定した位置に罫線を引く

以下のSubプロシージャを実効してみると、定数に指定されていない数値を指定しても、罫線を引けることが確認できます。

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

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を指定できることが、どれくらい信頼できるのかが気になるところでしょう。

Sub Borderを少しずつ引いてみる()
 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

[スポンサードリンク]

Home » Excel VBA Rangeオブジェクト » 罫線・Borders » Bordersの引数に定数以外の値を指定してみる

Copyright © インストラクターのネタ帳 All Rights Reserved.

.