電子書籍の厳選無料作品が豊富!

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:="-" が原因のようなのですが、理由も対処方法もわかりません。
どなたか、ご教授ください。

A 回答 (4件)

NO3です。


>「完全に同一なセルだけを検索する」はオフになっていますし、"-" だけがダメというのも...
 ⇒ハイフンは単独で使用する事はないと思い、完全一致型になっていればこのような
  振る舞いになると思い回答した次第です。

  因みに「What:="-" が原因」とは想定し難く、且つ、マクロ記録では正常との事ですので
  別モジュールに転用した際のカスタマイズ部分が影響していると思われます。
  この辺りを再確認しては如何でしょうか。
    • good
    • 0

Replaceメソッドでは前回設定の条件を引き継ぐことになっています。

(Findでも同じ)

仮にこのメソッドを動かす以前に置換操作等で「完全一致型」を設定したとすると
この条件が継承され期待通りの動きになりません。

因みに現在の編集→置換で設定状態を確認してみて「完全一致型」が選択されている
ようならこの原因が考えられますので、構文の条件は省略せずに指定した方が良いと
思いますが如何でしょうか。

この回答への補足

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

補足日時:2011/11/25 21:59
    • good
    • 0

2007版や2010版ではしっかりと変換されますので


2000版が対応していないのか、半角・全角を間違えたかでしょう。

この回答への補足

回答ありがとうございます。

> 2000版が対応していないのか、半角・全角を間違えたかでしょう。

Excel2000 のマクロ記録を使って、Excel2000 での動作確認ですので、Excel2000 が未対応ということは無いと思います。
半角・全角も確認しましたが、間違えていません。

補足日時:2011/11/24 00:08
    • good
    • 0

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
もうまく行くゆくようですが。

この回答への補足

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

補足日時:2011/11/24 00:14
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/11/24 00:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!