許せない心理テスト

こんばんわ!
エクセルの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

A 回答 (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
    • good
    • 1
この回答へのお礼

merlionXXさん
ご回答ありがとうございます。
大変参考になりました。
On Error GoTo ついても勉強してみます。

お礼日時:2008/07/05 12:40

>Sheets("DATA").Range("A3").CurrentRegion.AdvancedFilter _


それより上と、ここ以下は何の関係があるの?
関係の無い箇所は省くとか質問には配慮必要
回答者にコードを解読させるのでなく、何をしたいのか、
どういう場合にフィルタで困るのか、質問には文章で説明するぐらいの配慮が必要と思う。
判った人が回答できればよいというものではない。その他の数万人?も読まされる。
    • good
    • 0

ON ERROR GOTO を検索してみてください。



エラー番号で判断する、ということです。
    • good
    • 0

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


おすすめ情報