こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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

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

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

宜しくお願いします。

投稿日時 - 2010-07-04 21:37:26

QNo.6015557

困ってます

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

私が試験してみた限りは、両方ちゃんと出ましたけど。

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

.AutoFilterMode = False
あたりで、フィルター解除になっていないのでは?

投稿日時 - 2010-07-05 05:11:16

お礼

muri123さんのお陰で解決できました。
ありがとうございます。

投稿日時 - 2010-07-05 11:10:44

このQ&Aは役に立ちましたか?

4人が「このQ&Aが役に立った」と投票しています

回答(2)

参考までに、元のプログラムから変更して見ました。
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

投稿日時 - 2010-07-04 23:05:38

お礼

muri123さん

ありがとうございます。

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

なぜでしょうか・・・

投稿日時 - 2010-07-05 00:09:40

あなたにオススメの質問