【VBA】セルの操作(罫線を引く)

Excel・VBA

表を作る際に必要な罫線について、VBAでの設定方法等を紹介します。

【今回の内容】
 1.セル・任意の範囲の外側に罫線を引く方法
 2.セル内部・任意の範囲の内部に罫線を引く方法

セル・任意の範囲の外側に罫線を引く

セルや任意の範囲の外側に罫線を引くには、BorderAroundBordersを用いて設定します。BorderAroundは範囲の外側に罫線を引くだけですが、Bordersは範囲の外側・内部に罫線を書かせる設定を行うことができます。

セル・任意の範囲の外側

セル・任意の範囲の外側への罫線の引き方は次のように書きます。

《BorderAroundによる設定方法》
 ”セル・任意の範囲” .BorderAround LineStyle:=線の種類 , Weight:=線の太さ , Color:=色

《Bordersによる設定方法》
“セル・任意の範囲” .Borders(罫線を引く位置) .設定項目

LineStyle・Weight・Colorへそれぞれ値を指定することで、罫線の書式を設定します。

色については、RGB関数もしくは、ColorIndexを用いても設定可能です。色の設定方法に関しては、こちらの記事で説明しているので参考にしてください。

【VBAで効率化!】セルの操作(セル背景・文字の色の取得・変更)

BordersAroundによる設定では、線の種類・線の太さについて次の値をそれぞれ用いて設定します。

まず、線の種類は次のものがあります。

《線の種類》

線の種類 注意点
実線 xlContinuous  
破線 xlDash 線の太さは、細線(xlThin)もしくは普通(xlMedium)のみ設定可能
一点鎖線 xlDashDot
二点鎖線 xlDashDotDot
点線 xlDot 線の太さの設定は指定不可能
二重線 xlDouble
斜め破線 xlSlantDashDot
なし xlLineStyleNone  

線の太さに関しては次のものがあります。

《線の太さ》

太さ
極細 xlHairline
細線 xlThin
普通 xlMedium
太線 xlThick

Bordersプロパティによる設定の方法は次の項目で説明します。

サンプルコード

BorderAroundを用いたサンプルコードです。

 Sub BorderAround_sample()
   Cells(3, 2).BorderAround LineStyle:=xlContinuous, _ 
     Weight:=xlThin, Color:=RGB(255, 0, 0) 
 End Sub 

With ~ End Withを用いて次のように見やすくすることも可能です。

 Sub BorderAround_sample() 
  With Cells(3, 2)
      .BorderAround LineStyle:=xlContinuous
      .BorderAround Weight:=xlThin
      .BorderAround Color:=RGB(255, 0, 0)
   End With
 End Sub

セル内部・任意の範囲の内部に罫線を引く

セル内部や、任意の範囲の内側にも罫線を引く場合は、Bodersを用いて設定します。

セル・任意の範囲の内側

Bordersによる設定の仕方は、先ほどと同じように次のように書きます。

《Bordersによる設定方法》
“セル・任意の範囲” .Borders(罫線を引く位置) .設定項目 = 値

なお、BorderAroundでは、設定項目とイコールの間にダブルコロンがつきましたが、Bordersではつかないので注意してください。

罫線を引く位置の値は8種類、設定項目は3種類あります。

まずは引く位置の値です。

《線を引く位置》

位置
斜め(左上から右下) xlDiagonalDown
斜め(左下から右下) xlDiagonalUp
下端 xlEdgeBottom
左端 xlEdgeLeft
右端 xlEdgeRight
上端 xlEdgeTop
範囲内の横線 xlInsideHorizontal
範囲内の縦線 xlInsideVertical

 

また、設定項目は次の通りです。

《設定項目》

設定項目
線の種類 LineStyle
線の太さ Weight
Color

なお、線の種類・太さに関しては、前述の表の値を参照してください。また、色については、先ほどと同様に

【VBA】セルの操作(セル背景・文字の色の取得・変更)を参考にしてください。

サンプルコード

Bordersを利用したサンプルコードです。

   .Borders(xlDiagonalDown)
   .LineStyle = xlContinuous
   .Weight = xlThin
   .Color = RGB(0, 255, 0)
  End With
  With .Borders(xlEdgeBottom)
   .LineStyle = xlDot
   .Color = RGB(255, 0, 0)
  End With
 End Sub 
 Sub Border_sample2()
  With Range(Cells(3, 2), Cells(5, 5))
   With.Borders(xlInsideHorizontal)
    .LineStyle = xlDot
    .Weight = xlThin
    .Color = RGB(255, 0, 0)
   End With
   .BorderAround LineStyle:=continuous
   .BorderAround Color:=RGB(0, 0, 0)
  End With
 End Sub

コメント

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