プロが教えるわが家の防犯対策術!

いつもお世話になっております。
現在第一条件から第三条件までの入力フォームを作成し、その条件に基づいたオートフィルタを作成中なのですが、
第二条件以下に未入力の場合のオートフィルタができなくて困っています。
これら未入力(空白)でもきちんと抽出できるオートフィルタを作るにはどうしたら良いですか?
以下に私が作成したものを転記いたしますので、どなたかご教示くださいますよう、お願いいたします。

With Worksheets("業種別検索")
myCriteria1 = .Range("a2").Value
myCriteria2 = .Range("b2").Value
     myCriteria3 = .Range("c2").Value
End With


With Worksheets("元データ")
If Worksheets("元データ").AutoFilterMode = False Then
Range("A6:z6").Select
Selection.AutoFilter
Else
Sheets("元データ").Select
Selection.AutoFilter
Range("A6:z6").Select
Selection.AutoFilter
End If
.Range("A1").CurrentRegion.AutoFilter 17, myCriteria1, xlAnd
.Range("A1").CurrentRegion.AutoFilter 18, myCriteria2, xlAnd
.Range("A1").CurrentRegion.AutoFilter 19, myCriteria3, xlAnd
End With

A 回答 (2件)

こんにちは。



こんな考え方でいかがでしょうか?
空白値の場合は、オートフィルタの選択を無視するという方法です。考え方としては、ものすごく単純なんですが、「Criteriaありき」という方法ですと、どうしても、オートフィルタがうまく行かないようですね。

Range("A6:z6").Selectということは、6行目から、という意味だと思います。まだ、なんとか私は、おやりになっていることに付いていっていると思います。

なお、これで、今回のスタイルとしてのマクロは、第三段目になると思います。一応、そういうわけで、プロシージャ名に気を使いました。

'---------------------------------------
Sub オートフィルタ複合選択3()

  Dim myCriteria1 As String
  Dim myCriteria2 As String
  Dim myCriteria3 As String
  
  With Worksheets("業種別検索")
    myCriteria1 = Trim(.Range("a2").Value)
    myCriteria2 = Trim(.Range("b2").Value)
    myCriteria3 = Trim(.Range("c2").Value)
  End With
  
  With Worksheets("元データ")
    .Select
    If .AutoFilterMode Then
      '.ShowAllData 'すべて出す
      .AutoFilterMode = False 'フィルタモード解除
    End If
    With .Range("A6", .Range("A65536").End(xlUp).Offset(, 25))
      If myCriteria1 <> "" Then
        .AutoFilter 17, myCriteria1, xlAnd
      End If
      If myCriteria2 <> "" Then
        .AutoFilter 18, myCriteria2, xlAnd
      End If
      If myCriteria3 <> "" Then
        .AutoFilter 19, myCriteria3, xlAnd
      End If
    End With
  End With
End Sub
    • good
    • 0
この回答へのお礼

で、できました!やった~!
Wendy02さん、いつもありがとうございます!!
これで検索機能は完成です!
ありがとうございました!

お礼日時:2008/03/23 16:02

空白(Empty)ならば、その行の処理をスキップするようネストしてあげればどうですか?

    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。
ほんと素人なもので、そのスキップ処理がわからないんです(泣)。
よろしければご教示ください。

お礼日時:2008/03/23 15:44

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

このQ&Aを見た人はこんなQ&Aも見ています