MsgBox デバッグに御用心
Excel VBA でプログラムを作っている途中で、「この場合、この変数に何が入るのかな?」と確かめたくなった場合に、一時的に MsgBox を入れておいて実行し、その変数の中身を確認するということをしばしば私はやります。
しかし、API等から取得した文字列の場合は、注意が必要です。
文字列の途中に vbNullChar が存在すると、そこまでしか MsgBox は表示してくれないからです。
Debug.Print なら、全部見ることができます。
Sub Sample() Dim X As String X = "AB" & vbNullChar & "CD" MsgBox X & vbCrLf & Len(X) Debug.Print X End Sub
10年ほど前に、日立の CommuniNet Extension を使ってオンライン画面の自動制御のプログラムを VB4 で作ったときに、このことを知らなくて「あっれ〜。なんで画面の文字列が取得できているはずなのに見れないんだ?」とずいぶん悩んだもんです。
画面上にフィールドが定義されていない部分がヌルキャラだったのが原因でした。