ふぢのVB小技集

文字列の長さ(バイト数)を求めたい。

(質問)
Ascii文字列の長さ(バイト数)を求めたいのですが、VBはUnicodeのためにうまくもとめられません。良い方法はありますか?



(回答)
文字列をStrConv関数でAscii形式に変換してから文字列の長さを求めます。




(解説)
VB内部で使用される文字コードはUnicodeといって、全ての文字が2バイトで表現されます。
そのため、そのまま文字列の長さを求めても結果はAsciiのものではありません。
そこで文字列を一度Ascii形式に変換してから長さを求めます。


以下に、サンプルコードを示します。


任意の処理にかかっている時間を調べる
Private Sub Command1_Click()

    Dim strBuf As String
    
    
    strBuf = "あいうえおアイウエオ"
    
    Debug.Print "Unicode文字数(Len)    = ";
    Debug.Print Format$(Len(strBuf))
    
    Debug.Print "Unicodeバイト数(LenB) = ";
    Debug.Print Format$(LenB(strBuf))
    
    Debug.Print "Ascii文字数(Len)      = ";
    Debug.Print Format$(Len(StrConv(strBuf, vbFromUnicode)))
    
    Debug.Print "Asciiバイト数(LenB)   = ";
    Debug.Print Format$(LenB(StrConv(strBuf, vbFromUnicode)))

End Sub



実行結果はこのようになります。



戻る