VBAで発生。値は同じはずなのにIf文で同じ文字列だと判定してくれない。簡単なことなのに時間を取られてしまったので、メモ
(現象)
Trim関数を使って空白を削除しても、改行を置換しても消せない。
ローカルウィンドウで見ると文字列の前に空白があるようで、消せない空白でググると情報が出てきたので、それをもとに修正。
text = Replace(text, vbTab, "")
text = Replace(text, vbCr, "")
text = Replace(text, vbVerticalTab, "")
text = Replace(text, vbCrLf, "")
上記の置換では消せない。
空白・タブ・改行等を削除するマクロ – PCいじいじ.com
Debug.Print Asc(Left(text, 1)) '>13
text = Replace(text, chr(13), "")
text = Replace(text, vbCr, "")
text = Replace(text, vbVerticalTab, "")
Asc関数でコード番号を調べて、chr関数で置換しても削除できない。
text = Replace(text, Left(text, 1), "")
直接、切り出したよくわかんない該当の文字列で置換しても消せない。
EXCEL VBA 消せないスペース?: 酔いどれLinux狂[マニア]
こちらの方法でByte配列型というのを使ってみるけど消せない。
text = Replace(text, vbCr, "")
text = Replace(text, vbLf, "")
もう一度、最初のやり方に戻って、考えられる改行を消していくと、消えた!
結局正体は、vbCrLfでした。最初のコードではvbCrを先に消して、vbCrLfを消したからうまくいかず、vbCr→vbLfかvbCrLfで一度に消すかのどちらか。よく考えたら一番怪しいやつだった。
ちなみにHTMLの表をExcelに貼り付けるコード作成中のことでした。HTMLのソースを取得する際によくあることみたいです。