【Excel VBA】セルの書式を取得・判定する方法を紹介【NumberFormatLocal】

Excel
スポンサーリンク

今回はセルの書式を判定する方法を紹介したいと思います。

スポンサーリンク

セルの書式を取得する方法

セルの書式を取得するにはNumberFormatLocalを使用します。
NumberFormatLocalを使用すると、指定したセルの書式を文字列で取得することが可能です

Sub test_書式取得()

    Dim str_Format              As String
    
    'アクティブシートのA1セルの書式を取得
    str_Format = ThisWorkbook.ActiveSheet.Range("A1").NumberFormatLocal

    '出力    
    MsgBox str_Format
    
End Sub

実行するとアクティブシートのA1セルの書式が表示されます。
(以下はセルの書式が「標準」だった場合です)

ちなみにRangeのところをCellsにしても取得可能です。

'Range→Cellsでも取得可能
str_Format = ThisWorkbook.ActiveSheet.Cells(1, 1).NumberFormatLocal
スポンサーリンク

セルの書式を判定する方法

次にセルの書式を判定する方法を紹介します。

やり方は非常に単純で、取得した書式が任意の書式と一致するかIFSelect Caseで判定するだけです。

Sub check_書式()

    Dim str_Format              As String
    Dim str_Msg                 As String
    
    str_Format = ThisWorkbook.ActiveSheet.Range("A1").NumberFormatLocal
    
    If str_Format = "G/標準" Then
        str_Msg = "標準"
    ElseIf str_Format = "0_);[赤](0)" Then
        str_Msg = "数値"
    ElseIf str_Format = "@" Then
        str_Msg = "文字列"
    Else
        str_Msg = "それ以外"
    End If
    
    MsgBox str_Msg
    
End Sub

書式については、「セルの書式設定」の「表示形式」タブ→「ユーザー定義」から確認できます。

書式文字列
標準G/標準
数値0_);[赤]
文字列@
スポンサーリンク

まとめ

今回はセルの書式を判定する方法を紹介しました。

セルの書式を判定する時は、

  1. 任意のセルに対しNumberFormatLocalで書式を取得
  2. IfまたはSelect Caseで判定

するようにしましょう!

このブログではVBAに関する記事を不定期で投稿していますので、是非ご覧ください!

コメント

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