• ベストアンサー

エクセルで指定した文字に自動で置換することは可能ですか??

A1セルに「バナナ」と表示されると下のマクロの記録で作った”置換するマクロ”の「りんご」の部分を「バナナ」に変更し、さらにこの置換マクロを自動実行することはできますか?? Sub Macro1()' Cells.Select Selection.Replace What:="名前(1)", Replacement:="りんご", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Range("A1").Select End Sub このマクロの記録でなくてもいいんですが、あるセルに置換したい文字が表示された時点でシート内の置換が実行されるようにしたいんですけど・・・・・。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.3

こう言う事? A1~E1までの入力値でそれぞれを置換 名前(1)をA1の入力値で置換 名前(2)をB1の入力値で置換 名前(3)をC1の入力値で置換 名前(4)をD1の入力値で置換 名前(5)をE1の入力値で置換 Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("a1:e1")) Is Nothing Then Exit Sub Application.EnableEvents = False Range("A2:CZ1000").Replace What:="名前(" & Target.Column & ")", Replacement:=Target.Value, LookAt:=xlPart Application.EnableEvents = True End Sub 参考まで

otoichihr
質問者

お礼

ありがとうございます!! 思うようにできました。本当に助かりました。

その他の回答 (2)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

回答No1です。 次のようにしてはどうでしょう。 Private Sub Worksheet_Change(ByVal Target As Range) If Target = Range("A1") Then Range("A2:CZ1000").Select Selection.Replace What:="名前(1)", Replacement:=Range("A1").Value, LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False ElseIf Target = Range("B1") Then Range("A2:CZ1000").Select Selection.Replace What:="名前(2)", Replacement:=Range("B1").Value, LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False End If Range("A1").Select End Sub

otoichihr
質問者

補足

たびたびスミマセン・・・・。 やはり空白も置換されてしまうのですが、 処理も(ずっと点滅したままでなかなか進みません・・・。) なにかいい方法はありますか??

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

次のようにすることでA1セルにバナナと入力することで自動的に名前(1)のセルがバナナに変わりますね。 Private Sub Worksheet_Change(ByVal Target As Range) If Target = Range("A1") Then Cells.Select Selection.Replace What:="名前(1)", Replacement:=Range("A1").Value, LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False End If Range("A1").Select End Sub

otoichihr
質問者

補足

 さっそくの回答ありがとうございます。 実は、こんな感じのをA1だけじゃなく、他のセルにも応用しようと 思うのですが、初心者なりに考えてやってみたのですがうまくいきません・・・・・。 空白も置換??してしまうし、処理も遅いのですが、改善策はありますか?? もしよろしければ教えてください。 Private Sub Worksheet_Change(ByVal Target As Range) With Target = Range("A1") Range("A2:CZ1000").Select Selection.Replace What:="名前(1)", Replacement:=Range("A1").Value, LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False End With With Target = Range("B1") Range("A2:CZ1000").Select Selection.Replace What:="名前(2)", Replacement:=Range("B1").Value, LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False End With Range("A1").Select End Sub お手数おかけします・・・。

関連するQ&A

  • Excelマクロ 置換について教えてください。

    A列の,10を,15に置換したいので下記マクロを記録しました。 ほかに,10を,16などにしたい場合もあるため、 入力画面を表示して初期値は,10から,15ですが、ほかを入力した場合は他の値で置換するマクロを教えてください。 Sub Macro1() Columns("A:A").Select Selection.Replace What:=",10", Replacement:=",15", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False End Sub

  • excelのvbaを使って日付を置換したいのです

    こんにちは。いつも質問ばかりですみません。 今、excell の VBAの勉強をしているのですが、たとえば、B列に2004/5/3 とか、2004/5/5とか、5月の日付ばかりはいっていたとして、その2004/5の部分を2004/6に置換したいとします。 それを、マクロでやらせてみて、VBAを見ると Sub Macro9() Cells.Replace What:="2004/5", Replacement:="2004/6", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False End Sub のようになるのですが、このプロシージャーを実行しても、うまく置換できません。 どのように記述したら、できるのか、教えていただけるとうれしいです。 よろしくお願いいたします。

  • エクセル2003で特殊文字の置換方法

    エクセル2003、XPを使用しています。 エクセルのマクロで置換をしているのですが、 置換対象がCHAR(160)です。 セル上に上のを打ち込むと、実際は違いますが半角スペースに見えます。 特殊文字であっているのでしょうか。 それで、この文字を消したいと思い、以下の通りマクロで記述しているのですが、成功しません おわかりになる方いらしたらよろしくお願いします。 Cells.Replace What:=Chr(160), Replacement:="", LookAt:=xlPart, SearchOrder:= _ xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

  • 置換(検索場所に「ブック」を指定した)

    vbaでわからないので教えてください。 手作業なら可能ですが 何回も行なうのでマクロを組みたいのですが Sub 置換() Cells.Replace What:="スッキリ", Replacement:="すっきり", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False End Sub のコードのどこに「検索場所」が書かれているのでしょか? 前回、シート単位で置換した後、上記のコードを実行すると、 またシート単位での置換になってしまいます。 検索場所を「ブック」にするコードを教えてください!ご教授よろしくお願い致します。

  • エクセルでマクロを使用しての置換

    マクロ初心者です。 データを変換するシステムをマクロで作成していますが、 自分のPCではちゃんと実行できるのに、お客さんのPCで実行するとエラーが出てしまいます。 エラーが出る部分は、どうも置換するところらしく、 Selection.Replace What:="<BR>", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False ここが黄色く表示されるそうです。 どこを直せばよいですか?

  • エクセルのマクロ 大量の置換の記述を簡略化

    Cells.Select Selection.Replace What:="東京", Replacement:="東京都", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False このような置換のマクロが何十個とあって 置換前の語句と置換後の語句ごとに すべて記述していますが 「置換の記述そのものはまったく同じなので  その中に語句を順番に入れ込んでいく」 という風な記述はできるものでしょうか? もし方法があるならば御教授願いたいです 宜しくお願い致します

  • エクセルの置換の検索場所に「ブック」を指定し置換

    エクセルの置換の検索場所に「ブック」を指定し置換するには? 過去ログを見たのですが http://okwave.jp/qa/q5268557.html シートをループするしかないのでしょうか? Sub Macro2() Cells.Replace What:="aaaa", Replacement:="zzz", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False End Sub のように、シート全体にするかブック全体にするかのプロパティは存在しないのでしょうか?

  • VBAで実行時エラー '1004'の解決方法

    VBA初心者です。 文字列を置換しようと思い、マクロを記録したところ下記ソースになりました。 Sub Macro1() Columns("D:D").Select Selection.Replace What:="エリア:", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False End Sub このマクロを単体で動かすと問題なく動作するのですが、他シートにおいてあるボタンに登録して一番最初に実行すると「実行時エラー '1004'」が出てしまいます。 ネットで色々調べましたが、解決方法が分かりません。 宜しくお願い致します。

  • データの置換 エクセルの操作とVBAマクロ…???

    A列に 17:00 と表示されているセルを 16:45 に 置換したいです。 普通にエクセルの操作(編集からダイアログボックスを表示して)行うと普通に実行されるのですが、その操作を記録したマクロを実行しても何も起こらないのです。(エラーも出ません) VBAには↓のとおり記録されました。 Columns("A:A").Select Selection.Replace What:="17:00", Replacement:="16:45", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False 実は、17:00 と表示されているセルに入力されているデータは、17:00:00 であり、ユーザー定義の書式設定で h:mm の形式で表示されています。 元データの書式設定を 17:00:00 (時刻)に変えてもやはり同様で、エクセル操作ではうまくいきますがマクロだと何も起こりません。 試しに元データの書式設定を標準(シリアル値)に変えてやってみるとマクロでも置換されましたが、実際の業務では大変不便そうです。 マクロを実行する時にはユーザー定義や時刻の書式は認識されないのでしょうか? それとも書式に原因を求めるのが間違ってるのでしょうか?

  • SearchFormatやReplaceForma

    エクセルでマクロの記録をしたら Sub Sample() Cells.Replace _ What:="a", _ Replacement:="b", _ LookAt:=xlPart, _ SearchOrder:=xlByRows, _ MatchCase:=False, _ SearchFormat:=False, _ ReplaceFormat:=False End Sub のように取得されて、一つ一つの引数を確認したいのですが、 http://www.moug.net/tech/exvba/0050117.html を見ても SearchFormatやReplaceFormatについての説明がないのですが これらについての説明を見るにはどうすればいいでしょうか? というか、なんでリンク先にはこれらの説明がないのですか? あまり使わないプロパティ?だからでしょうか?

専門家に質問してみよう