• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCELマクロ AutoFilterの使い方を教えて下さい。)

EXCELマクロ AutoFilterの使い方を教えて下さい。

このQ&Aのポイント
  • EXCELマクロ初心者です。使用環境は、EXCEL2007です。
  • Web上で紹介されていたマクロをアレンジして以下のようなマクロを作成しました。
  • B列に指定した数字が記載された行を削除するものです。指定した数字以外がB列に記載された行を削除する方法を教えてください。エラーが出てしまいます。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

sub macro1()  dim res  res = inputbox  range("B:B").autofilter field:=1, criteria1:="<>" & res  activesheet.autofilter.range.offset(1).entirerow.delete shift:=xlshiftup  activesheet.autofiltermode = false end sub 「"<>" & 変数」のようにするのが,今回のご質問のキモです。

ponte5616
質問者

お礼

指示内容通りでかつ、シンプルにしたマクロで非常に気に入りました。 ありがとうございました。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

元のコードは、たぶん、誰かが書いたコードでしょうけれども、私が、ここで書いてきた方法に似ていますので、その部分を活かして、返事を付けておきます。 本来は、あまりこういうテクニックはきれいではないのですが、何かの時に役に立つでしょうから、置いておきます。 If WorksheetFunction.Subtotal(3, .Columns(1).Cells) = .Rows.Count Then   On Error GoTo errhandlerのエラーは、発生しなかったはずです。 なお、以下の変数は、Variant 型ですが、Prefix は、int のままにしておきます。 また、Application.ScreenUpdating = False は、AutoFilter には、あまり思ったほど効果なかったような気がします。 SpecialCells(xlCellTypeVisible).EntireRow.Delete これが必要なのは、Excelの一部のバグなのか、上手くいかない場合の時だけです。 '// Sub RowsDelete_in_Brow() ''B列に指定の数字がある場合、行を削除   Dim intCriteria As Variant   With ActiveSheet     If .AutoFilterMode = True Then .AutoFilterMode = False     intCriteria = Application.InputBox("検索し残す数字を入力。", "数字入力", Type:=2)     If VarType(intCriteria) = vbBoolean Or Not IsNumeric(intCriteria) Then Exit Sub          Application.ScreenUpdating = False     .Cells(2, 1).CurrentRegion.AutoFilter Field:=2, Criteria1:="<>" & intCriteria     With .AutoFilter.Range       If WorksheetFunction.Subtotal(3, .Columns(1).Cells) = .Rows.Count Then         MsgBox intCriteria & " はありません。", vbExclamation         .AutoFilter         Exit Sub       End If       .Offset(1).Resize(.Rows.Count - 1).EntireRow.Delete     End With     .AutoFilterMode = False     Application.ScreenUpdating = True   End With End Sub

ponte5616
質問者

お礼

回答ありがとうございました。ただ、私には少し難しいようです。ご提案頂いたマクロを理解できるようにもっと勉強します。

  • jcctaira
  • ベストアンサー率58% (119/204)
回答No.1

Criteria1:=intCriteria の 「:=」は等号記号ではなく代入文です。 以下のように訂正すればできると思います。     .AutoFilter Field:=2, Criteria1:="<>" & intCriteria

ponte5616
質問者

お礼

私の作成したマクロを活用して、指示通りの訂正案を提示して頂けました。ありがとうございました。