IT技術サポート総合サイト
 
 言語:  VC++/MFC   PHP/Perl   VB/VBA   ASP/ASP.net   HTML/CSS   基本知識:  Windows   Linux   ネットワーク   MySQL   レンタルサーバ   SEO対策
キーワード: RSS2.0配信
 
 
コラム集:Excel VBA Tips
←前コラム    目次    次コラム→    
 
オートフィルタの設定
分類:VB/VBA     著者:徳永秀雄     更新日付:2008/12/14
 
 
[概要]
AutoFilterメソッドで、指定したセル範囲にオートフィルタを設定できます。
操作対象オブジェクトに、リスト化するセル範囲をRsngeオブジェクトで指定します。
この範囲には、表題となる見出しを含みます。
そして、AutoFilterメソッドを実行すれば、セルに矢印ボタンが付いたリストが作成されます。
設定したオートフィルタは、矢印ボタンを押すことで、リスト表示する項目を自由に選べるようになります。


[書式]
Object.AutoFilter(Field, Criteria1, Operator, Criteria2)
▲引数の説明
Field :フィルタの対象となるフィールド番号。
    オートフィルタを設定したセル範囲の列番号のことで、一番左端が「1」になる
Criteria1 :抽出条件となる文字列を設定する。
      「"="」で空白セルの抽出、「"<>"」で空白以外のセルを抽出する。
      省略すると抽出条件はALLとなりすべての値を表示することになる。
      引数「Operator」に「xlTop10Items」を指定した場合は、ここには表示する項目数(たとえば "10")を指定する

Operator :あらかじめ設定されている抽出条件を定数でセットする。
      使用できる定数は以下のように:
      xlAnd
      xlBottom10Items
      xlBottom10Percent
xlOr
xlTop10Items
xlTop10Percent 

Criteria2 :2番目の抽出条件を設定する。
      この場合、引数「Operator」に「xlAnd」と「xlOr」を使うことで、「Criteria1」と「 Criteria2」を組み合わせて複合抽出条件を指定できる


属性 メソッド
所属オブジェクト Worksheet
操作対象オブジェクト Range


[例]
Private Sub オートフィルタ_Test()
    MsgBox "セルの値を設定する"
    Worksheets("Sheet1").Range("B1") = "番号"
    Worksheets("Sheet1").Range("B2") = "1"
    Worksheets("Sheet1").Range("B3") = "2"
    Worksheets("Sheet1").Range("B4") = "3"
    Worksheets("Sheet1").Range("B5") = "4"
    Worksheets("Sheet1").Range("B6") = "5"
    Worksheets("Sheet1").Range("B7") = "6"
    Worksheets("Sheet1").Range("C1") = "名前"
    Worksheets("Sheet1").Range("C2") = "太郎1"
    Worksheets("Sheet1").Range("C3") = "花子2"
    Worksheets("Sheet1").Range("C4") = "太郎3"
    Worksheets("Sheet1").Range("C5") = "花子4"
    Worksheets("Sheet1").Range("C6") = "太郎5"
    Worksheets("Sheet1").Range("C7") = "花子6"
    
    MsgBox "オートフィルタ設定する"
    Worksheets("Sheet1").Range("B1:C7").AutoFilter
    
    MsgBox "オートフィルタ解除する"
    Worksheets("Sheet1").Range("B1:C7").AutoFilter
    
    MsgBox "太郎で始まる名前だけを表示する"
    Worksheets("Sheet1").Range("B1:C7").AutoFilter field:=2, Criteria1:="太郎*"
    
    MsgBox "花子で始まる名前だけを表示する"
    Worksheets("Sheet1").Range("B1:C7").AutoFilter field:=2, Criteria1:="花子*"
    
    MsgBox "すべての値を表示させる"
    Worksheets("Sheet1").ShowAllData

    MsgBox "オートフィルタ解除する"
    Worksheets("Sheet1").Range("B1:C7").AutoFilter
End Sub
 
 
←前コラム    目次    次コラム→