質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

3960閲覧

VBAでシート上のnbspを一括削除する方法

poporon7

総合スコア22

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2021/12/04 01:21

編集2021/12/04 05:07

いつもお世話になっております。

シートにnbsp(ノーブレークスペース)が存在する場合、見た目はデータなしですが、データ在りとなり正しい件数が出せずに困っています。そこでnbspをVBAで削除しよう思いました。ですが、1セルずつReplace関数で削除すればできますが、範囲指定でReplaceメソッドで削除すると削除ができません。

Range("A1")=Replace(Range("A1"),ChrW(160),"") →削除できる
Sheet1.Cells.Replace(ChrW(160),"")       →削除できない (追記参照:できました)

質問は2つあります。
1_一括でnbspを削除するにはどうしたらよいでしょうか。
2_Mac版のExcelの場合、ChrWが使えないとネットにありましたが、Macの場合どのようにすればよいでしょうか。
また、MacとWindowsで共通のコードがあれば教えていただきたいです。

どうぞよろしくお願いいたします。

追記)すみません。1に関しては解決しました。シートに保護がかかっていて置き換えができなかったということに気づきました。お恥ずかしい限りです。><
できましたら2がお分かりの方がいらっしゃったらご教示いただけませんでしょうか。
MacOSの違う方にも使っていただく予定なので、Windowsと同等にしたいと考えています。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

Replace関数とRange.Replaceメソッドは別物です。
前者のコードはReplace関数、後者のコードはRange.Replaceメソッド。

Replace 関数 (Visual Basic for Applications) | Microsoft Docs

Range.Replace メソッド (Excel) | Microsoft Docs

Range.Replaceメソッドは、置換ダイアログの設定を引き継ぎますので、明示的に引数で設定を指定するようと、上記のリンク先に記述があります。
部分一致(LookAt:=xlPart)で検索するように引数で指定すればいいでしょう。

vba

1Sheet1.Cells.Replace What:=ChrW(160), Replacement:="", LookAt:=xlPart

引数名は省略することもできます。

vba

1Sheet1.Cells.Replace ChrW(160), "", xlPart

投稿2021/12/04 06:03

hatena19

総合スコア33795

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

poporon7

2021/12/04 09:15

hatena19様 丁寧に教えていただきありがとうございます。 Replaceの関数とメソッドの使い方に関してあいまいな点がありましたので、これを機に勉強したいと思います。部分一致の件、承知いたしました。試してみます。ありがとうございました。
guest

0

ベストアンサー

Macでも動作するはず。

VBA

1 Dim b(0) As Byte 2 Dim s As String 3 4 b(0) = 160 5 s = b 6 Sheet1.Cells.Replace s, "" 7

投稿2021/12/04 06:00

編集2021/12/04 07:51
jinoji

総合スコア4585

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

poporon7

2021/12/04 23:40 編集

jinoji様 b(0)について調べました。Byte型配列というのですね。この存在を知りませんでした。この方法を使えばmacでもnbspが削除できるということを教えていただきありがとうございました。目的が達成できたのでベストアンサーとさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問