なぜか消せない空白を削除する

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→vbLfvbCrLfで一度に消すかのどちらか。よく考えたら一番怪しいやつだった。

ちなみにHTMLの表をExcelに貼り付けるコード作成中のことでした。HTMLのソースを取得する際によくあることみたいです。

いいねとおもったらシェア!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です