• ベストアンサー
  • 困ってます

いつも参考にさせて頂いています。

  • 質問No.6015557
  • 閲覧数41
  • ありがとう数6
  • 回答数2

お礼率 91% (21/23)

いつも参考にさせて頂いています。

誰かご存知の方がいましたら教えて下さい。

Excelで特定の列に特定の文字列があった場合にフィルターをかけて

印刷を行うというものをVBAで作成しています。

具体的には

特定の列(A列)には各行(1行目~100行目)全てに

文字列(東京都や神奈川県などの地名。1つのセルに1つの地名が入力されている)が

入力されており、その中に検索対象の文字列がある場合と無い場合があります。

こういった状況でマクロを実行すると、検索対象の文字列があった場合は

その文字列をフィルターにかけて印刷を実行、文字列が無かった場合は

印刷はしないということを行いたいのです。


下記のところまで作成したのですが

実行すると希望通りの結果が得られません・・・。

どうすればよいのかアドバイスをお願いします。

Sub 印刷()

Dim FoundCell As Variant

With Worksheets("Sheet1")

Set FoundCell = .Range("A1:A100").Find("東京都")

If FoundCell Is Nothing Then

Else

Selection.AutoFilter Field:=1, Criteria1:="東京都"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

End If

Set FoundCell = .Range("A1:A100").Find("神奈川県")

If FoundCell Is Nothing Then

Else

Selection.AutoFilter Field:=1, Criteria1:="神奈川県"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

End If

End With

End sub

宜しくお願いします。

質問者が選んだベストアンサー

  • 回答No.2
  • ベストアンサー
私が試験してみた限りは、両方ちゃんと出ましたけど。

F8を押しながら、ステップデバック確認してみてはどうでしょうか?

.AutoFilterMode = False
あたりで、フィルター解除になっていないのでは?
お礼コメント
menta2000

お礼率 91% (21/23)

muri123さんのお陰で解決できました。
ありがとうございます。
投稿日時:2010/07/05 11:10

その他の回答 (全1件)

  • 回答No.1
参考までに、元のプログラムから変更して見ました。
Sheet1の1行目は空けておいてください。

Sub 印刷()

Dim FoundCell As Object

With Worksheets("Sheet1")
Set FoundCell = .Cells.Find("東京都")

If FoundCell Is Nothing Then
Else
Selection.AutoFilter Field:=1, Criteria1:="東京都"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
End If
.AutoFilterMode = False

Set FoundCell = .Cells.Find("神奈川県")

If FoundCell Is Nothing Then
Else
Selection.AutoFilter Field:=1, Criteria1:="神奈川県"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
End If
.AutoFilterMode = False
End With

End Sub
お礼コメント
menta2000

お礼率 91% (21/23)

muri123さん

ありがとうございます。

実際に印刷してみたのですが、『東京』は正しくフィルタがかかり
印刷されましたが、『神奈川』はなぜかフィルタがかからず
白紙のまま印刷されました・・・。

なぜでしょうか・・・
投稿日時:2010/07/05 00:09
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ページ先頭へ