| 
    
     |  | ▼あお さん: 
 なるべくコードをイジらないようにするなら・・・
 
 >マクロはこんな感じで作ってます。
 >抽出期間内のデータがない場合のマクロが
 >分からなく困ってます。
 >
 >Sub ボタン1_Click()
 >
 >  Dim strdate1 As String
 >  Dim strdate2 As String
 >  Dim strjouken1 As String
 >  Dim strjouken2 As String
 >
 >  strdate1 = Range("B6").Value
 >  strdate2 = Range("D6").Value
 >  strjouken1 = ">=" & strdate1
 >  strjouken2 = "<=" & strdate2
 >
 >  Workbooks.Open Filename:= "D:抽出先ファイル.xls"
 >
 >  Sheets("sheet1").Select
 >  Range("A5").Select
 >  Selection.AutoFilter Field:=15, Criteria1:=strjouken1, Operator:=xlAnd _
 >    , Criteria2:=strjouken2
 >  Selection.AutoFilter Field:=16, Criteria1:="="
 
 ここでデータがあるか判定すればよいのはわかりますか?
 データの範囲がB5:O300で5行目が項目行なら
 すでに使っている.Endを使って・・・
 
 If Range("B301").End(xlUp).Row = 5 Then
 MsgBox "データはありません"
 Exit Sub
 End If
 
 でどうでしょう?
 B列の途中に空白がないのが前提です。
 空白があるなら他の列にしてください。
 B300だと、300行目のみ対象だったときにバグります。
 Range("B" & Rows.Count)とかRange("B65536") のほうが一般的かと。
 
 >  Range("B5:O300").Select
 >  Selection.Copy
 >  Windows("抽出用ファイル.xls").Activate
 >  Sheets("抽出結果出力用").Select
 >  Range("O4").Select
 >  Selection.End(xlDown).Select
 >  'ActiveCell.Offset(1, 0).Select
 >  ActiveCell.Offset(0, -13).Select
 >  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
 >    :=False, Transpose:=False
 >
 >END SUB
 
 |  |