Office365、Excel:VBAでワークシートとLen関数が異なる
Office365は、表計算ソフト、ワープロソフト、プレゼンテーションソフト、データベースソフト等が
入っているオフィスソフトです。これをインストールして置けば、家庭や仕事で多くの事が出来る様になります。
しかし、VBAでワークシートとLen関数の挙動が異なるので、注意が必要です。使用したパソコンは、下記の
ソフトを使用していました。
OS : Windows10(64bit)バージョン21H1(OSビルド 19043.1055)
オフィスソフト : Excel for Microsoft 365 MSO(16.0.14026.20294)
64bit
以下、Office365、Excel:VBAでワークシートとLen関数が異なるを記載して行きます。
(項目1)
・VBAでワークシートとLen関数の挙動が異なるので、注意が必要です。
・何れも文字列の文字数を調べる関数ですが、1文字を半角や全角により1バイトまたは2バイトで数えます。
(項目2)
・ワークシート関数とVBA関数で、Len関数は以下の様になります。
ワークシート関数: LEN()、 LENB()
VBA関数 : Len()、 LenB()
(項目3)
・上記の違いを表で纏めました。
(項目4)
・VBAコードは、以下の通りです。
Sub Test02()
Range("C7:F9").Select
Selection.ClearContents
'ワークシート関数 LEN() ←半角:1バイト、 全角:1バイト
Range("C7") = Application.Evaluate("LEN(B7)")
Range("C8") = Application.Evaluate("LEN(B8)")
Range("C9") = Application.Evaluate("LEN(B9)")
'ワークシート関数 LENB() ←半角:1バイト、 全角:2バイト
Range("D7") = Application.Evaluate("LENB(B7)")
Range("D8") = Application.Evaluate("LENB(B8)")
Range("D9") = Application.Evaluate("LENB(B9)")
'VBA関数 Len() ←半角:1バイト、 全角:1バイト
Range("E7") = Len(Range("B7"))
Range("E8") = Len(Range("B8"))
Range("E9") = Len(Range("B9"))
'VBA関数 LenB() ←半角:2バイト、 全角:2バイト
Range("F7") = LenB(Range("B7"))
Range("F8") = LenB(Range("B8"))
Range("F9") = LenB(Range("B9"))
Range("G2").Select
End Sub
(項目5)
・以上で、Office365、Excel:VBAでワークシートとLen関数が異なるは終了です。