Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


38449 / 76732 ←次へ | 前へ→

【43419】Re:抽出期間内の日付がない場合の処理に...
回答  ハチ  - 06/10/13(金) 19:36 -

引用なし
パスワード
   ▼あお さん:

なるべくコードをイジらないようにするなら・・・

>マクロはこんな感じで作ってます。
>抽出期間内のデータがない場合のマクロが
>分からなく困ってます。
>
>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
2 hits

【43412】抽出期間内の日付がない場合の処理について あお 06/10/13(金) 15:46 質問
【43416】Re:抽出期間内の日付がない場合の処理につ... ハチ 06/10/13(金) 18:00 発言
【43418】Re:抽出期間内の日付がない場合の処理に... あお 06/10/13(金) 18:38 発言
【43419】Re:抽出期間内の日付がない場合の処理に... ハチ 06/10/13(金) 19:36 回答

38449 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free