プロが教える店舗&オフィスのセキュリティ対策術

業務でVBAを書いていたのですが不可解な現象に出会いましたので質問させていただきます。

客先から取得したExcelファイル(xlsx)のある列のセルの文字列を順次読み取り、処理を行おうとしたのですが上手く動作しないので、

MsgBox Cells(y,x).Value

で値を表示させたところ文字列の最後に'?'がくっついていることが分かりました。
当該セル(列)には式は入っておらず、表示形式も標準のままでしたが、セル上の表示では'?'はついておりません。

当該のExcelファイルは、(詳細は不明ですが)別の業務システムの出力をExcelファイルに変換したものです。文字コード等の関連でこの様な現象が起きることはあるのでしょうか?
或いは他にどのような理由が考えられますでしょうか?

よろしくお願いいたします。

A 回答 (1件)

機種依存文字や表示されない何かが紛れているんじゃないでしょうか。


たとえばハートマーク「♥」をセルに書き込んで、Msgboxで表示させると「?」になります。

どこかのセルに
=len(y,x)
と実際のセルを指定して文字数を確認。
表示されているセルの文字数と違いがないか確認してみてください。

即席で、セル内の文字を1文字ずつ、文字とコードを表示するものを作ってみました。
添付画像のような結果表示になります。この例だと末尾に表示されていない文字が1つあります。
Sub kakunin()
x = 1: y = 1
buf = ""
For i = 1 To Len(Cells(y, x))
buf = buf & "[" & Mid(Cells(y, x), i, 1) & "]♪" & Asc(Mid(Cells(y, x), i, 1)) & vbLf
Next
MsgBox buf
End Sub
「セルの文字列最後に?が付いている」の回答画像1
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
確認したところ、末尾に3F(?), 20(SPC)がくっついていました。

わざと、このコードを付けてセルに書きこんだところ、ちゃんと文字が表示されましたので、?の部分は何かのコードが変換されたものなのでしょうね。

お礼日時:2019/04/17 19:00

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