過去ログ

                                Page     612
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼オートフィルターについて  jack 03/1/25(土) 23:51
   ┗Re:オートフィルターについて  りん 03/1/26(日) 15:16
      ┗Re:オートフィルターについて  jack 03/1/26(日) 22:08

 ───────────────────────────────────────
 ■題名 : オートフィルターについて
 ■名前 : jack
 ■日付 : 03/1/25(土) 23:51
 -------------------------------------------------------------------------
   オートフィルターのマクロは次のように記述しますが
selection.autofilter field:=3,criterial:="5"〜
このfield:=3を「3」じゃなくて選択しているセルと
指定できないのでしょうか。
 ───────────────────────────────────────  ■題名 : Re:オートフィルターについて  ■名前 : りん <rin_doggie@hotmail.com>  ■日付 : 03/1/26(日) 15:16  -------------------------------------------------------------------------
   jack さん、こんにちわ。

>オートフィルターのマクロは次のように記述しますが
>selection.autofilter field:=3,criterial:="5"〜
>このfield:=3を「3」じゃなくて選択しているセルと
>指定できないのでしょうか。

Sub Macro1()
  '選択範囲に対してアクティブなセルが何列目かを取得
  With Selection 
   Fpos = ActiveCell.Column - .Cells(1).Column + 1
   .AutoFilter Field:=Fpos, Criteria1:="5"
  End With
End Sub

選択範囲がひとつに限りますが(それ以外はチェックしてません)。

で、ちょこっと応用して。
Sub Macro2()
  '選択範囲に対してアクティブなセルが何列目かを取得
  If Application.Intersect(ActiveCell.EntireColumn, _
               Range("B1:E10")) Is Nothing Then
   MsgBox "列が範囲外", vbExclamation
  Else
   
   With Range("B1:E10")
     'フィルタが既に適用されている場合は解除
     If .Parent.AutoFilterMode = True Then .AutoFilter
     '
     Fpos = ActiveCell.Column - .Cells(1).Column + 1
     .AutoFilter Field:=Fpos, Criteria1:="5"
   End With
  End If
End Sub

こんな感じです。
 ───────────────────────────────────────  ■題名 : Re:オートフィルターについて  ■名前 : jack <jack@naxnet.or.jp>  ■日付 : 03/1/26(日) 22:08  -------------------------------------------------------------------------
   りん さん
解決しました。どうもありがとうございました。
マクロは初心者なので、本当に助かりました。
また、よろしくお願いします。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 612