LineStyleプロパティ
罫線を消去するにはLineStyleプロパティにxlLineStyleNoneを指定します。
ただし、LineStyleプロパティの親オブジェクトの書き方で、隣接セルの罫線を一緒に消去するかしないかが異なります。
構文
1 2 3 4 5 |
'// 確実に消去する Range.Borders(XlBordersIndex).LineStyle = xlLineStyleNone '// 選択セル側の罫線のみを消去する(隣接するセルの罫線は消去しない) Range.Borders.LineStyle = xlLineStyleNone |
Range | セル選択範囲を示すRangeオブジェクトを指定します。 | ||||||||||||||||||||||||||||||
Borders(XlBordersIndex) | Bordersプロパティに罫線の位置をXlBordersIndex列挙型で引数に設定します。なお、Borders(XlBordersIndex)はBorderオブジェクトになります。
隣接するセルに罫線が設定されている場合は、その罫線も一緒に消去するため、見た目上も消去されます。 XlBordersIndex列挙型
|
||||||||||||||||||||||||||||||
Borders:引数なし | Bordersオブジェクトを指定します。引数を指定しなかった場合は罫線の位置を上下左右、水平、垂直の6か所を指定したことになります。xlDiagonalDownとxlDiagonalUpの2つ対角線は消去しません。
隣接するセルに罫線が設定されている場合は、その罫線は消去しないため、見た目上は消去されていないように見えます。 |
||||||||||||||||||||||||||||||
LineStyle | 罫線の種類を示すプロパティです。 | ||||||||||||||||||||||||||||||
xlLineStyleNone | XlLineStyle列挙型の定数の1つで罫線の消去を行う際に指定します。 |
確実に消去する場合としない場合の違い
構文のところで書いていることの繰り返しになりますが、このようにXlBordersIndex列挙型を引数に書いた場合は確実に罫線を消去します。
1 2 |
'// 確実に消去する Range.Borders(XlBordersIndex).LineStyle = xlLineStyleNone |
しかし、XlBordersIndex列挙型を省略した場合は、選択セルの罫線しか消去しないため、隣接するセルの罫線が設定されている場合は消去されていないように見えます。
1 2 |
'// 選択セル側の罫線のみを消去する(隣接するセルの罫線は消去しない) Range.Borders.LineStyle = xlLineStyleNone |
これは知らない方が結構いるのですが、セルの罫線は見た目上1本でも、実際には2本あります。
セルの書式設定で罫線の設定する場合、このように罫線がぼやけたような表示になっているのを見たことがあると思います。
これは、隣り合うセルとの罫線が異なる場合の見え方です。見た目上は罫線が設定されていても、隣り合うセルの一方は細線、もう一方は線無しや太線など、という場合は書式設定の画面では表示できないのでこのような表現をしています。
以下の例はA1、A2、B1、B2の4つセルにそれぞれ異なる罫線を設定している例です。それぞれ罫線が設定されているのですが、隣り合うセルの罫線が異なります。
そのため、設定時は上の絵のようになっているのですが、実際には以下の絵のようにどちらかのセルの罫線が見た目上は採用されます。
見た目はこのようになりますが、実際にセルのデータとしてはセルごとの罫線の状態は設定時の内容を保持しています。
「Borders(XlBordersIndex).LineStyle = xlLineStyleNone」で消去した場合は隣の罫線も一緒に消してくれますが、「Range.Borders.LineStyle = xlLineStyleNone」の場合は隣のセルの罫線は消しません。この違いがあります。
確実に消去するサンプルコード
セル選択範囲の罫線を隣り合うセルの罫線も含めて消去するサンプルです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Sub LineStyleNoneTest1() Dim r As Range '// セル範囲 Set r = Selection '// 8か所の罫線を1つずつ消去 r.Borders(xlDiagonalDown).LineStyle = xlLineStyleNone r.Borders(xlDiagonalUp).LineStyle = xlLineStyleNone r.Borders(xlEdgeBottom).LineStyle = xlLineStyleNone r.Borders(xlEdgeLeft).LineStyle = xlLineStyleNone r.Borders(xlEdgeRight).LineStyle = xlLineStyleNone r.Borders(xlEdgeTop).LineStyle = xlLineStyleNone r.Borders(xlInsideHorizontal).LineStyle = xlLineStyleNone r.Borders(xlInsideVertical).LineStyle = xlLineStyleNone End Sub |
実行結果
実行前(細線で罫線を引いてB3からE6セルを選択した状態)
実行後
隣のセルの罫線も消しています。
選択セル側の罫線のみを消去するサンプルコード
セル選択範囲の罫線のみを消去し、隣り合うセルの罫線は消去しないサンプルです。
1 2 3 4 5 6 7 8 9 |
Sub LineStyleNoneTest2() Dim r As Range '// セル範囲 Set r = Selection r.Borders.LineStyle = xlLineStyleNone r.Borders(xlInsideHorizontal).LineStyle = xlLineStyleNone r.Borders(xlInsideVertical).LineStyle = xlLineStyleNone End Sub |
実行結果
実行前:上の実行前と同様。
実行後
隣の罫線は消していないため見た目上は消去されていません。