• ベストアンサー

VBA 置換文字がみつからない時

お世話になります。 VBAの文字列の置換で教えてください。 replaceを使用したときに、置換対象の文字がなかったら、 「元の値をそのまま返す」という形なのですが、 置換対象がなかったときは、その旨わかるようにしたいのですが、 方法あるでしょうか? ※毎回replaceの前でfind関数であるかないか、調べないと いけないのでしょうか? 何卒宜しくお願いします。

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

  • ベストアンサー
  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.2

こんいちは。 > 置換対象がなかったときは、その旨わかるようにしたいのですが、 > 方法あるでしょうか? > ※毎回replaceの前でfind関数であるかないか、調べないと > いけないのでしょうか? 何れにしても、条件分岐は必要な訳ですから、 なるべく簡単に片付けるとして、Instr()関数を使うのが標準的です。 また、見つからないワードを置換するのも無駄ではあるので、 特に"置換対象がなかったとき"を判別する必要がない場合でも、 Replace()関数はなるべくInstr()関数とセットで使うようにすると 効率的です。 Sub Re8335191()   Dim s0 As String   Dim sTgt As String   Dim sRtn As String   s0 = "abc"   sTgt = "a"   If InStr(s0, sTgt) > 0 Then     sRtn = Replace(s0, sTgt, UCase(sTgt))     MsgBox s0 & " → " & sRtn   Else     MsgBox "notfound : " & sTgt   End If   sTgt = "d"   If InStr(s0, sTgt) > 0 Then     sRtn = Replace(s0, sTgt, UCase(sTgt))     MsgBox s0 & " → " & sRtn   Else     MsgBox "notfound : " & sTgt   End If End Sub

その他の回答 (1)

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

>※毎回replaceの前でfind関数であるかないか、調べないといけないのでしょうか? VBAでならFind関数でなく、StrComp関数ですね。 あと変数を使えば比較は前でも後でも出来ます。 問題は、どう知らせるかですね。 例 Dim MAE,ATO As String MAE = Cell(1,1) ATO = Replace(MAE, "A", "B") IF MAE = ATO Then MsgBox("対象文字がありません",VbOkOnly,"置換") Cell(1,1) = ATO

関連するQ&A

  • 置換について

    エクセルで、重要な語句に対して部分的に色付けされた文章が記載されたセルがあるとします。 そのセル内の文字列を、ctrl+FやReplace関数を使って置換をかけた場合、色付けした文字列がすべて黒に変わってしまいます。 置換対象文字列以外は、置換前の状態のまましたいのですが、どなたかその方法についてご存知の方いらっしゃらないでしょうか? ぜひ、ご教授願います。

  • VBA XML の置換方法

    XMLの特定の文字列を書き変えたいのですが その文字の場所を特定して Replace (文字列、対象文字列、置換文字列、検索開始位置)で置換をすると 検索開始位置の前の文字が消えてしまいます 検索開始位置まえの文字はそのままにして、検索開始位置から後の文字列のみを置換する方法はないでしょうか

    • 締切済み
    • XML
  • マクロで書式ごと置換

    マクロで書式ごと置換 いつもお世話になります。 今回は標記の件についてお伺いしたく質問を投稿させていただきました。 現在、[D5:CN93]に配置している文字列データを記号に置換する作業をおこなっています。置換マクロに関してはreplaceを使用し、今のところ問題なく動いています。作業工程としては、上記の範囲にあるデータの一覧を作成し、どのデータをどのような記号に置き換えたいかの一覧を附します。 例)  [A1](置換したい記号)   [B1](置換したい文字列)      ○          イチゴ      ◆          バナナ    [D5:CN93]置換対象の文字列例    イチゴ,バナナ マクロでは置換したい文字列、置換したい記号の値をreplace関数に与えて、上記の範囲にあるセル1つ1つに置換をかけていく、というものです。 今までは、文字列の書式は問題ではなかったのですが(置換後に一括変換)、上のほうから「イチゴを赤い○、バナナを黄色い◆のように、色をつけられないか」といわれました。 置換ウィザードを試してみたのですが、セル全体の文字列の色が変わってしまいうまくいきませんでした。 またreplaceで色情報も置換する方法もわかりません(無いのかもしれませんが)・・・ そこで「色情報を持たせたまま、文字列の一部を置換」する方法を教えてください。 これまでのデータを使用したいので、データは以下のように並んでいます。  [A1](置換したい記号)   [B1](置換したい文字列)     赤色の○         イチゴ     黄色の◆         バナナ    [D5:CN93]置換対象の文字列   イチゴ,バナナ

  • 文字の置換のVBA

    こんばんは。 下記の文字列の置換をマクロ(VBA)で出来ますでしょうか。 今は関数(SUBSTITUTE)を繰り返して処理しているのですが、1度で出来る方法がありましたら教えて下さい。 100 ABC-23d=3,4 → 100ABC23D3.4 (1)スペース削除 (2)小文字を大文字へ (3)"-" "=" など数字とアルファベット以外を削除 (4)","→ "." (カンマをドットへ変換) 宜しくお願いします。

  • テーブルを使った置換

    Access2002 Accessでクエリ実行時に特定の文字列を置換したいと思っています。 今までは置換する文字列が1つだけだったので、replace関数を使って直接置換する文字列を書いていたのですが、置換する文字列が今後増えてきそうなのでテーブルで管理したいと思っています。 置換用テーブル 元 ,置換後 000022,002078 000218,002403 000447,002703 クエリは単純な選択クエリなのですが、上記のようなテーブルを使ってクエリ実行時に文字を置換する方法がわかりません。 よろしくお願いします。

  • EXCEL VBAにて、WORDへ置換

    EXCEL VBAにて、WORD文書への文字列置換を行っております。 文字列の置換自体はできています。 が、 置換文字列に「改行」(vbCRやvbLF)をいれて置換すると、 word側での表示が□になってしまいます。 vbCrだけでもvbLFだけでも、vbCRLFでも□と表示されてしまいました。 chr(13) & chr(10)でも□になりました。 EXCEL VBA にて WORDへ文字列置換する場合に送る、改行コード (たぶん「^p」と予測をつけているのですが)を chr関数等での 表示方法を教えてください。 EXCEL2003 WORD2003 よろしくお願いします。

  • VBAによるBinaryの置換後に先頭の"0"を残す方法

    お世話になります。 題記の件、EXCELのVBAで特定の文字に一致した場合、2進数の値への文字列の置換を行っているのですが、置換後の2進数の数値が先頭の"0"が抜けた状態で置換されてしまい困っております。 どなたか対処方法が判る方いらっしゃいましたらアドバイス宜しくお願い申し上げます。

  • VBA(Excel)でファイル内の文字を置換したいのですが

    いつも拝見させていただいております。 初めて質問させていただきます。 現在VBAに興味を持ち始めて独学で学んでおり、 VBAでテキストファイルの文字を置換できないかと思っております。 事例としては以下のような例を考えています。 ・エクセルマクロ実行時に置換する/したい文字を入力 ・対象ファイルを指定 ・対象ファイル内(テキスト)にて文字を検索し、ヒットしたら置換 まだVBAを熟知していないので、出来るのかどうかもわかりませんが 可能であれば、教えて頂きたいと思います。宜しくお願いします

  • 1文字だけ置換したい

    エクセル2002を使用しています。 「あ」一文字で存在する文字列を 「え」に置換しようと考えています。 しかし表中には「あ」だけでなく「かあか」「けけああ」 といったように「あ」が含まれる文字列が存在します。 これらは置換の対象外としたいのです。 あくまでも「あ」一文字を置換したいのですが…… どのように置換設定すればよいでしょう? ご意見ください。よろしくお願いします

  • VBAでの文字列置換

    表題のとおりですが、過去の質問では良い回答が 見当たりませんでした。 ・やりたいこと ”A”->”001” ”B”->”002” ”C”->”003” ”D”->”004” のようにテキストの置換候補があり(置換、置換対象のテキストは全角、半角さまざまです)、 それをExcelのワークシートに適用したいです。 やり方はどういうやり方でも良いです。ただ置換リストは追加、変更する必要があります。 VBAのreplaceを利用した置換マクロを作成すればよいのでしょうか。 当方、Word用の簡単なVBAマクロの作成経験はありますが、 Excelでは利用したことがありません。 ある程度具体的に御教授いただけると助かります。 よろしくお願いします。

専門家に質問してみよう