これ何て呼びますか

下のプロシージャーで全角半角混じりの文字列を切り出し、別の文字列で結合しようと思いますがうまくいく場合といかない場合があります。

イミディエイト・ウィンドウ上とCell上で動作が違います。
Cell上でうまく表示させるにはどうしたらいいでしょうか?

Sub Test()
Dim myString(2) As String
Dim i As Integer

myString(0) = "airueo"
myString(1) = "かきくけこ"
myString(2) = "さシすせそ"

For i = 0 To 2
Debug.Print MidMbcs(myString(i), 1, 5) & "...テスト"
Cells(i + 1, 1).Value = MidMbcs(myString(i), 1, 5) & "...テスト"
Next i
End Sub

Function LenMbcs(ByVal str As String)
LenMbcs = LenB(StrConv(str, vbFromUnicode))
End Function

Function MidMbcs(ByVal str As String, start, length)
MidMbcs = StrConv(MidB(StrConv(str, vbFromUnicode), start, length), vbUnicode)
End Function

「VBA(Excel2003)で文字列の切」の質問画像

A 回答 (1件)

「かきくけこ」のバイト数で5文字目までだと、「かき」の次にもうひと文字本当はあるはずで、これのせいだと思います。



Cells(i + 1, 1).Value = WorksheetFunction.Clean(MidMbcs(myString(i), 1, 5)) & "...テスト"

として、印刷できない文字を消してあげれば、正しく表示されます。
    • good
    • 0
この回答へのお礼

ありがとうございます。

そんな関数があったんですね。

Cells(i + 1, 1).Value = MidMbcs(myString(i), 1, n) & "...テスト"

とりあえず、上のnをループで表示されるまで順番に減らしていたんですけど
きれいになりました。

お礼日時:2009/11/16 13:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報