マクロ記録でVBA
罫線を引く

Excelマクロの自動記録を使って、エクセルVBAの初心者向け入門解説
公開日:2013年5月以前 最終更新日:2013-02-18

第13回.罫線を引く


前回までで、文字、数値を入れ、色も塗りました。


この辺で、罫線の引き方をやりましょう。


100マス計算の罫線を、一度全て消してください。


ではマクロの記録です。


1.マクロの記録

2.A1~K11を選択

3.罫線の格子(外側、内側を細線)

4.記録終了


作成されたマクロは、


Sub Macro6()
'
' Macro6 Macro
'

'
  Range("A1:K11").Select
  Selection.Borders(xlDiagonalDown).LineStyle = xlNone
  Selection.Borders(xlDiagonalUp).LineStyle = xlNone
  With Selection.Borders(xlEdgeLeft)
    .LineStyle = xlContinuous
    .ColorIndex = 0
    .TintAndShade = 0
    .Weight = xlThin
  End With
  With Selection.Borders(xlEdgeTop)
    .LineStyle = xlContinuous
    .ColorIndex = 0
    .TintAndShade = 0
    .Weight = xlThin
  End With
  With Selection.Borders(xlEdgeBottom)
    .LineStyle = xlContinuous
    .ColorIndex = 0
    .TintAndShade = 0
    .Weight = xlThin
  End With
  With Selection.Borders(xlEdgeRight)
    .LineStyle = xlContinuous
    .ColorIndex = 0
    .TintAndShade = 0
    .Weight = xlThin
  End With
  With Selection.Borders(xlInsideVertical)
    .LineStyle = xlContinuous
    .ColorIndex = 0
    .TintAndShade = 0
    .Weight = xlThin
  End With
  With Selection.Borders(xlInsideHorizontal)
    .LineStyle = xlContinuous
    .ColorIndex = 0
    .TintAndShade = 0
    .Weight = xlThin
  End With
  Range("A1").Select
End Sub


驚くほどの長さですね、少し笑えます。


Borders

これで罫線を指定します。

()内の引数で、罫線の位置を指定し、

.LineStyle等で線の種類、太さ、色等を指定します。


Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
これは、斜め線の指定です。

.LineStyle

は、線の種類です。

実践、点線等になります。

xlNone

は、罫線を引かない指定なので、不要です。


.LineStyle = xlContinuous
線の種類です。

実践、点線等になります。

xlContinuous
は実践になります。

指定できる種類は後述します。


.ColorIndex = 0
は、罫線の色指定です。

セルに色を塗る時と同じ指定です。

今回は、不要です。


.TintAndShade = 0
は、2007以降の機能です。

罫線の色指定で、2003までに無い色使いの場合になります。

今回は、不要です。


.Weight = xlThin
線の太さの指定です。

xlThin
は、細線になります。

指定できる種類は後述します。


そして、

Selection

Range("A1:K11")

で置き換えて、整理すると、


以下になります。




Sub Macro6()
  With Range("A1:K11")
    With .Borders(xlEdgeLeft)
      .LineStyle = xlContinuous
      .Weight = xlThin
    End With
    With .Borders(xlEdgeTop)
      .LineStyle = xlContinuous
      .Weight = xlThin
    End With
    With .Borders(xlEdgeBottom)
      .LineStyle = xlContinuous
      .Weight = xlThin
    End With
    With .Borders(xlEdgeRight)
      .LineStyle = xlContinuous
      .Weight = xlThin
    End With
    With .Borders(xlInsideVertical)
      .LineStyle = xlContinuous
      .Weight = xlThin
    End With
    With .Borders(xlInsideHorizontal)
      .LineStyle = xlContinuous
      .Weight = xlThin
    End With
  End With
End Sub


Withが二重になっています。


With Range("A1:K11")
  With .Borders(xlEdgeLeft)
下のWithは、

つまり、

Range("A1:K11").Borders(xlEdgeLeft)
ということになります。


実は、

.Weight

は、省略時が、

xlThin
なので、不要なのです。


そこで、さらに整理すると、

Sub Macro6()
  With Range("A1:K11")
    .Borders(xlDiagonalDown).LineStyle = xlNone
    .Borders(xlDiagonalUp).LineStyle = xlNone
    .Borders(xlEdgeLeft).LineStyle = xlContinuous
    .Borders(xlEdgeTop).LineStyle = xlContinuous
    .Borders(xlEdgeBottom).LineStyle = xlContinuous
    .Borders(xlEdgeRight).LineStyle = xlContinuous
    .Borders(xlInsideVertical).LineStyle = xlContinuous
    .Borders(xlInsideHorizontal).LineStyle = xlContinuous
  End With
End Sub


このようになります。


大分すっきりしましたね。


でも、実はもっと簡単に指定できるのです。




Sub Macro9()
  Range("A1:K11").Borders.LineStyle = xlContinuous
End Sub


これだけで格子の罫線が引けてしまうんです。


最初のマクロの記録が、なんだかなーってなりますよね。


Borders

に、引数を指定しないと、外側・内側の指定になるのです。


しかし、これは、格子で細線だからなんですよ。


いろいろな罫線を引くには、それなりに指定が必要ですので、


当初のマクロと同等の指定が必要になります。


しかし、最もよく使う、細線の格子が、この1行でできるのはありがだいです。



罫線の種類


xlContinuous : 実線
xlDash : 破線
xlDashDot : 一点鎖線
xlDashDotDot : 二点鎖線
xlDot : 点線
xlDouble : 二重線
xlSlantDashDot : 斜め斜線
xlLineStyleNone : 無し・・・xlNoneでもよい。


線の太さ


xlHairline : 極細
xlThin : 細
xlMedium : 中
xlThick : 太


罫線の種類と、太さを組み合わせて指定します。


全ての組み合わせが有効な訳ではありません。


セルの書式設定の罫線で指定できる組み合わせになります。





同じテーマ「マクロの記録でVBA」の記事

第10回.計算結果を入れる
第11回.イミディエイトで値の確認
第12回.セルに色を塗る
第13回.罫線を引く
第14回.行列を入れ替えて貼り付け
第15回.いろいろな消去
第16回.行の挿入・削除
第17回.並べ替え
第18回.オートフィルタ
第19回.オートフィルタ2
第20回.ジャンプのセル選択


新着記事NEW ・・・新着記事一覧を見る

AIは便利なはずなのに…「AI疲れ」が次の社会問題になる|生成AI活用研究(2026-02-16)
カンマ区切りデータの行展開|エクセル練習問題(2026-01-28)
開いている「Excel/Word/PowerPoint」ファイルのパスを調べる方法|エクセル雑感(2026-01-27)
IMPORTCSV関数(CSVファイルのインポート)|エクセル入門(2026-01-19)
IMPORTTEXT関数(テキストファイルのインポート)|エクセル入門(2026-01-19)
料金表(マトリックス)から金額で商品を特定する|エクセル練習問題(2026-01-14)
「緩衝材」としてのVBAとRPA|その終焉とAIの台頭|エクセル雑感(2026-01-13)
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
8.マクロとは?VBAとは?VBAでできること|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.メッセージボックス(MsgBox関数)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。
This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ