SetBorderVerticalPartition|縦罫線でセル範囲を列ごとに区切る
- yuji fukami
- 7月6日
- 読了時間: 3分
この部品でできること
SetBorderVerticalPartition は、指定したセル範囲を列数の一覧(PartitionList1D)に従って複数のブロックに分け、各ブロックを縦罫線で区切るExcel VBAの汎用プロシージャです。
分割位置は1始まりの一次元配列で指定(例 [2,2,3] → 2列 / 2列 / 3列 の3ブロック)
各ブロックに外周罫線+内側罫線をまとめて設定
線種・太さは列挙型(Enum)で直感的に指定でき、内側水平罫線のオン/オフも選べる
複数の項目グループを持つ表を、グループの境界で見やすく区切りたいときに便利です。
使いどころ
担当ごと・月ごとなど、複数の項目グループを持つ表を境界で区切りたいとき
見出し+データの表に、決まったスタイルの罫線をまとめて引きたいとき
分割位置を配列で変えるだけで、いろいろな列構成に対応したいとき
コード
宣言セクション(Enum)はモジュールの先頭に配置してください。依存プロシージャ(IsArray1D / IsArray1DStart1)も含めているので、そのまま貼り付ければ動作します。
使い方・引数
引数に、基準セル・最終行・分割する列数の一覧などを渡して呼び出します。
Cell(Range):基準となる左上のセル
EndRow(Long):罫線設定範囲の最終行
PartitionList1D(Variant):縦罫線で分割する列数の1始まり一次元配列(例 [2,2,3] → 2列 / 2列 / 3列)
[EdgeStyle] / [EdgeWeight]:外側罫線の線種・太さ(既定:実線・中太線)
[InsideHorizontalStyle] / [InsideHorizontalWeight]:内側水平罫線の線種・太さ(既定:点線・細線)
[InsideVerticalStyle] / [InsideVerticalWeight]:内側垂直罫線の線種・太さ(既定:実線・細線)
[InsideHorizontalOff]:内側水平罫線を設定しないか(既定:True=設定しない)
次は、ActiveSheet の B3 を起点に12行目まで、B:C / D:E / F:H の3ブロックに区切る呼び出し例です(見出しとデータも入力して確認しています)。
実際に使用すると下記の様にシート上に罫線が設定されます。B:C / D:E / F:H の3ブロックが縦罫線で区切られ、各ブロックの外周が太線、内側が点線(水平)・実線(垂直)で描かれます。

依存プロシージャ
宣言セクション(Enum):EnumLineStyle / EnumLineWeight(線種・太さの列挙型)を、必ずモジュールの先頭に配置してください(上のコードの宣言セクション部分)。これにより 実線・点線・中太線 のように日本語で分かりやすく指定できます。
IsArray1D / IsArray1DStart1:引数 PartitionList1D が「1始まりの一次元配列」であることをチェックするために使用します。詳しくは 配列の次元と開始要素番号を確認する(IsArray1D / IsArray1DStart1) を参照してください。
上のコードには依存関数も含めているので、そのまま標準モジュールに貼り付ければ動作します。
応用・注意点
PartitionList1D は1始まりの一次元配列で渡します(0始まりや二次元配列を渡すとエラーメッセージが表示されます)。各要素がブロックの列数、合計が全体の列数になります。
InsideHorizontalOff は既定で True(内側の水平罫線を引かない)です。サンプルのように表として横線も引きたい場合は False を指定します。
線種・太さは列挙型で 実線 / 点線 / 破線 / 中太線 / 細線 のように指定できます。既定値を変えたい場合は呼び出し時に引数で上書きします。
まとめ
SetBorderVerticalPartition を使えば、列数の一覧を渡すだけで、表を列グループごとに区切る罫線を一括で設定できます。分割位置を配列で変えれば、さまざまな列構成の表にそのまま使えるので、帳票や集計表づくりの部品として便利です。

