Excel VBA 表範囲の空白セルに斜線をひく

スポンサーリンク

表範囲の空白セルに斜線をひく方法

表範囲の空白セルに斜め線をひきたいケースがあると思いますが、Excelの標準機能の「条件付き書式」でできそうですが、斜め線には対応していません。

そこで、VBAを利用して空白セルを取得して斜め線をひくコードのご紹介をします。

SpecialCell【スペシャルセル】メソッドを使用して指定セル内のすべての空白セルを取得して
Borders【ボーダーズ】プロパティで斜め線のBoder【ボーダー】オブジェクトを取得し、Boder【ボーダー】オブジェクトのLineStyle【ラインスタイル】プロパティで線の種類を設定して
Boder【ボーダー】プロパティで指定したセル範囲(SpecialCellメソッドで取得した空白セル)
に線をひきます。

SpecialCells【スペシャルセルズ】メソッド

指定した条件を満たすすべてのセルを取得するには、Range【レンジ】オブジェクトの
SpecialCells【スペシャルセルズ】メソッドを使用します。

SpecialCells【スペシャルセルズ】メソッドの書式と設定値(引数)の説明

[]内は省略可能です。
オブジェクト.SpecialCells( Type[, Value] )

  • オブジェクト(必須)
    条件を指定するセル範囲をRangeオブジェクトで指定します。
  • Type【タイプ】(必須)
    取得するセルの種類をXlCellType 列挙型の定数で指定します。

    XlCellType 列挙型の定数
    定数 内容
    xlCellTypeSameValidation -4175 同じ条件の設定が含まれているセル
    xlCellTypeAllValidation -4174 条件の設定が含まれているセル
    xlCellTypeSameFormatConditions -4173 同じ表示形式が設定されているセル
    xlCellTypeAllFormatConditions -4172 表示形式が設定されているセル
    xlCellTypeComments -4144 コメントが含まれているセル
    xlCellTypeFormulas -4123 数式が含まれているセル
    xlCellTypeConstants 2 定数が含まれているセル
    xlCellTypeBlanks 4 空白セル
    xlCellTypeLastCell 11 使われたセル範囲内の最後のセル
    xlCellTypeVisible 12 すべての可視セル
  • Value【バリュー】(省略可)
    引数Type【タイプ】が「コメントが含まれるセル」を表すxlCellTypeConstants、または「数式が含まれたセル」を表すxlCellTypeFormulasの場合、取得する値の種類をXlSpecialCellsValue列挙型の定数で指定します。複数の値を加算して指定すると、複数の種類の定数や数式を指定できます。省略するとすべての定数および数式が対象になります。

    XlSpecialCellsValue列挙型の定数
    定数 取得できる値の種類
    xlNumbers 1 数値
    xlTextValues 2 文字列
    xlLogical 4 論理値
    xlErrors 16 エラー値

Borders【ボーダーズ】プロパティ

セルの上下左右、斜めに設定されている罫線を表すBorder【ボーダー】オブジェクトを取得するには、Borders【ボーダーズ】プロパティを使用します。

Border【ボーダー】オブジェクトを取得するには、Bordersプロパティで対象となる罫線の位置を引数で参照する必要があります。

Borders【ボーダーズ】プロパティで引数を省略した場合はすべての罫線を表すBorders【ボーダーズ】コレクションが取得されます。

Borders【ボーダーズ】プロパティの書式と設定値()の説明

[]内は省略可能です。
オブジェクト.Borders( [Index] )

  • オブジェクト(必須)
    Range【レンジ】オブジェクトを指定します。
  • Index【インデックス】(省略可)
    参照する罫線の位置をxlBordersIndex列挙型の定数で指定します。
定数 内容
xlEdgeTop【エッジトップ】 8 上端の横線
xlEdgeBottom【エッジボトム】 9 下端の横線
xlEdgeLeft【エッジレフト】 7 左端の縦線
xlEdgeRight【エッジライト】 10 右端の縦線
xlInsideHorizontal【インサイドホリゾンタル】 12 選択範囲内の内側の水平(横)線
xlInsideVertical【インサイドバーティカル】 11 選択範囲内の内側の垂直(縦)線
xlDiagonalDown【ダイアゴナルダウン】 5 各セルの左上隅から右下への罫線
xlDiagonalUp【ダイアゴナルアップ】 6 各セルの左下隅から右上への罫線

LineStyle【ラインスタイル】プロパティ

罫線の種類を設定するには、Border【ボーダー】オブジェクトのLineStyle【ラインスタイル】プロパティを使用します。値の取得と設定ができます。

LineStyle【ラインスタイル】プロパティの書式と設定値の説明

オブジェクト.LineStyle = 設定値

  • オブジェクト(必須)
    Border【ボーダー】オブジェクトまたは、Bordersコレクションを指定します。
  • 設定値(必須)
    罫線の種類をxlLineStyle列挙型の定数で指定します。オブジェクトがBordes【ボーダーズ】コレクションの場合は選択範囲のセルの4辺が対象になります。
xlLineStyle列挙型の定数
定数 内容
xlContinuous【コンテュニアス】
または、True
1 実線
xlDash【ダッシュ】 -4115 破線
xlDashDot【ダッシュドット】 4 一点鎖線
xlDashDotDot【ダッシュドットドット】 5 ニ点鎖線
xlDot【ドット】 -4118 点線
xlDouble【ダブル】 -4119 二重線
xlSlantDashDot【スラントダッシュドット】 13 斜め破線
xlLineStyleNone【ラインスタイルナム】
または、False
-4142 線なし

表範囲の空白セルに斜線をひく例

コード例

Sub 空白斜線()
With Range("A1").CurrentRegion.SpecialCells(xlCellTypeBlanks)
.Borders(xlDiagonalDown).LineStyle = True
End With
End Sub

実行結果


以上で、表範囲の空白セルに斜線をひく方法についての解説を終了します。ありがとうございました。

スポンサーリンク

関連記事・広告