- 締切済み
エクセルマクロでのアラートの非表示の方法について
エクセルマクロでセルの検索を「Find」で行った場合、無ければ「Nothing」が帰ってきますが、その場合に何も処理を行わずに次の処理に移行し、終了してしまうと、マクロが終わった後に「検索条件に一致するデータは見つかりません。…」のアラートが表示してしまいます。検索しても無い場合がOKならアラートは必要ないのですが、どうすればアラートを出さない様にできるのでしょうか?教えて下さい。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- maruru01
- ベストアンサー率51% (1179/2272)
気になったので、自分で試したところ、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 実際のコードはどのようになっているのでしょうか。
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 ApplicationオブジェクトのDisplayAlertsプロパティを使用するのはどうでしょうか。 Application.DisplayAlerts = False (処理) Application.DisplayAlerts = True こんな感じ。 なお、マクロが終了しても、途中エラーで中断しても、Trueには戻らないので、コードでちゃんとTrueに戻さないといけません。
お礼
早速のご回答ありがとうございます。 質問にちゃんと書いておけば良かったのですが、ApplicationオブジェクトのDisplayAlertsプロパティを使用しても出てしまうんです使う位置も回答に書いて頂いたように、「Find」の前に「False」にして「Find」の後に「True」を入れているんですが、アラートが出てしまうんです。「True」を記述する位置がおかしいのでしょうか?
お礼
ご回答ありがとうございます。 実際のコードとは少し異なりますが、大体以下のようなコードです。 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」を入れていないのが原因 でしょうか?(読みにくくてすみません。コードが段落ちしません)
補足
お礼の所に記入した内容の他に、 1、Excel97を使用しています。 2、マクロを流して終了したら、そのマクロのファイルを保存せずに閉じている。 (マクロでの処理は別のファイルに対して行っています) 3、メッセージが表示されるのはマクロを流した1回目のみで、 続けて2回流した場合、2回目には表示されない。 といった内容です。