| Microsoft Access Club >AccessTips >このページ >次頁 <前項 | |
|
Access2000以降、Unicodeが採用されました。Unicodeでは、半角、全角文字を問わず全て2バイトになります。
逆に、ANSI形式では、1バイトで表される文字と、漢字のように2バイトで表される文字が混在しています。 VBAはUnicode形式VBAでANSI文字形式を利用したい場合、Unicode形式からANSI形式の文字列変換を行います。これには、StrCov関数を用います。 サンプルプロシージャ例えば、Accessの文字をANSI形式に変換し、LenB関数でバイト数をもとめ、次にUnicode形式に戻して同じくLenB関数でバイト数を求めるプロシージャを作成すると、下記のようになります。 Function SamplePro()
Dim strMoji As String
Dim strChg As String
strMoji = "Access"
strChg = StrConv(strMoji, vbFromUnicode) '----A
MsgBox strMoji & "は、ANSI形式で" & LenB(strChg) & " バイトの文字です"
strChg = StrConv(strChg, vbUnicode) '----B
MsgBox strMoji & "は、Unicode形式で" & LenB(strChg) & " バイトの文字です"
End Function
解説
留意点このように、半角と全角を区分する(半角は1バイト、全角は2バイト)時などは、Unicodeのままでは正しく求めることはできませんので、一時的にANSI形式に変換し計算します。 関連ページ2004/04/15
|