• 締切済み

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 'フィルターオプション解除

みんなの回答

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.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

mi504
質問者

お礼

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

  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

フィルタで可視セルだけを消したいということでいいでしょうか? 以下のように修正してみて下さい。 Selection.SpecialCells(xlCellTypeVisible).ClearContents '該当データーのみ空白にする

mi504
質問者

補足

説明が下手で申し訳ありません。 AF列(32列)を空白を条件にフィルタしBN列(66列)のデーターを空白(クリアー)にしたいので、「可視セルだけを消したいということでいいでしょうか」のご質問に関しては、可視セルだけを消したいです。(条件にヒットして視えている別の列セルのみ空白(クリアー)にしたい) 初心者でよく判らないですが、 Selection.ClearContents '該当データーのみ空白にする   を Selection.SpecialCells(xlCellTypeVisible).ClearContents  に替えるということでしょうか? 因みに、替えてみたのですが、エラー1004!がでてここで止まってしまうのですが...それとも違う意味でしょうか?