Excel VBA質問箱 IV

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

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


22304 / 76738 ←次へ | 前へ→

【59817】Re:文字列の分割について・・・
発言  かみちゃん E-MAIL  - 09/1/9(金) 20:16 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>1."あいうえおかきくけこ"
>2."あいう111おかきくけこ"
>3."あいう1えおかきくけこ"
>と3つの文字列があって
>文字列1=10バイトまで
>文字列2=10バイトまでとわけたいのですが・・・。
>=MIDB("文字列",1,10)
>=MIDB("文字列",11,10)
>と関数を入れますと
>
>1.は
>文字列1="あいうえお"
>文字列2="かきくけこ"
>2.は
>文字列1="あいう111 "
>文字列2="おかきくけ"
>3.は
>文字列1="あいう1え "
>文字列2=" かきくけ "
>と半角スペース的なものがはいってしまいます。
>バイトで区切っているので原因はわかりますが、
>スぺースでもないので、トリムもきかずどうしていいかわかりません
>
>このように不正の文字がでてしまった場合どうやって判断し
>どのような除去を入れればいいのでしょうか?

トリムとは、TRIM関数のことでしょうか?
また、VBAで処理する方法ですか?ワークシート関数で処理する方法ですか?
いずれにしても、
=TRIM(MIDB("文字列",1,10))
で10バイト目が、全角文字の1バイト目の場合は、除去されるようです。

VBAの場合ですと、以下のようなコードで除去されると思います。
イミディエイトウィンドウに結果が表示されますので、確認してみてください。

Sub Sample()
 Dim ss1 As String
 Dim ss2 As String
 Dim ss3 As String
 
 ss1 = "あいうえおかきくけこ"
 ss2 = "あいう111おかきくけこ"
 ss3 = "あいう1えおかきくけこ"
 
 Debug.Print "   1234567890"
 Debug.Print "1-1-1[" & MidB(ss1, 1, 10) & "]"
 Debug.Print "1-2-1[" & MidB(ss1, 11, 10) & "]"
 
 Debug.Print "2-1-1[" & MidB(ss2, 1, 10) & "]"
 Debug.Print "2-1-2[" & StrConv(MidB(StrConv(ss2, vbFromUnicode), 1, 10), vbUnicode) & "]"
 Debug.Print "2-1-3[" & Application.Trim(StrConv(MidB(StrConv(ss2, vbFromUnicode), 1, 10), vbUnicode)) & "]←除去されている"
 Debug.Print "2-2-1[" & MidB(ss2, 11, 10) & "]"
 
 Debug.Print "3-1-1[" & MidB(ss3, 1, 10) & "]"
 Debug.Print "3-2-1[" & MidB(ss3, 11, 10) & "]"
 
End Sub
1 hits

【59814】文字列の分割について・・・ 文字ってわからん 09/1/9(金) 18:25 質問
【59817】Re:文字列の分割について・・・ かみちゃん 09/1/9(金) 20:16 発言
【59819】Re:文字列の分割について・・・ kanabun 09/1/9(金) 21:27 発言
【59820】Re:文字列の分割について・・・ kanabun 09/1/9(金) 23:18 発言
【59822】Re:文字列の分割について・・・ kanabun 09/1/10(土) 0:38 発言
【59844】Re:文字列の分割について・・・ kanabun 09/1/13(火) 11:30 発言

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