今回はセルの書式を判定する方法を紹介したいと思います。
セルの書式を取得する方法
セルの書式を取得するにはNumberFormatLocal
を使用します。NumberFormatLocal
を使用すると、指定したセルの書式を文字列で取得することが可能です。
Sub test_書式取得()
Dim str_Format As String
'アクティブシートのA1セルの書式を取得
str_Format = ThisWorkbook.ActiveSheet.Range("A1").NumberFormatLocal
'出力
MsgBox str_Format
End Sub
実行するとアクティブシートのA1セルの書式が表示されます。
(以下はセルの書式が「標準」だった場合です)
![](https://masashi-blog418.com/wp-content/uploads/2023/12/image.png)
ちなみにRange
のところをCells
にしても取得可能です。
'Range→Cellsでも取得可能
str_Format = ThisWorkbook.ActiveSheet.Cells(1, 1).NumberFormatLocal
セルの書式を判定する方法
次にセルの書式を判定する方法を紹介します。
やり方は非常に単純で、取得した書式が任意の書式と一致するかIF
やSelect 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
書式については、「セルの書式設定」の「表示形式」タブ→「ユーザー定義」から確認できます。
![](https://masashi-blog418.com/wp-content/uploads/2023/12/image-1.png)
書式 | 文字列 |
---|---|
標準 | G/標準 |
数値 | 0_);[赤] |
文字列 | @ |
まとめ
今回はセルの書式を判定する方法を紹介しました。
セルの書式を判定する時は、
- 任意のセルに対し
NumberFormatLocal
で書式を取得 If
またはSelect Case
で判定
するようにしましょう!
このブログではVBAに関する記事を不定期で投稿していますので、是非ご覧ください!
コメント