• 締切済み

特定の文字で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/17068)
回答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

  • Replace関数ですか?Replaceメソッドで

    VBAの基本的な質問なのですが ************************************* Sub test() Cells.Replace What:="あああ", Replacement:="いいい" End Sub ************************************* の「Replace」は、 Replace関数ですか? Replaceメソッドですか? オブジェクトブラウザで確認すると ************************************* Excel.Range のメンバ VBA.Strings のメンバ Office.TextRange2 のメンバ Excel.WorksheetFunction のメンバ ************************************* のReplaceがあるのですが 例のReplaceはどれに該当するか教えてください。 ご回答よろしくお願いします。

  • オブジェクト、プロパティ、メソッドの関係

    環境:OS.Win2000、Excel2000VBA プロパティやメソッドの呼び出し方法に疑問があります。 ExcelのVBAで以下の動作は確認しています。(例1) Dim xlApp As Application Dim xlBook As Worksheet '置換 xlApp.ActiveCell.Replace what:="A", replacement:="B", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, MatchByte:=False '検索 Set Oret = xlBook.Application.Cells.Find(what:="A", After:=ActiveCell, _ LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, _ SearchDirection:=xlNext, MatchCase:=False, MatchByte:=False) 疑問に思っているのは「xlApp.ActiveCell.Replace」の”Replaceメソッド”を オブジェクトブラウザで調べるとRangeオブジェクトと、WorksheetFunctionオブ ジェクトにしか含まれないように受け取れます。またヘルプの「対象」を見ても Replaceが含まれているのは二つしかありません。ようするに以下の二通りでし か使えないように思えるのです。 Dim A As Range Dim B As WorksheetFunction A.Replace ~ B.Replace ~ しかし実際には(例1)のようにApplicationオブジェクトでも”Replaceメ ソッド”を使えます。”Replace関数”を見てみても引数を見ると”Replace メソッド”です。いまひとつ理解が浅いため目的の動作をさせるのにどのオ ブジェクトからメソッドを呼べば良いのか分かりません。基本的な事なのか もしれませんが、ぜひご回答くださいよろしくお願いします。

  • エクセルのマクロの制限

    エクセルで以下のようなタブとスペースを削除するマクロを実行したところ Sub Tab_Clear() Selection.Replace what:=" "+Chr(9), replacement:="" Selection.Replace what:=" ", replacement:="" End Sub 上のほうは削除されるのですが後のほうの行は削除されません、制限があるのでしょうか? また全行削除する方法はないでしょうか?

  • エクセル2003で、動作するでしょうか?

    現在、エクセル2007でマクロの作成練習をしていますが、 マクロの記録を使用して次のマクロを得ました。 > Columns("B:B").Select Selection.Replace What:="P", Replacement:="m" ,_ LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False,_ SearchFormat:=False, ReplaceFormat:=False エクセル2003を使用している友人の依頼で作成したものですが、 当方、エクセル2003の環境がないため、動作するのか エラーが生じるのか分かりません。 どなたか教えて下さい。 エラーが出るなら、どの部分を直せばいいのかも。よろしくお願いします

  • エクセルVBA、Replaceコマンドで「AM、PM」が自動的に付加されるのを防ぐことはできますか

    いつもお世話になります。 Windows XP、Excel 2003です。 シート上の時刻表示を普通の十進法に直す必要が生じました。 例えば「8:30:00(表示書式が"h:mm"なので実際の表示は"8:30")」→「8.30」という具合です。 (「8.5」ではありません) 手動でやる場合、 ":"→"."に置換 ".00"→""に置換 表示書式を"0.00"に変更 この手順でうまくいったので、(データが大量にある関係で)マクロを組みました。 Selection.Replace What:=":", Replacement:=".", LookAt:=xlPart Selection.Replace What:=".00", Replacement:="", LookAt:=xlPart Selection.NumberFormatLocal = "0.00" ところが2行目でエラーが出るので、調べてみると、1行目の実行後にデータが次のようになっていました。 元データ「20:00:00」→実行後のデータ「8.00.00 PM」 とりあえず、1行目の後に右側3文字を削除するコードを入れ、「PM」の場合は、さらに最後に12を足して、その措置でデータはすべて変換できたのですが、1行目で、 元データ「20:00:00」→実行後のデータ「20.00.00」 という風にする方法はないか、ご存知の方がいらっしゃいましたらよろしくお願いいたします。

  • 文字列変換(置換)方法について

    Selection.Replace を利用して単体の文字を置換することはできるのですが、 例えば とあるセルに りんご+みかん+めろん っていう文字列が入力されていた場合、 Selection.Replace what:="りんご" , replacement:="" をすることによって、結果、 +みかん+めろん にすることはできますが、 ++だけにするようにはできませんでしょうか。 りんご+みかん+めろん+なし+・・・・・っと 20パターンぐらいあるので、 Selection.Replace では難しいのではと思っております。 該当の文字列だけ消す処理をしたいです。 すいませんがお願いします

  • CSVファイルの「20090423」を日付型の「2009/4/23」へ変換したい

    CSVファイルには書式設定が標準で「20090423」と入力されていますが これを日付型の「2009/4/23」へ変換したいのですがどうすればいいでしょうか? 現在は With Columns(1) .Replace what:="200809", Replacement:="2008/09/", LookAt:=xlPart .Replace what:="200810", Replacement:="2008/10/", LookAt:=xlPart .Replace what:="200811", Replacement:="2008/11/", LookAt:=xlPart .Replace what:="200812", Replacement:="2008/12/", LookAt:=xlPart .Replace what:="200901", Replacement:="2009/01/", LookAt:=xlPart .Replace what:="200902", Replacement:="2009/02/", LookAt:=xlPart End With とやっていますが量が多くて追いつけません。 ご教授よろしくお願いします。

  • 半角全角区別しない場合の置換

    エクセルvbaで Cells.Replace What:=str置換前, Replacement:=str置換後, LookAt:=xlPart のように置換するときに 半角でも全角でも置換できるようにするにはどうすればいいですか? Replaceにカーソルを当てF1を押すと ライブラリでVBAとExcelのヘルプがありますが どちらを見ても、半角全角区別しない場合の書き方は書いてなかったため わかりませんでした。

  • ハングルを日本語に置換

    Excel VBAでハングルを日本語に置換することはできますか? 例えば、 Range("A:A").Replace What:="일본", Replacement:="日本" を行いたいのですが、VBEでハングルを入力できません。 よい方法があれば、お教えください。

  • 置換のマクロ

    先ほど質問させていただいている件なのですが 余りにも自分が記入した内容が分かりにくいので質問形式を変更します。 「置換」をするのに ボタンで簡単にできるよう以下のマクロを記録しました。 Sub Macro1() ActiveWindow.SmallScroll Down:=-15 Range("E7:AC7").Select Selection.Replace What:="2009年度契約", Replacement:="8.24-8.29", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False Range("E14:AC14").Select Selection.Replace What:="2009年度契約", Replacement:="8.24-8.29", LookAt:=xlPart, _ このマクロの「8.24-8.29」の部分を「シート名取得」にしたいのです。出来ないでしょうか? もしくは BOXを出し任意のものを手で入力するようにコメントを出す様には出来ないでしょうか?