• 締切済み

エクセルマクロでのアラートの非表示の方法について

エクセルマクロでセルの検索を「Find」で行った場合、無ければ「Nothing」が帰ってきますが、その場合に何も処理を行わずに次の処理に移行し、終了してしまうと、マクロが終わった後に「検索条件に一致するデータは見つかりません。…」のアラートが表示してしまいます。検索しても無い場合がOKならアラートは必要ないのですが、どうすればアラートを出さない様にできるのでしょうか?教えて下さい。

みんなの回答

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

気になったので、自分で試したところ、Nothingでも 「検索条件に一致する・・・」 というメッセージは表示されないんですが。 ちなみに、私のはExcel2000です。 私の試したマクロは以下の通りです。(標準モジュールに記述) Public Sub Macro1()   Dim c As Variant   Set c = Worksheets(1).Range("A1:A10").Find("A")   If c Is Nothing Then     '何もしない   Else     c.Activate   End If End Sub 実際のコードはどのようになっているのでしょうか。

kimiokun
質問者

お礼

ご回答ありがとうございます。 実際のコードとは少し異なりますが、大体以下のようなコードです。 Sub Macro1() Dim N As Integer Dim Find_Value As String Dim Match_Value As Variant Dim firstAddress As String For N = 1 To 10 Find_Value = Cells(N, 3).Text Application.DisplayAlerts = False Set Match_Value = ActiveSheet.Columns(4).Find(Find_Value _ , LookIn:=xlValues, LookAt:=xlWhole) If Not Match_Value Is Nothing Then firstAddress = Match_Value.Address Do Cells(Match_Value.Row, 21) = キーワード Cells(Match_Value.Row, 22) = Sheets_Name Set Match_Value = ActiveSheet.Columns(4).FindNext(Match_Value) Loop While Not Match_Value Is Nothing And Match_Value.Address <> firstAddress Cells(1, 1).Select End If Application.DisplayAlerts = True Next N Set Match_Value = Nothing End Sub 「If」分のところの条件を「If Not Match_Value Is Nothing Then」と しているのが原因でしょうか?もしくは「Else」を入れていないのが原因 でしょうか?(読みにくくてすみません。コードが段落ちしません)

kimiokun
質問者

補足

お礼の所に記入した内容の他に、 1、Excel97を使用しています。 2、マクロを流して終了したら、そのマクロのファイルを保存せずに閉じている。   (マクロでの処理は別のファイルに対して行っています) 3、メッセージが表示されるのはマクロを流した1回目のみで、   続けて2回流した場合、2回目には表示されない。 といった内容です。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 ApplicationオブジェクトのDisplayAlertsプロパティを使用するのはどうでしょうか。 Application.DisplayAlerts = False (処理) Application.DisplayAlerts = True こんな感じ。 なお、マクロが終了しても、途中エラーで中断しても、Trueには戻らないので、コードでちゃんとTrueに戻さないといけません。

kimiokun
質問者

お礼

早速のご回答ありがとうございます。 質問にちゃんと書いておけば良かったのですが、ApplicationオブジェクトのDisplayAlertsプロパティを使用しても出てしまうんです使う位置も回答に書いて頂いたように、「Find」の前に「False」にして「Find」の後に「True」を入れているんですが、アラートが出てしまうんです。「True」を記述する位置がおかしいのでしょうか?

関連するQ&A

  • EXCELでこのようなマクロを作りたいです

    EXCELでこのようなマクロを作りたいのですが、 是非作成方法をお教えいただきたく思います。 1.B列を、B1から一番下まで検索 2.ある文字列(完全一致)を発見したとき、そのひとつ上のセル  (B25で発見したら、B24)と同じ内容に置き換える。 3.一番下まで繰り返す。終了条件は、  ・一番下まで行って、検索する値が無くなった時  ・「ある文字列」を発見したとき 以上です。 よろしくお願いいたします。

  • VB6からEXCELマクロの終了を判断する方法を教えてください。

    VB6からEXCELマクロの終了を判断する方法を教えてください。 VB6とEXCEL(VBAも含む)を使って次のような流れの処理を行うソフトを作っています。 そこでどうしてもEXCELマクロの終了をVB6から判断する必要があり、方法を教えて頂けないでしょうか。 1)VB6でEXCELファイルを起動 2)VB6からセルA1に10,A2に20を代入 3)VB6からEXCELファイル内のマクロをコール 4)マクロはA1+A2の計算を行いA3に代入(30) 5)VB6からA3の値を読み込む (実際にはマクロは複雑な処理をします。) 1)~5)の処理を5000回程度行います。 VB6から送られるデータは毎回変わり、EXCELとマクロで計算させたデータを回収してテキストファイルに書き出します。 一通りのプログラムは完成したのですが、計算したデータを見ると10+20が1.99999とか15.51414とかおかしい結果になっています。 もしかしたらマクロの実行が終わっていない段階でVB6がデータを拾ってしまっている??と考え、マクロの終了をVB6で判断してからデータを回収するようにしたいと思っています。 何か方法はないでしょうか。(または他に間違っているところがあるのでしょうか。) 長文ですみません。よろしくご教示ねがいます。

  • EXCEL VBAでマクロの最後でFind関数のLookAtの設定を変更したい。

    EXCEL VBAでマクロの最後でFind関数のLookAtの設定を変更したい。 EXCELの検索機能において、通常は、オプションの「セル内容が完全に同一であるものを検索する」のチェックを外して使用しています。 あるマクロにおいて、Find関数のLookAtの値を「xlWhole」(完全一致)で使用しています。 この「LookAt」の値は、通常の手動での検索にも設定が引き継がれるため、このマクロの後に、検索機能を使用するとオプションの「セル内容が完全に同一であるものを検索する」はチェックされた状態になっています。 つまり、通常時はあいまい検索、マクロ時は完全一致検索を行いたいと思っており、マクロの最後で、あいまい検索に設定を変更しておきたいのですが、そういった指定は可能なのでしょうか。 ごり押しですが、最後に、あいまい検索で適当な検索を行っておくという事も考えましたが、もう少しスマートな方法があるのか、ご存知の方がいらっしゃればと思い質問させていただきました。 よろしくお願いします。

  • Exel VBA:マクロからの脱出!?

    以前にも質問させていただきました。 その後、「ユーザーフォーム」を使ってマクロが一通り 完成しました。ありがとうございました。 ユーザーフォームにデータを入力した場合のマクロ進行 はOKだったんですが、データ入力時に「キャンセル」 を押した場合に、元のマクロ(データを処理するほう) へ戻り「型が一致しない」とエラーが出てしまいます。 そこで、ユーザーフォームでキャンセルされた場合に、 マクロ(プライベートマクロ・通常のマクロとも)を 終了してしまいたいんです。 なんとかお知恵を拝借させてください。 エクセルバージョンは、2000です。

  • EXCEL マクロ(2)

    EXCEL マクロ B1セルからF1 B2セルからF2 B3セルからF3 までとに文字"T"のデータであるセルがあります。 (1) その数をカウントして各G1,G2,G3に入れる処理 をどのようにかけばいいですか。

  • Excel97 マクロで検索

    Excel97を使っています。 「マクロの記録」でセルの値を検索して記録し、そのまま「マクロの実行」で実行するとうまくいくのに、コマンドボタンから呼び出すと、「実行時エラー1004:RangeクラスのFindプロパティを取得できません」と出ます。ヘルプにもないようで困っています。 どのようにしたらよいのでしょうか? 教えてください

  • エクセル(2013)の繰り返し処理マクロについて

    以下のような処理をマクロで行いたいのですが、どなたかお詳しい方教えて頂けませんでしょうか。 1.[シート(1)]A1を検索値にする 2.[シート(2)]のB3を範囲指定する。 3.一致しない場合→次行を検索 4.一致する場合、C3をコピーし、[シート(2)]のC10に値で貼り付ける。 5.[シート(2)]のB4を範囲指定する。 6.一致しない場合→次行を検索 7.一致する場合、C4をコピーし、[シート(2)]のC11に値で貼り付ける。 以下B列が空白セルになるまで繰り返し お手数ですが、ご教授頂けますようお願い致します。

  • エクセルマクロ・Cells.Find のエラー

      VBA初心者です。 ファイルA の C列 に入力されているデータが ファイルB に含まれているかどうか検索するマクロを Cells.Find を使って作ろうとしています。 データがファイルBに存在する場合は問題ありませんが存在 していない場合エラーが出て止まってしまいます。 ヘルプを見ると「セルが見つからなかった場合は、Nothingを返します」 と書かれていますが、どうもNothingとは返ってきません。 このエラーを回避する方法を教えてください。 例えばこんなマクロを組みました。  For tate = 0 To 19    Windows("ファイルA.xls").Activate    Range("C1").Offset(tate, 0).Select    データ = Range("C1").Offset(tate, 0)    Windows("ファイルB.xls").Activate    Cells.Find(データ, MatchCase:=False).Activate  Next tate 例えば最後の2行を    結果 = Cells.Find(What:=ISISDate, MatchCase:=False).Activate      MsgBox (結果)  Next tate とするとデータが含まれている場合は「True」と返ってきますが、 含まれていない場合は MsgBox が表示される前にエラーとなってしまいます。 とりあえずこのエラーを回避する方法をご存知でしたらお教えください。  

  • エクセル マクロ 検索

    お世話になります。 範囲がA2からK221までの表があります。 検索して検索されたセルの左のセルを表示するマクロを組みたいのですが、検索する文字(数値)はE1に、検索結果はK1に表示するようにするにはどのようにしたらいいでしょうか? Sub FIND_DATA1() ' FIND_DATA1 Macro ' マクロ記録日 : 2006/9/1 ユーザー名 : ' Cells.Find(What:=Range("E1").Value, After:=ActiveCell, lookAt:=xlWhole).Activate End Sub Sub Data_Find3() Dim 対象セル As Range Dim 最初のセル番地 As String Dim 検索件数 As Long Cells.Interior.ColorIndex = xlNone If Range("E1").Value = "" Then Exit Sub End If Set 対象セル = Cells.Find(What:=Range("E1").Value, After:=ActiveCell, lookAt:=xlWhole) 最初のセル番地 = 対象セル.Address Do 対象セル.Interior.ColorIndex = 37 検索件数 = 検索件数 + 1 Set 対象セル = Cells.FindNext(対象セル) Loop While 対象セル.Address <> 最初のセル番地 MsgBox "検索件数は" & 検索件数 - 1 & " 件です" End Sub 本を見たり調べたりでここまでできたんですがこれだと検索件数、検索結果が色付きになるだけで使い勝手がいまいちです。 よろしくお願いします。

  • EXCELのマクロで忠告文について。

    EXCELのユーザーフォームについて質問です。 マクロで処理時間が少し長いコードがあります。 ユーザーフォームでデータを入力してCommandButton1を押すとそのマクロが動く仕組みです。 処理時間が少し長いので 「ただいま、処理中です。 しばらくお待ちください」 といった忠告文を出したいです。 msgboxのようにOKボタンを押さずに、処理が終了したら忠告文が自動で消えるようにしたいです。 どのようにすればできますか? よろしくお願いします。