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

Excel2000を利用しています。

VBAで、オートフィルタを利用した作業を記述したいと思っています。
データは一行目にタイトルが入っています。

オートフィルタで抽出したデータを
その行まるまる削除したいと思っています。
その時、タイトル行(1行目)を除いて
オートフィルタで抽出された行のみ選択して
削除する、という場合、どのように記述すればよいのでしょうか。
自分では全然分からないので
教えてください、よろしくお願い致します。

A 回答 (3件)

#1の者です。

操作を間違えて回答ボタンを押してしまいました。少し追加させてください。
このマクロは、最終列まですべての列にデーターが入力されていないとうまく動作しません。
myRange = Range(myCell).SpecialCells(xlCellTypeVisible).End(xlUp).Offset(2, 0).Address
マクロのこの部分は、タイトル行を除くデータの先頭行を取得するためのマクロです。もし、タイトル行が1行の場合は下記のように変更して下さい。
myRange = Range(myCell).SpecialCells(xlCellTypeVisible).End(xlUp).Offset(1, 0).Address

あなた様がVBAをご存知であることを前提として書いてあります。もし、このマクロを実行させる方法がわからない時・うまく動作しない場合は、ご遠慮なくお知らせ下さい。
私でよろしければ、あなた様のおやりになりたいことが実現するまでご一緒に考えていきたいと思います。
    • good
    • 1
この回答へのお礼

ありがとうございました。
教えていただいた方法でうまくできました。
助かりました、ありがとうございます。

お礼日時:2002/10/18 22:46

テストデータとして


(A列) (B列)
氏名年齢
山田12
鈴木20
大田12
鈴木21
上田24
小山18
鈴木20
鈴木21
(コード)
鈴木、21歳をフィルタ。そして削除。
Sub test01()
'---コピー保存
Selection.Copy Range("a20")
'---フィルタ
With Selection
.AutoFilter
.AutoFilter Field:=1, Criteria1:="鈴木"
.AutoFilter Field:=2, Criteria1:="21"
'----削除
.SpecialCells(xlVisible).Delete
'----見出し復活
'---行挿入
Range("a1").EntireRow.Insert
Range("a20").CurrentRegion.Rows(1).Copy
Range("a1").Select
ActiveSheet.Paste
End With
End Sub
(実行)
A1:B9を範囲指定して実行。
(結果)
(A列) (B列)
氏名年齢
山田12
鈴木20
大田12
上田24
小山18
鈴木20
    • good
    • 1
この回答へのお礼

ありがとうございます。
こういう方法もあるのですね。
次の機会にはこちらの方法もやってみます!

お礼日時:2002/10/18 22:49

はじめまして。

私でよければサンプルマクロを作ってみました。参考にしてみて下さい。

Dim myRange As String
Dim myCell As String
Dim myColumn As String

Rows("2:2").autofilter Field:=3, Criteria1:="203 "

myCell = Range("A3").SpecialCells(xlCellTypeLastCell).Address
myRange = Range(myCell).SpecialCells(xlCellTypeVisible).End(xlUp).Offset(2, 0).Address
myRange = Range(myRange).End(xlToLeft).Address
Range(myRange & ":" & myCell).Delete
    • good
    • 1

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