• ベストアンサー

vba質問 カレントプロシージャの置換

excel2000を利用しています。 添付写真のように、A列(before)とB列(after)に文字があります。 指定する(カレント)プロシージャで、このA列の文字を探し出して、B列の文字に置換したいです。 自分でやろうと思うも、うまくいかず、断念しました。 どのように記述したらよいか、ご教授いただけないでしょうか。 よろしくお願いします。

  • puyopa
  • お礼率87% (459/525)

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

  • ベストアンサー
回答No.2

こんばんは。 返事をつけるのが遅くなってすみません。 残念ながら、ご期待には答えられそうにはありません。ただ、いくつか方法は示しておきます。 >カレントプロシージャ内の記述(sub~end sub )の変更です >ユーザーフォームのテキストボックス(コントロール)名称を多数変更する必要 残念ながら、そのままではVBAでは不可能です。VSTOやVSのプロフェショナル版などをお持ちなら、可能だと思いますが、おそらく一回きりの問題だとしたら、コンパイルまでして作る意味があるかというほど、手間が掛かります。 検索・置換リストが既にあるとしたら、それは、ワークシート上に、コードを貼り付けて置換する方法もありますし、ソースを出力して置換する方法もあります。それを、元の場所に戻せばよいです。 今のところ、ツールが出ているか分かりませんが、ZDnet などでは、有償のはずですから、それだけのためには、あまり考えないほうがよいでしょう。 なお、余談ですが、よくコントロールなどの名称をユニーク(一意)にしている人がいますが、私自身は、TextBox1, Label1 などの名称は、2~3個ならともかく、特別なことがない限りは、デフォルトの名称のままで使うことが多いです。それは、1年後とかに、編集する時に、変えた名称が、返って煩雑だからです。また、日本語は、一切使わないことにしています。ツールの検索で文字化けするからです。

puyopa
質問者

お礼

回答ありがとうございました。 アドバイス頂けたとおりに、ワークシート上にコードを貼り付けて置換いたしました。

その他の回答 (1)

回答No.1

こんばんは。 >自分でやろうと思うも、うまくいかず、断念しました。 どういう風にやったのか、それが出ていないと、質問を丸投げしたように思われます。 それともう一つは、タイトルの「カレントプロシージャの置換」は、カレントプロシージャ内の置換と読めます。VBEditor 内の置換ということですよね。それは、Office のサポートの範囲であるのですが、VBAではありません。 カレントプロシージャという言葉は確かに使いますが、Sub ○○○()~ End Sub の範囲にカーソルがあって、実行が可能なマクロという意味です。本当に、そのような意味なのですか? シート内なら、VBAで可能です。

puyopa
質問者

補足

回答ありがとうございます。説明不測で申し訳ございません。 ユーザーフォームのテキストボックス(コントロール)名称を多数変更する必要があり、それにあわせてプロシージャの記述をまとめて変更できないかという発想での質問でした。 従いまして、カレントプロシージャ内の記述(sub~end sub )の変更です。 私が考えるに、以下の記述でしたが、置換の記述を書くときに「指定するプロシージャの名称」をどのように記載すれば良いか分からずに、質問させていただきました。 良いお知恵をおかしいただければ幸いです。 Sub test() Dim srange As Range Dim trange As Range Dim i As Long For i = 1 To 50 trange = worksheets("sheet1").("A" & i) srange=worksheets("sheet1").("B" & I) 「指定するプロシージャの名称」.Replace What:=trang.value, Replacement:=srange.value, LookAt:=xlPart _ , SearchOrder:=xlByRows, MatchCase:=False, MatchByte:=False If trange.Value = "" Or "0" Then exit sub Else End If Next i End Sub

関連するQ&A

  • VBAのプロシージャのことで

    TEST1のプロシージャ内に使用している readfileという変数の中にテストという文字列を代入し、 文字列が代入された状態で Callによって別のプロシージャを読みにいったとき TEST(変数)に入った文字列ごと持っていくには どの様に記述すればよいかどなたか教えていただけませんでしょうか・・・。。 ----------------------------------------------------------- Sub TEST () Dim readfile As String readfile = "テスト" Call TEST2 End Sub ----------------------------------------------------------- Sub TEST2() readfile ←テストという文字列をTESTプロシージャから持ってきたい End Sub ----------------------------------------------------------- 単純に書いてみたコードですが、この様なことは可能なのでしょうか? すいませんがいただけないでしょうか><;

  • (エクセル)シート別に指定した文字列を検索・置換したい(マクロ使用)

    以下のようにsheet1で指定した文字列をそれぞれのシートで検索・置換するプロシージャを教えてください。 sheet1は処理したいデータを入力するシートとします。 以下のように指定します。 A列はシート名 B列は検索文字 C列は置換文字 A列------B列--C列 sheet2----A----B sheet3----B----A sheet4----C----B よろしくお願いします。

  • プロシージャとトリガー

    Aというテーブルのaカラムが更新されれば、Bテーブルの列の中でAテーブルの列id含む列(複数)のbカラムをFalseからTrueに変更されるような、トリガー と プロシージャを作りたいのです。 考えていたのは、プロシージャは、 CREATE FUNCTION update_edit_b() RETURNS OPAQUE AS ' BEGIN (複数列指定?) NEW.b := 't'; RETURN NEW; END; ' LANGUAGE 'plpgsql'; プロシージャで、Bテーブルの複数列を指定するにはどうしたら良いでしょうか? トリガーは CREATE TRIGGER trgger_a AFTER UPDATE OF a ON Table_a FOR EACH STATEMENT EXECUTE PROCEDURE update_edit_b ; こんな感じでしょうか?

  • ワードの置換

    a12345,b ad3bf3evf3,b a,,#b#,$$,b 上記のように、"a"で始まって",b"で終わる文字列を置換したいのですが。 「検索する文字列」にどのように指定すればいいでしょうか?

  • EXCEL VBA にて置換

    Excel 2004 を利用しております。マクロ機能について勉強中ですが, すぐに実行しなければいけないことがあり,とても困っています。 Sheet1 に 原文 Sheet2 の A列に単語 B列に置換えたい単語 があります。 自動で、A列の単語を原文内で検索し、B列の単語に置換るようにしたい ときの,プロシージャの例を教えて頂けないでしょうか? 無知な質問で申し訳ございません、色々調べたのですが,よく のみこめないのです。お時間のある方,お助け頂けると嬉しいです。

  • Accessでの置換

    Access97を使用しています。 置換のマクロ化って出来ますか。 具体的に言うとボタン一つで 「電話番号」のハイフンを消したいのです。 今はテーブルを開いて編集-置換で検索する文字列に 「-」、置換後の文字列に何も入れずにすべて置換しています。 Excelですと「SUBSTITUTE」という関数が一番近いのですが、 Accessでそれに準ずるものってあるのでしょうか? イベントプロシージャでの記述で教えて いただけると一番助かります。

  • Excel2007VBAのランダム置換ソース

    Excel(エクセル)2007VBAを使って、 「複数ある、同一の置換したい文字・数」 を 「複数の文字・数」 でランダムに置換したいのですが、 VBAソースが分かりません。 たとえば、 【A列】に A1:私は(置換する所)と(置換する所)が得意です。 A2:彼は(置換する所)と(置換する所)と(置換する所)が特技です。 A3:彼女は(置換する所)と(置換する所)と(置換する所)と(置換する所)の選手です。 A4:彼らは(置換する所)と(置換する所)と(置換する所)と(置換する所)と(置換する所)が好きです。 A5:あの人は(置換する所)と(置換する所)と(置換する所)と(置換する所)と(置換する所)と(置換する所)をしたことがありません。 と入力されている時に、 【B列】に B1:拳闘 B2:柔道 B3:野球 B4:籠球 B5:打球 B6:羽球 B7:剣道 B8:卓球 B9:水泳 B10:避球 と入力したとします。 そして、コマンドボタンを押すと 【A列】にあるすべての 「(置換する所)」 を、 【B列】にある「拳闘」「柔道」「野球」「籠球」「打球」「羽球」「剣道」「卓球」「水泳」「避球」のどれかで必ず置換されるようにします(【ランダムで置換】されるようにしたいです)。 ※置換の条件として、一つのセル内で同じ文字が重複しないようにしたいです。 (私は拳闘と拳闘が得意です。)     ↑   ↑ 同じ文字が2つ以上ある置換は失敗です。 --------------------------------- 置換の成功例 (重複なしの置換) ◆置換前の【A列】A5 あの人は(置換する所)と(置換する所)と(置換する所)と(置換する所)と(置換する所)と(置換する所)をしたことがありません。       ↓↓↓ ◆置換後の【A列】A5 あの人は打球と柔道と水泳と剣道と避球と拳闘をしたことがありません。 --------------------------------- これが未完成のVBAソースです。 ↓↓↓ Sub test_Click() For Each CellA In Range("A1:A5").Cells Rnd1 = Int(Rnd() * 10) + 1 Rnd2 = Int(Rnd() * 9) + 1 Rnd3 = Int(Rnd() * 8) + 1 Rnd4 = Int(Rnd() * 7) + 1 Rnd5 = Int(Rnd() * 6) + 1 Rnd6 = Int(Rnd() * 5) + 1 If Rnd2 = Rnd1 Then Rnd2 = Rnd2 + 1 If Rnd3 = Rnd2 Then Rnd3 = Rnd3 + 1 If Rnd4 = Rnd3 Then Rnd4 = Rnd4 + 1 If Rnd5 = Rnd4 Then Rnd5 = Rnd5 + 1 If Rnd6 = Rnd5 Then Rnd6 = Rnd6 + 1 CellA.Value = Replace(CellA, "(置換する所)", Cells(Rnd1, 2), , 1) CellA.Value = Replace(CellA, "(置換する所)", Cells(Rnd2, 2), , 1) CellA.Value = Replace(CellA, "(置換する所)", Cells(Rnd3, 2), , 1) CellA.Value = Replace(CellA, "(置換する所)", Cells(Rnd4, 2), , 1) CellA.Value = Replace(CellA, "(置換する所)", Cells(Rnd5, 2), , 1) CellA.Value = Replace(CellA, "(置換する所)", Cells(Rnd6, 2), , 1) Next End Sub 【補足】 ※コマンドボタンを押すとランダム置換される仕様です。 ※1回限定の置換ではなく、コマンドボタンを押すたびに(何度でも)ランダム置換できるようにしたいです。 ※上記の【A列】【B列】の文字はあくまで例です。実際は、【A列】【B列】ともに自由に文字を変更できる応用の利く仕様にしたいです(Excelの【A列】【B列】に、文字を直接入力して変更するという意味です)。 ※上記の【A列】が5行、【B列】が10行というのもあくまで例です。実際は、【A列】【B列】ともに何行にでも対応できる仕様にしたいです(具体的には【A列】【B列】ともに、10000行くらいまで対応できるのが理想です)。 長くなりましたが、ここまでの条件を満たすVBAソースが知りたいです。 どうかよろしくおねがいいたします。

  • こんな文字列置換ツールもしくは置換法を探しています。

    こんな文字列置換ツールもしくは置換法を探しています。 共通した文字列「文字列A」を含むHTMLファイルが3つあります。 ファイル名は簡単に「1」、「2」、「3」とします。 この3個のファイルの「文字列A」を 置換候補(たとえば「文字列あ」、「文字列い」、「文字列う」)を指定し、 一括で置換できるツールもしくは方法をご存じの方はお教えいただけないでしょうか? ツールの場合、置換候補をCSVファイルなどで一気に指定できればなお良しです。 よろしくお願いします。

  • ◆文字列内の複数置換

    いつもお世話になっています。 置換についてご教授下さい。 文字列($str)を置換して$afterのように変換させたいです。 配列($patterns)で置換のパターンは持っています。 $str = "あF03いうえF02おF01"; $patterns = array("F01" => "A", "F02" => "B", "F03" => "C"); $after = "あCいうえBおA"; 宜しくお願い致します。

    • 締切済み
    • PHP
  • エクセルの置換について

    セルに次のような数式が入っているときに数式の部分だけ置換する方法がありましたらご指導お願いします。 [B1] =SUM(A1+A2) →置換後 =A1+A2 [B2] =SUM(A10+A20) →置換後 =A10+A20 [B3] =SUM(A100+A200) →置換後 =A100+A200 置換する方法は「編集」-「置換」で 検索する文字列と置換後の文字列が分かりません。 SUM(で置換をかけると数式エラーで置換が出来ず SUM(*)で置換をかけると当然ですが全て消えます。 お手数ですが宜しくお願致します。

専門家に質問してみよう