• 締切済み

特定の文字でReplaceメソッドが動作しません

Excel2000のVBAで、"-"(マイナス) を "~"(チルダ)に置き換えたいのですが、動作しません。 Selection.Replace What:="-", Replacement:="~" というコードです。 以下のコードは、うまく動作しますが Selection.Replace What:="A", Replacement:="B" Selection.Replace What:="A", Replacement:="~" 以下のコードは、動作しません Selection.Replace What:="-", Replacement:="B" Selection.Replace What:="-", Replacement:="~" どうやら、What:="-" が原因のようなのですが、理由も対処方法もわかりません。 どなたか、ご教授ください。

みんなの回答

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.4

NO3です。 >「完全に同一なセルだけを検索する」はオフになっていますし、"-" だけがダメというのも...  ⇒ハイフンは単独で使用する事はないと思い、完全一致型になっていればこのような   振る舞いになると思い回答した次第です。   因みに「What:="-" が原因」とは想定し難く、且つ、マクロ記録では正常との事ですので   別モジュールに転用した際のカスタマイズ部分が影響していると思われます。   この辺りを再確認しては如何でしょうか。

masnoske
質問者

お礼

お礼を忘れておりました。 申し訳あらません。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

Replaceメソッドでは前回設定の条件を引き継ぐことになっています。(Findでも同じ) 仮にこのメソッドを動かす以前に置換操作等で「完全一致型」を設定したとすると この条件が継承され期待通りの動きになりません。 因みに現在の編集→置換で設定状態を確認してみて「完全一致型」が選択されている ようならこの原因が考えられますので、構文の条件は省略せずに指定した方が良いと 思いますが如何でしょうか。

masnoske
質問者

補足

回答ありがとうございます。 「完全に同一なセルだけを検索する」はオフになっていますし、"-" だけがダメというのも...

  • DreamyCat
  • ベストアンサー率56% (295/524)
回答No.2

2007版や2010版ではしっかりと変換されますので 2000版が対応していないのか、半角・全角を間違えたかでしょう。

masnoske
質問者

補足

回答ありがとうございます。 > 2000版が対応していないのか、半角・全角を間違えたかでしょう。 Excel2000 のマクロ記録を使って、Excel2000 での動作確認ですので、Excel2000 が未対応ということは無いと思います。 半角・全角も確認しましたが、間違えていません。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

A1に、例えば A-sdf-Ad を入れて Sub test01() Cells(2, "A") = Cells(1, "A") Cells(3, "A") = Cells(1, "A") Cells(4, "A") = Cells(1, "A") Cells(5, "A") = Cells(1, "A") Cells(2, "A").Replace "A", "B" Cells(3, "A").Replace "A", "~" Cells(4, "A").Replace "A", "-" Cells(5, "A").Replace "-", "X" End Sub を実行すると意図どおりになるようですが。 エクセルVBAのReplaceメソッドの例ですが。 ーーー 関数の場合 Sub test02() Cells(4, "A") = Replace(Cells(1, "A"), "A", "-") Cells(5, "A") = Replace(Cells(1, "A"), "-", "X") End Sub もうまく行くゆくようですが。

masnoske
質問者

お礼

回答ありがとうございます。 imogasi さんに確認いただいたのは、Replace関数です。 私の質問は、Replaceメソッドなので、違います。 ですが、Replaceメソッドを For Each ~ Next を使って Replace関数に置き換えてみたところ、うまく動作しました。 おかげさまで問題解決しましたが、Replaceメソッドで動作しない原因は不明です。

masnoske
質問者

補足

Replaceメソッドも確認いただいていたようで、申し訳ありませんでした。 単純に記録したマクロを再生(?)するだけなら動作するのですが、記録したコードを別のモジュールにコピペすると、動作しないみたいです。

関連するQ&A