ここでは、VBA で文字列の文字数とバイト数を取得するサンプルスクリプトを掲載しています。
スポンサーリンク
VBA関数の Len / LenB 関数
文字数やバイト数は Len 関数及び LenB 関数で取得できます。VBA 関数では文字列を Unicode 形式で扱うため半角と全角の区別なく 1文字 2バイトとして取得されています。
Dim halfStr As String
Dim fullStr As String
halfStr = "ABC123" ' 半角6文字
fullStr = "あいうえおか" ' 全角6文字
MsgBox "半角文字数" & Len(halfStr) ' 6
MsgBox "全角文字数" & Len(fullStr) ' 6
MsgBox "半角6文字バイト数" & LenB(halfStr) ' 12
MsgBox "全角6文字バイト数" & LenB(fullStr) ' 12
Excel ワークシート関数を使用する場合
Excel のワークシート関数の LenB 関数を使用する場合は VBA 関数とは違い半角文字は1バイト、全角文字は2バイトとして取得されます。 また、Len や LenB 関数は WorksheetFunction オブジェクトのメソッドではないため Application.Evaluate メソッドを使用しています。詳細はコメントを参照ください。
MsgBox "半角文字数" & Application.Evaluate("Len(""" & halfStr & """)") ' 6
MsgBox "全角文字数" & Application.Evaluate("Len(""" & fullStr & """)") ' 6
MsgBox "半角6文字バイト数" & Application.Evaluate("LenB(""" & halfStr & """)") ' 6
MsgBox "全角6文字バイト数" & Application.Evaluate("LenB(""" & fullStr & """)") ' 12
'--------------------------------------
' おまけ
'--------------------------------------
' コマンド文字列を引数として実行したほうが良いだろう
Dim cmdStr As String
cmdStr = "LenB(""" & halfStr & """)"
MsgBox Application.Evaluate(cmdStr)
' 以下のように[]で囲うことで短縮して記述することが可能
MsgBox [LenB("abcdef")]
' 以下の方法では、文字列" LenB("ABC123") "がそのまま出力されてしまう
MsgBox [cmdStr]
' また、セルに記述するようにセルを指定して、その文字列を使用することもできる
MsgBox [LenB(A1)] ' セル(A1)の文字列のバイト数を求める