目安箱 IV

目安箱投稿のルールはこちらをごらんください。
ご意見は電子メールで承っています。
「目安箱」は質問禁止です。技術的な質問はそれぞれの質問箱へどうぞ。

迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。

  新規投稿 ┃ツリー表示 ┃一覧表示 ┃トピック表示 ┃検索 ┃設定 ┃ホーム  
40 / 109 ツリー ←次へ | 前へ→

【160】オートフィルタ解除とずべて表示 Jaka 06/10/31(火) 11:41 Excel[未読]
【214】Re:オートフィルタ解除とずべて表示 Jaka 07/11/1(木) 17:03 Excel[未読]

【160】オートフィルタ解除とずべて表示
Excel  Jaka  - 06/10/31(火) 11:41 -

引用なし
パスワード
   1、オートフィルターを解除する

Sub オートフィルタ解除()
  'Sheets("Sheet1").AutoFilterMode = False
  ActiveSheet.AutoFilterMode = False
End Sub


2、オートフィルターを全て表示にする。
  オートフィルタで、抽出状態の物があれば、全オートフィルタを全表示にする。
  (1つも抽出状態で無いのに、全表示にするとエラーになる。)

Sub オートフィルター全表示()
  If ActiveSheet.FilterMode = True Then
    ActiveSheet.ShowAllData
  End If
End Su


3、オートフィルタ部分的に全表示にする。

・セルまたは、列を選択指定する。
 選択したセルの列のオートフィルタを「全て表示」にする。
 (尚、複数列選択に対しては、対応してません。左右の一方からしか順に調べられない。)

Sub 選択部分全表示()
  Dim ColC As Range, ColNo As Integer
  If ActiveSheet.FilterMode = False Then Exit Sub
  With ActiveSheet.AutoFilter
   For i = 1 To .Filters.Count
     If .Filters.Item(i).On Then
      ColNo = .Range.Cells(i).EntireColumn.Column
      Set ColC = Application.Intersect(Selection, Columns(ColNo))
      If Not ColC Is Nothing Then
        MsgBox "フィルター範囲 " & i & " 列目解除" & vbLf & _
           Chr(.Range.Cells(1).Column + i + 63) & " 列"
            '↑テスト用確認の為、Z列までがまともに表示される。AA列以降は未対応。
        .Range.Cells(1).AutoFilter Field:=i
        Set ColC = Nothing
        '↓フィルタされた順番はわかりません。コメントにして複数に対応させるときは注意。
        Exit Sub
      End If
     End If
   Next
  End With
End Sub

・フィルタ範囲列指定する。
 オートフィルタ範囲の3列目を「全表示」にする。

Sub 部分全表示()
  If ActiveSheet.FilterMode = False Then Exit Sub
  Rtu = 3
  ActiveSheet.AutoFilter.Range.Cells(1).AutoFilter Field:=Rtu
End Sub

【214】Re:オートフィルタ解除とずべて表示
Excel  Jaka  - 07/11/1(木) 17:03 -

引用なし
パスワード
   ▼セルの右クリックだけで部分的に全表示にしたい場合。

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim ColC As Range, ColNo As Integer

If ActiveSheet.FilterMode = False Then Exit Sub
With ActiveSheet.AutoFilter
  If Not Application.Intersect(Target, .Range.Rows(1)) Is Nothing Then
   Cancel = True
   For i = 1 To .Filters.Count
     If .Filters.Item(i).On Then
      ColNo = .Range.Cells(i).EntireColumn.Column
      Set ColC = Application.Intersect(Target, Columns(ColNo))
      If Not ColC Is Nothing Then
        MsgBox "フィルター範囲 " & i & " 列目解除" & vbLf & _
           Chr(.Range.Cells(1).Column + i + 63) & " 列"
            '↑テスト用確認の為、Z列までがまともに表示される。AA列以降は未対応。
        .Range.Cells(1).AutoFilter Field:=i
        Set ColC = Nothing
        '↓フィルタされた順番はわかりません。コメントにして複数に対応させるときは注意。
        Exit Sub
      End If
     End If
   Next
  End If
End With
End Sub

  新規投稿 ┃ツリー表示 ┃一覧表示 ┃トピック表示 ┃検索 ┃設定 ┃ホーム  
40 / 109 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:   
0
(SS)C-BOARD v3.8 is Free