【ExcelVBA】セル罫線の存在チェック関数


この記事はプロモーションを含みます。

ExcelVBAで資料を作成する際、フォーマットに合わせて値を動的に入力する機能の部品として作成したためメモを残しておきます。

機能と呼び出し方

ここでは、この関数の機能と呼び出し方を説明します。
機能としては、指定したセルに設定されている罫線の有無が想定通りかをチェックするものになります。

呼び出し方と戻り値

以下のように呼び出します。戻り値は、罫線の存在状態が想定通りの場合は「True」、想定通りではない場合は「False」となります。

Dim ret As Boolean
ret = checkBorders("C3", True, True, True, True)

引数

  • 引数1:チェック対象セルのアドレス
  • 引数2:セル上端の存在状態(True:存在する/False:存在しない)
  • 引数3:セル下端の存在状態(True:存在する/False:存在しない)
  • 引数4:セル左端の存在状態(True:存在する/False:存在しない)
  • 引数5:セル右端の存在状態(True:存在する/False:存在しない)

ソースコード

このソースでは、シートはアクティブシートを対象にしていますが、引数などで対象シートを選択できるようにしても良いかもしれません。

Public Function checkBorders(ByVal cell As String, ByVal top As Boolean, _
        ByVal bottom As Boolean, ByVal right As Boolean, ByVal left As Boolean) As Boolean

    checkBorders = False
    
    Set sht = ActiveSheet
    
    With sht
        If (top) Then
            If .Range(cell).Borders(xlEdgeTop).LineStyle = xlLineStyleNone Then Exit Function
        Else
            If .Range(cell).Borders(xlEdgeTop).LineStyle <> xlLineStyleNone Then Exit Function
        End If
        
        If (bottom) Then
            If .Range(cell).Borders(xlEdgeBottom).LineStyle = xlLineStyleNone Then Exit Function
        Else
            If .Range(cell).Borders(xlEdgeBottom).LineStyle <> xlLineStyleNone Then Exit Function
        End If
        
        If (right) Then
            If .Range(cell).Borders(xlEdgeRight).LineStyle = xlLineStyleNone Then Exit Function
        Else
            If .Range(cell).Borders(xlEdgeRight).LineStyle <> xlLineStyleNone Then Exit Function
        End If
        
        If (left) Then
            If .Range(cell).Borders(xlEdgeLeft).LineStyle = xlLineStyleNone Then Exit Function
        Else
            If .Range(cell).Borders(xlEdgeLeft).LineStyle <> xlLineStyleNone Then Exit Function
        End If
    End With
    
    checkBorders = True

End Function

以上で、ExcelVBA セル罫線の存在チェック関数を終わります。

コメント

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