Excel VBA質問箱 IV

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

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


6743 / 13644 ツリー ←次へ | 前へ→

【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 回答[未読]

【43412】抽出期間内の日付がない場合の処理につい...
質問  あお  - 06/10/13(金) 15:46 -

引用なし
パスワード
   下記のように、1つのファイルに3シートくらいに渡って
データがあります。
抽出期間が10/11〜10/13まで、
この期間のデータはないのですが、
そのような場合のマクロをどのようにすれば良いのか
さっぱりわかりません。
どなたか教えていただけませんか?

抽出期間内のデータがある場合には、
フィルタリングをかけて抽出しています。
(例)
10/10  いいいいいい、      あああ
     ううううう。


  A    B            C
1 10/2   あああああ、      ああ
2      あああ。        
3 10/9   いいいいいいい、いい。 えうぇ
4 10/10  いいいいいい、     あああ
5      ううううう。      
6 10/14  えええええええええ。  あああ
7 10/15  えええええええええ。  あああ
8      おおおおおお。     
9 10/17  ああああ。       ああああ

【43416】Re:抽出期間内の日付がない場合の処理に...
発言  ハチ  - 06/10/13(金) 18:00 -

引用なし
パスワード
   ▼あお さん:
>下記のように、1つのファイルに3シートくらいに渡って
>データがあります。
>抽出期間が10/11〜10/13まで、
>この期間のデータはないのですが、
>そのような場合のマクロをどのようにすれば良いのか
>さっぱりわかりません。
>どなたか教えていただけませんか?
>
>抽出期間内のデータがある場合には、
>フィルタリングをかけて抽出しています。

フィルタリングというのは、
オートフィルタですか?フィルタオプションですか?

抽出しているマクロを提示したほうがわかりやすいと思います。

【43418】Re:抽出期間内の日付がない場合の処理に...
発言  あお  - 06/10/13(金) 18:38 -

引用なし
パスワード
   ハチさんありがとうございます。

フィルタリングはオートフィルタにて行っています。

マクロはこんな感じで作ってます。
抽出期間内のデータがない場合のマクロが
分からなく困ってます。

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:="="
  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

【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

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