エクセルでエンター検索と削除のマクロが動かない

このQ&Aのポイント
  • エクセルのマクロで住所録の入っているシートから宛名と概要の内容を検索し、結果を削除するマクロを作成しましたが、マクロが動かない状態です。
  • マクロを使用するために、宛名用セル(C3)と概要用セル(D3)に検索ワードを入力し、ボタンをクリックして「検索」と「削除」のマクロを実行します。
  • チェンジイベントを使ってマクロを実行するため、サイトの記載を参考にしながら試していますが、うまく動かすことができません。エクセル初心者で進めず困っています。
回答を見る
  • ベストアンサー

エクセル エンター検索 delでクリア

エクセルのマクロで住所録の入っているシートから宛名、概要のはいっている2列からフィルターオプションを使って検索のマクロと検索結果を削除するマクロを作りました 検索用のワードを入れるセルは 宛名用C3、概要用D3 に作っており、そこにワードを入力後にマクロを割り当てたボタンを押して「検索」、「クリア」のマクロを実行させています。 このマクロを検索したいワードをC3またはD3に入力し確定することにより「検索」マクロを実行させ、入力したワードをデリートすることで「クリア」マクロを実行させたいと考えてます 色々な質問サイトを検索して、シートのチェンジをするものを書き込んで試しているのですがマクロが動いてくれません 検索だけをやるためにサイトに載っていたチェンジイベントの書き込みを参考にメッセージボックスでは動かせたのですがマクロ名を入れると何も動きません 色々なサイトの記載を試しては消し、試しては消すを繰り返しています エクセル初心者でサイトのかじり読みでは先に進まなくなりましたので教えて下さい

  • Spits
  • お礼率33% (1/3)

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1606/2443)
回答No.3

マクロの検索でC3とD3を書き換えてるので都度マクロの検索が実行され続けている状態ですね。 Application.EnableEvents = False でイベント処理を中止して処理が終わった時点で Application.EnableEvents = True でイベント処理を有効に戻します。 処理の途中でエラーになった場合中止のままになりますのでイミディエイトウィンドウで Application.EnableEvents = True を実行してください。 Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False If Not Intersect(Target, Range("C3:D3")) Is Nothing Then If Target.Value = "" Then クリア Else 検索 End If End If Application.EnableEvents = True End Sub

Spits
質問者

お礼

ありがとうございました なんの問題もなく、希望通り動いてくれました また、書き込みに対して早急に回答頂きありがとうございました 奥が深いので、これからもネット検索して自分で色々いじりながら勉強していきます 本当にありがとうございました

その他の回答 (2)

  • kkkkkm
  • ベストアンサー率65% (1606/2443)
回答No.2

> サイトを見ているとmsgbox のところをマクロ名に変えてみれば動くとあり、 > Macro 検索 > Macro "検索" > など入力方法を試したのですが上手くいきません サイトに記載されているコードでMsgBoxと書かれているところをマクロ名に変えれば動きますということですね。マクロ名が検索でしたらそのまま検索と記載すればいかがですか。 マクロ名が検索とクリアでしたら(C3またはD3に入力とあるのでその両方を見てます) たとえば以下のような感じになると思いますが。 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("C3:D3")) Is Nothing Then If Target.Value = "" Then クリア Else 検索 End If End If End Sub

Spits
質問者

補足

早速教えていただいたマクロをワークシートに入力しました 検索セルにワード入力してエンターを押したところマクロは起動しているのですが、あらたな問題が発生しました まずワードを入れエンター押した時に 実行時エラー28 スタック領域が不足しています とでて、ワードを削除すると 実行時エラー13 型が一致しません となります ちなみに検索マクロは Sub 検索() Cells(3,"C").Value = "*" & Cells(3,"C").Value & "*" Cells(3,"D").Value = "*" & Cells(3,"D").Value & "*" Sheets("住所").Range("A12:I10000").AdvancedFilter Action:=xlFilterCopy,CriteriaRange:=Range("C2:D3"),Copy, CopyToRange:=Range("A8:I8"),Unique:=False Range("A9").Select End Sub クリアはフィルターで検索抽出した回答を選択して、罫線を含め全消去するものです エラーは検索ワードを❇︎で囲っているのですが、その❇︎が延々と動いてしまっているようです クリアの方は何が起きているかわかりません 検索のマクロを書き換えないとダメなのですか? なんどもすいませんが教えて下さい

  • kkkkkm
  • ベストアンサー率65% (1606/2443)
回答No.1

どのようなコードなのか不明なので原因がわかりませんが、コードの途中の切れ目となるところ(IFで分岐しているところなどでIFの後とか、実際にマクロが呼ばれているかどうか呼び出すマクロの頭とか、シートチェンジの頭とか)にMsgBoxを入れてどこまで実行されているのか確認してみてはいかがですか。 また、マクロ名をPublic Sub 元のマクロ名()に変更したらどうなるでしょう。

Spits
質問者

補足

すでに色々と試したものは、消してしまい、新たなものを試すと言う方法でやっていたので、msgboxで動いていたものも消してしまい残っていないんです サイトを見ているとmsgbox のところをマクロ名に変えてみれば動くとあり、 Macro 検索 Macro "検索" など入力方法を試したのですが上手くいきません また、どのサイトを見ても、検索セルにワード入力で検索のような書き込みはあっても、削除でクリアマクロが出来るようなものが見当たりません まずこれは不可能なんですか? 出来れば、どのように書き込みをすればいいかを教えて下さい

関連するQ&A

  • エクセルVBA 検索クリア

    こんにちは! なかなか思うようには行かず… ご教示頂けませんでしょうか? エクセルのSheet内の様々なセルに文字や数値が混在しているものがあります。    A  B  C  D  E 1  35  〇  0  3名  30 2  20      0  0名  25 3  25  〇  3   名    5 4  13  〇  1  10名  10 5  20  ×  0   名   6 このような表の中のB5の"×"だけクリアする C1、C2、C5の"0"だけクリアする D3、D5の"名"だけクリアする というように該当文字or数字を完全一致したもののみクリア Sheet内を検索し、終了したら次の条件を検索というように、 複数の条件で行いたいのですが、どのようにすれば良いかがわかりません… 関数でもできるような気がしますが、他にも沢山のファイルがあり、毎回同じように整理をしなければならないので、VBAでできればと考えております。 どなたかお分かりの方、お教え下さいm(__)m よろしくお願いします!

  • EXCEL・・検索ボタンをクリックするとマクロが実行されるようにしたい

    EXCELでSheet1にデータを入力、Sheet2に検索結果抽出フォームを作成してあります。セルにキーワードを入力しマクロの実行でデータの抽出ができるように出来上がっています。 そこで、セルに入力→ツールバーからマクロの実行という作業を検索ボタンを作成し一発で検索ができるようにしたいのです。 キーワードの入力セルはC:3です。 よろしくお願いします。

  • 複数の検索結果をexcelに取り込む方法

    例えば、添付画像のようにexcelのあるシートのA列に検索ワードが書かれていて、それぞれの検索ワードでgoogle検索した結果(タイトル、URL)をexcelに取り込むにはどのようにしたらよいでしょうか? ・検索ワードは100個以内 ・取得するgoogle検索結果は最初の1ページの10件 ・取得する結果はシートを分けず、1枚のシートにまとめる 以上のようなことをしたいです。 少ししたいことと異なりますが、こちらの記事を試しに行ってみました。 しかし、「インデックスが有効範囲でありません」と表示されうまくいきませんでした。 http://yumem.cocolog-nifty.com/excelvba/2012/03/webgoogle-c0f1.html 行った方法 (visualBasicを開き、thisworkbookをダブルクリックーコードを貼り付けーexcelに戻り、マクロを実行) 環境:excel2007 excel初心者のわたしではまったくお手上げなので質問させていただきました。 先に記載したとおりのことをecxelでできないでしょうか?

  • エクセルマクロの構文

    エクセルマクロに関してご教示いただきたく存じます。 下記の手順を1つのマクロで実行したい場合、どのような構文を書けば実現できますでしょうか? 前提: ・エクセル中、シート(1)、シート(2)を準備。 ・シート(1)には毎日1日分のデータを入力(例えば、1行目の経費項目、金額、経費支払者 の3カラムヘッダーの下に、2行目から1日分のレコードを入力していく) ・シート(2)には毎日の日別データを累積していく(例えば、シート(1)に1日目で10レコード、2日目で15レコード、3日目で20レコードの場合、3日目終了時に計45レコードにしたい。1行目の経費項目、金額、経費支払者 の3カラムヘッダーはシート(1)と同様) マクロ実行: ・シート(1)に1日目のデータ入力(10レコード)が終わった段階で、ボタンを押し、下記マクロを実行  (1)シート(1)の10レコード(A2:C11)を、シート(2)のA2:C11にコピー  (2)シート(1)の10レコード(A2:C11)を、削除(データクリア) ・シート(1)に2日目のデータ入力(15レコード)が終わった段階で、上記と同じボタンを押し、下記のマクロを実行  (1)シート(1)の15レコード(A2:C16)を、シート(2)のA12:C26にコピー(シート(2)において1日目のデータの次に累積させていく)  (2)シート(1)の15レコード(A2:C16)を、削除(データクリア) ・シート(1)に3日目のデータ入力(20レコード)が終わった段階で、上記と同じボタンを押し、下記のマクロを実行  (1)シート(1)の20レコード(A2:C21)を、シート(2)のA27:C46にコピー(シート(2)において1日目のデータの次に累積させていく)  (2)シート(1)の20レコード(A2:C21)を、削除(データクリア) ・4日目以降、同じボタンでマクロを実行する度に、シート(1)のデータがシート(2)の47行目以降、空白なく追加されていく 以上、皆様のお知恵をお貸しください。

  • エクセルでの検索について

    初めて質問させていただきます。 エクセルシートに1万個程度の番号が 縦(行)に並んでいます。なお、番号はそれぞれ異なります。 あるフォームに日付と10個の異なる番号を入力すると、 エクセルシートから合致する番号を検索し、 エクセルシートの一行目に日付が自動的に入力され、 その行を色塗りしたいと考えております。 これをVBA(マクロ)にて作成したいのですが、 初心者なのでどのようにやればよい分かりません。 どうか教えていただけないでしょうか。 よろしくお願いします。

  • 「エクセルでのデータ検索」について

    「エクセルでのデータ検索」について 基本的な質問ですいません。 エクセルで、以下のようなことをしたいのですが・・・ 【シートA】   A  B  C  D E 1   ○ △ □ ◇ 2 あ ※ ※ ※ ※ 3 い ※ ※ ※ ※ 4 う ※ ※ ※ ※ (※は任意の数値) このとき、【シートB】に以下のように「◇」「う」と入力すると “B2”欄に【シートA】の“E4”(=「◇」と「う」の交差する位置) の値が出るようにしたいのです。  【シートB】   A  B  C  D E 1   ◇ 2 う 3 4   ちなみに【シートB】に入力する値はその都度変わるので、VLOOKUPや INDEXではうまくいきませんでした。 実際は長めのマクロで行っている作業の内の一部ですので、「関数」でも 「マクロ」でも、どちらでも対応できます。 ご教示のほど、よろしくお願いいたします。   

  • excelでの検索・抽出

    excelの質問です。 現在データを1つのファイル、8つのシートに入力したものがあります。 この中に指定したワードがあるか検索し、その検索されたワードと同列にある数値を抽出したいと考えています。 ただし、検索するワードは入力されているものと多少異なるため類似となります。 イメージとしてはexcelにある検索みたいなものです。 この検索機能が同時に複数同時に選択でき、かつ同列のワードを出力したいのです。 イメージ 検索シートに ga123456 re552468  と入力 他のシートに  123456  abe-001 e552468  eet-025  があったとする 入力した横に  123456 abe-001 e552468 eet-025 と出力させたいのですが、可能ですか? 解りづらくて申し訳ないのですが、宜しくお願いします

  • エクセルマクロで検索

    エクセル初心者です。 エクセルで表を作ったのですがその中の計算式で月が変わるたびに参照するワークシートが変わるのでマクロの検索をつかいたいと考えています。 表の横に検索するワークシート名と置き換えするワークシート名をいれるセルをつくりマクロを組んで実行すると置き換えが完了するというようなマクロはできませんか?セル自体を検索置き換えはできるのですがセルの中の文字を指定の仕方がわかりません。 説明がヘタなのでわかりにくいかと思いますがよろしくおねがいします。

  • エクセルで絞込み検索をしたいのですが。

    エクセルで絞込み検索ができないものかと頑張っているのですが知識が足りずできません。 具体的にどういった動作をさせたいかというと、画像を参照していただき、、 ”お客様登録シート”側にそれぞれ情報を登録して、そのデータを”入力シート”側の赤く塗りつぶしたセルそれぞれに検索結果を表示させたいのです。 黄色く塗りつぶしたセルに検索ワードを入力して検索。 登録年月日、又はフレームNo、もしくはその両方に該当する行の情報を出したい、ということです。 そのような、絞込み検索かつ指定した複数のセルにそれぞれの結果を表示させることは可能なのでしょうか? できれば関数でしたいのですが、マクロでないとできないということであればその方法を教えていただきたいです。 関数は少々かじっている程度。 マクロについてはほぼ初心者です。 文才もなく伝わりにくい説明かと思いますが、わかりやすいご回答をよろしくお願いします。

  • エクセルのマクロで入力文字確定(Enter)したら印刷開始し入力文字を

    エクセルのマクロで入力文字確定(Enter)したら印刷開始し入力文字をDeleteする。 エクセルで自分が作成したファイルを開きます。 これにはマクロが入っていて、ファイルを開くと セルのD4がアクティブになるようにして有ります。 (カーソルがD4の所に行って点滅で文字入力待ちの状態) シート保護をしてあり、セルD4だけがロックをはずしてあるので セルD4にしか入力は出来ません。 文字入力をすると当然D4のセルに入力がされるのですが 入力後その文字を確定する為にEnterキーを押します。 そうしたらそのシートの印刷がされる(1部です)ようにで来ますか。 そして印刷終了後、セルD4の文字はDeleteされて またアクティブ(カーソルがD4の所に行って点滅)にして 次の入力を待ちたいです。 (文字入力→Enterの瞬間印刷と同時に文字入力が消えるので  入力者は入力確定を見れなくなりますが → 2秒後にDeleteとか出来ますか?  または、Enterキーを押すと画面に「印刷中です」と表示したあと  セルD4をDeleteとか。)  現在は、 表示-ツールバー-フォームから作成したボタンにマクロを登録してあります。 セルD4に文字を入力しEnterキーで確定後、このボタンを押すと印刷が実行され セルD4の文字がDeleteされてアクティブ(文字入力待ち状態)になります。 このボタンを押すのを省きたいです。 よろしくお願いします。

専門家に質問してみよう