プロが教えるわが家の防犯対策術!

いつもお世話になっています。
エクセルのVBAでフォームをつくり、フォーム上のテキストボックスに入力した文字でデータ変換をしようと考えています。たとえば「東京」を「東京都」という具合です。
メニューから実行すれば良いだけの話なのですが
業務上、より作業を簡素化したいためです。
下記のようにマクロを記述しましたが、うまく動作しないのでどうしてでしょうか?よろしくお願いします。


Sub 文字を置き換える()
Dim mae As String
Dim ato As String
Columns("H:H").Select
mae = UserForm1.TextBox2.Value
ato = UserForm1.TextBox3.Value

Selection.Replace What:=mae, Replacement:=ato, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub

A 回答 (3件)

こんにちは。

KenKen_SP です。

コード自体は問題ないと思いますので、コードの呼び出し方法かと
思います。

ユーザーフォームにご提示のコードを書いた場合は、例えば、ボタン
を追加して、そのボタンをダブルクリックするとコードウインドウが
開きます。そこに以下のようなコードを追加します。

Private Sub CommandButton1_Click()
  Call 文字を置き換える
End Sub

のようにします。これは、CommandButton1 という名のボタンを押す
とご提示のプログラム「文字を置き換える」を呼び出します(実行)。

CommandButton1 の数字 1 は配置したボタン名になりますので、この
例示のとおりとは限りません。
    • good
    • 0
この回答へのお礼

お礼が遅くなって申し訳ありません。おかげさまでうまく動作しました。ありがとうございました。

お礼日時:2005/11/02 10:38

こんにちは



えーと、どうしてマクロでやりたいのかがよくわかりません。
都度検索文字列を置換文字列を入力するなら、手間数としては下記の方法でもあまり変わらないと思います。

その1:ctrl+H
その2:ユーザ設定で、ツールバーに「置換」を追加
    • good
    • 4

こんばんは。



ユーザーフォームから行うのでしたら、CommmandButton のクリックイベントに、以下のようにコード自体を入れてしまってもよいでしょうね。それから、できれば、シート名を入れたほうがよいですね。

Private Sub CommandButton1_Click()
Dim mae As String
Dim ato As String
mae = UserForm1.TextBox2.Value
ato = UserForm1.TextBox3.Value
If mae = "" Then Exit Sub
Worksheets("Sheet1").Columns("H:H").Replace _
      What:=mae, _
      Replacement:=ato, _
      LookAt:=xlPart, _
      SearchOrder:=xlByColumns
      
End Sub

mae=""だけにしているのは、検索値はなくてはなりませんが、置換値はなくて、削除することもあるからです。
    • good
    • 0
この回答へのお礼

お礼が遅くなって申し訳ありません。おかげさまでうまく動作しました。ありがとうございました。

お礼日時:2005/11/02 10:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!