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

締切り済みの質問

Excel VBAでオートフィルターを使って他の列を空白に

Excel VBAでオートフィルターを使ってAF列(32列)が空白ならBN列(66列)を空白する為、以下を作成したのですが、AF列(32列)に空白がない場合はBN列(66列)全て空白になってしまうのですが、どのようにしたら良いのでしょうか?
毎月300~500行になる為、オートフィルターを使用した方が処理が早いと思いしたのですが...

'-------オートフィルター後、該当データーのみ範囲指定する---------
'オートフイルターの条件を入れる列の番号(32)に条件("空白")
Selection.AutoFilter Field:=32, Criteria1:=""
Selection.CurrentRegion.Select 'アクティブセル領域を選択する
Selection.Offset(1, 0).Select '選択領域を1行下へ移動する
Selection.Resize(Selection.Rows.Count - 1).Select '選択領域を1行減らす(見出し行)
Selection.Offset(0, 65).Select '選択領域の左端のをBM列にする
Selection.Resize(, 1).Select '選択領域を1列右にする
Selection.ClearContents '該当データーのみ空白にする
Selection.AutoFilter Field:=32 'フィルターオプション解除

投稿日時 - 2010-03-12 11:10:33

QNo.5745548

すぐに回答ほしいです

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

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

回答(2)

ANo.2

簡易には,今のあなたのマクロの中の
Selection.Resize(Selection.Rows.Count - 1).Select '選択領域を1行減らす(見出し行)
の1行を「消して」動かしてみてください。



#ちなみにプログラミングに慣れてくると,例えばこんな感じです。

Sub macro2()
 Dim r As Double
 On Error Resume Next
 ActiveSheet.AutoFilterMode = False
 r = Application.Max(2, Range("BN65536").End(xlUp).Row)

 Range("AF:AF").AutoFilter field:=1, Criteria1:="="
 Range("BN2:BN" & r).SpecialCells(xlCellTypeVisible).ClearContents
 ActiveSheet.AutoFilterMode = False
End Sub

投稿日時 - 2010-03-13 00:13:20

お礼

返事が遅くなりまして、申し訳ありません。(;´・ω・`)ゞごめんなさい。
仰る通り「-1」を消したら出来ました。ワァ──o(。´・∀・`。)o──ィ♪
又、プログラミング例を有難うございました。今後の勉強課題として、意味を理解できるように頑張ります!!

投稿日時 - 2010-03-13 10:25:56

ANo.1

フィルタで可視セルだけを消したいということでいいでしょうか?

以下のように修正してみて下さい。

Selection.SpecialCells(xlCellTypeVisible).ClearContents '該当データーのみ空白にする

投稿日時 - 2010-03-12 11:25:13

補足

説明が下手で申し訳ありません。
AF列(32列)を空白を条件にフィルタしBN列(66列)のデーターを空白(クリアー)にしたいので、「可視セルだけを消したいということでいいでしょうか」のご質問に関しては、可視セルだけを消したいです。(条件にヒットして視えている別の列セルのみ空白(クリアー)にしたい)

初心者でよく判らないですが、
Selection.ClearContents '該当データーのみ空白にする   を
Selection.SpecialCells(xlCellTypeVisible).ClearContents  に替えるということでしょうか?
因みに、替えてみたのですが、エラー1004!がでてここで止まってしまうのですが...それとも違う意味でしょうか?

投稿日時 - 2010-03-12 15:20:13

あなたにオススメの質問