- ベストアンサー
VBAでエラー時にメッセージを表示したい
こんばんわ! エクセルのVBAについて質問です。 以下のように組み込みDATAシートからフィルターをかけて抽出シートへ結果を表示するようになっていますが、DATAシートにデーターがない状態でするとエラーになりますがその際にDATAシートにデーターが入っていませんとメッセージボックスが出る様にするにはどうすればいいでしょうか? まだまだ勉強中の身ですので教えて頂ければ有難いです。 お手数ですが宜しくお願いします。 Sub 抽出() Application.ScreenUpdating = False Sheets("抽出").Activate Cells.Clear Sheets("抽出").Range("A1").Value = Sheets("DATA").Range("A2").Value Sheets("抽出").Range("B1").Value = Sheets("DATA").Range("B2").Value Sheets("抽出").Range("C1").Value = Sheets("DATA").Range("C2").Value Sheets("抽出").Range("D1").Value = Sheets("DATA").Range("D2").Value Sheets("DATA").Range("A3").CurrentRegion.AdvancedFilter _ Action:=xlFilterCopy, _ CriteriaRange:=Sheets("検索").Range("A1:D2"), _ CopyToRange:=Sheets("抽出").Range("A1"), _ Unique:=False Sheets("抽出").Columns("A:D").AutoFit Application.ScreenUpdating = True End Sub
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 Sub 抽出() Application.ScreenUpdating = False Sheets("抽出").Activate Cells.Clear Sheets("抽出").Range("A1").Value = Sheets("DATA").Range("A2").Value Sheets("抽出").Range("B1").Value = Sheets("DATA").Range("B2").Value Sheets("抽出").Range("C1").Value = Sheets("DATA").Range("C2").Value Sheets("抽出").Range("D1").Value = Sheets("DATA").Range("D2").Value On Error GoTo MSG Sheets("DATA").Range("A3").CurrentRegion.AdvancedFilter _ Action:=xlFilterCopy, _ CriteriaRange:=Sheets("検索").Range("A1:D2"), _ CopyToRange:=Sheets("抽出").Range("A1"), _ Unique:=False Sheets("抽出").Columns("A:D").AutoFit Application.ScreenUpdating = True Exit Sub MSG: MsgBox "DATAシートにデーターがないみたい!", vbCritical Application.ScreenUpdating = True End Sub
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
>Sheets("DATA").Range("A3").CurrentRegion.AdvancedFilter _ それより上と、ここ以下は何の関係があるの? 関係の無い箇所は省くとか質問には配慮必要 回答者にコードを解読させるのでなく、何をしたいのか、 どういう場合にフィルタで困るのか、質問には文章で説明するぐらいの配慮が必要と思う。 判った人が回答できればよいというものではない。その他の数万人?も読まされる。
- bin-chan
- ベストアンサー率33% (1403/4213)
ON ERROR GOTO を検索してみてください。 エラー番号で判断する、ということです。
お礼
merlionXXさん ご回答ありがとうございます。 大変参考になりました。 On Error GoTo ついても勉強してみます。