ExcelVBAで?マーク特殊空白nbspをReplaceで変換

投稿者: | 2020年11月14日
excelアイコン

Excelバージョン

マイクロソフト365

 

VScodeからエクセルにコピペして再度VScodeにコードをコピペすると変な空白ができてエラーが出てしまいました。

あれ~何だこれは??

ということで色々調べた結果、nbspという特殊な空白文字が含まれているためにエラー表示になってしまいました。

本日はこのnbsp空白について解決できたので解説していきたいと思います。

 

特殊空白

nbspエラー

 

解決後

nbsp解決文字

 

それではいってみましょう(^O^)

 

エラーの内容

行頭に奇妙な空白ができたので削除するためにtrimで削除しようとした結果、空白が削除できませんでした。

え?trimで削除できない?頭の中が?マークだらけになります。

 

とりあえず文字コードを調べるために下記の関数で文字を調べてみます。

【結果】

160と表示されました。

 

ちなみに同じようにセルに空白を入れて調べてみると…

半角空白→32、全角空白→12288になります。

え?160はなんだ?とまたまた頭の中が?マークだらけに…

色々調べた結果エラー文字が160でnbsp(ノンブレークスペース)ということが判明。htmlやワードプレスのテキストで出てくる ですよね…

文字コード

半角空白→32

全角空白→12288

nbsp→160

念のためdebug.printで試してみると空白の箇所が????というような?マークになります。

下記はイミディエイトウィンドウで表示させると見れます。

nbspエラー

 

 

解決法

文字コードが160ということがわかったのでChrW(文字コード)を160にしてreplaceメソッドを使用してnbspを半角空白に置き換えます。

 

 

VBAサンプル

データがA列にある場合のVBAサンプルコード

下記はイミディエイトウィンドウで表示させると見れます。

nbsp解決文字

データ数が大量にあるときのために繰り返し処理で全ての行のnbspを置き換えてあげれば大量データも一瞬で置き換えができます。

あとはイミディエイトウィンドウで置き換えしたものを再度VSCodeにコピペしてあげれば特殊空白が半角空白に変換されているのでエラー表示はされません(*^^)v

 

 

まとめ

こういった特殊文字のエラーはほんとややこしくて嫌になりますね。

私はこういうのが一番苦手でエラーが出ると頭の中が?マークだらけになってしまいます(? ?)v

でも…なんとか解決できたので参考になれば幸いです(*゚▽゚)ノ

以上です。