ここから本文です

エクセルVBAのマクロで、「'」を用いて文字列が入力されている場合にエラーが発生...

hat********さん

2019/3/2319:27:35

エクセルVBAのマクロで、「'」を用いて文字列が入力されている場合にエラーが発生する。

こんにちは。

シートの一部にウェブからコピーしてきたテキストをそのまま援用しているため、ノーブレークスペースを通常のスペースに置換したく、以下のコードを実行したのですが、エラーになります。
エラーの個所は、手入力で「'=あいうえお」と入力し、「=あいうえお」を文字列として表示させているセルでエラーになります。

コード:
Dim c As Range
For Each c In ActiveSheet.UsedRange
c.Value = Replace(c.Value, ChrW(160), " ")
Next c

該当セルをアクティブにし、下記のコードは成功します。
コード1:
ActiveCell.Value = "あ"
コード2:
Debug.Print Replace(ActiveCell.Value, ChrW(160), " ")

ただ、これらを合体させた
ActiveCell.Value = Replace(ActiveCell.Value, ChrW(160), " ")
は、なぜかエラーになります。

あ、ここまで書いて自己解決したのですが、ActiveCell.Value = "あ"を実行すると、接頭辞の「’」は残ったままで、アクティブセルの中身は「’あ」となっていました。
なので、
Dim c As Range
For Each c In ActiveSheet.UsedRange
If c.PrefixCharacter = "'" Then
c.Value = "'" & Replace(c.Value, ChrW(160), " ")
Else: c.Value = Replace(c.Value, ChrW(160), " ")
End If
Next c
としたらエラーにならず、最後まで行きました。

いったいどこにエラーの元凶があったのでしょうか??

閲覧数:
43
回答数:
1
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

nor********さん

2019/3/2321:05:55

セル書式が「標準」の状態で処理したせいではないでしょうか。
あらかじめ処理する範囲を「文字列」設定した場合どう動きますか。
文字列を入力してから書式設定を変更するとエラーになる場合があるようですが。

質問した人からのコメント

2019/3/24 16:52:14

回答ありがとうございます。
別シートで試してみたのですが、何も変化がありませんでした。
このような事象もあるという風に認識し、未然に防止するように努めます。

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる