• ベストアンサー

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

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

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

  • ベストアンサー
回答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