|
項目ごとに表示したいなら、そんな簡単なマクロでは無理です。
どうしても特定の項目を選択する必要がでてくるからです。
で、一例として
[シートモジュール]
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _
Cancel As Boolean)
Dim Wp As Single, Hp As Single
With Target
If .Address <> "$A$1" Then Exit Sub
Wp = .Width * 2: Hp = .Height
End With
Cancel = True: Range("IV:IV").ClearContents
Range("A1", Range("A65536").End(xlUp)).AdvancedFilter _
xlFilterCopy, , Range("IV1"), True
Range("IV65536").End(xlUp).Offset(1).Value = "[ 行表示 ]"
With ActiveSheet.DropDowns.Add(0.1, 0.1, Wp, Hp)
.ListFillRange = Range("IV2", Range("IV65536").End(xlUp)) _
.Address
.OnAction = "Hdn_Row"
End With
End Sub
[標準モジュール]
Sub Hdn_Row()
Dim x As Variant
Dim MyType As String
Dim C As Range
x = Application.Caller
If VarType(x) <> 8 Then Exit Sub
With ActiveSheet.DropDowns(x)
If .ListIndex = .ListCount Then
Rows.Hidden = False
Else
MyType = .List(.ListIndex)
End If
.Delete
End With
If MyType = "" Then Exit Sub
Application.ScreenUpdating = False
For Each C In Range("A2", Range("A65536").End(xlUp))
If C.Value = MyType Then
If C.Offset(, 25).Value = "" Then
C.EntireRow.Hidden = True
End If
Else
C.EntireRow.Hidden = True
End If
Next
Application.ScreenUpdating = True
End Sub
を、各モジュールに入れ、表のあるシートの A1 をダブルクリック
してみて下さい。そこにコンボボックスが出てきますから、任意の
項目を一つ選びます。そのとき、既に行の非表示がされていて、
元に戻したいときには、リストの最後の [ 行表示 ] を選んで下さい。
シート全体の非表示行が、表示されて終わります。
|
|