Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


53106 / 76732 ←次へ | 前へ→

【28445】Re:MidBについて
発言  りん E-MAIL  - 05/9/6(火) 19:08 -

引用なし
パスワード
   へなちょこ さん、こんばんわ。

>まだ理解していませんが、助かりました。
>ありがとうございます。
>
>>Excel97以上のバージョンであれば、
>>「Excel97からはUnicode対応のアプリケーションとなり、半角の文字であっても2バイト
>>文字として扱われる」からだと思います。
本家サポート情報に詳細が書いてあります。使用例もあります。
http://support.microsoft.com/default.aspx?scid=kb;ja;408879

>Unicodeは半角が2バイト・全角が4バイトで、
>他の文字コードは半角が1バイト・全角が2バイトなのでずれてしまったということ
>ですか?
Unicodeは全角、半角ともに2バイトです。
なので、
あaA
は、unicodeでは6バイト、ANSIでは5バイトになります。
Sub test1()
  A$ = "あaA"
  MsgBox LenB(A$), vbInformation, "Unicode"
  MsgBox LenB(StrConv(A$, vbFromUnicode)), vbInformation, "FromUnicode"
End Sub

>>MidB("文字列", 開始位置, バイト数)
>>は、
>>StrConv(MidB(StrConv("文字列", vbFromUnicode), 開始位置, バイト数), vbUnicode)
>>というようにします。
>なぜ2回変換を行うのですか?
 StrConv("文字列", vbFromUnicode) でUnicodeからANSIに変換して、MidBでカットします。
次に、その戻り値をUnicodeに戻します。
 StrConv( カット後のANSI文字列 , vbUnicode)

↓戻さないと。
Sub test2()
  A$ = "あaA"
  B$ = MidB(StrConv(A$, vbFromUnicode), 1, 2)
  MsgBox B$, vbInformation, "戻さない"
  MsgBox StrConv(B$, vbUnicode), vbInformation, "戻すと"
End Sub

0 hits

【28429】MidBについて へなちょこ 05/9/6(火) 15:31 質問
【28430】Re:MidBについて Jaka 05/9/6(火) 15:56 発言
【28432】Re:MidBについて かみちゃん 05/9/6(火) 16:17 回答
【28438】Re:MidBについて へなちょこ 05/9/6(火) 16:41 質問
【28445】Re:MidBについて りん 05/9/6(火) 19:08 発言
【28482】Re:MidBについて へなちょこ 05/9/7(水) 17:25 質問
【28538】Re:MidBについて りん 05/9/8(木) 20:28 発言

53106 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free