|
飛ばない豚さん
ご返信ありがとうございます。
>ひとつ確認です。
>フィルタの状態を保持したまま解除する事は
>> If Sheet1.AutoFilterMode = True Then
>> Sheet1.AutoFilterMode = False
>> inAF = 1
>> End If
>これで出来ましたか?
上記のコードでフィルタの状態は解除できました!
で、ヘルプをその後探してみたところ、
フィルタを再設定する、といったようなコードがAutoFilter オブジェクトに
記載されていました。
それを活用して、以下とする事で、再設定することが出来ました。
〜〜〜以下コード〜〜〜
Dim inAF As Integer
Dim vaAF() As Variant
Dim stAFRange As String
With Thisworkbook.ActiveSheet
'■■■オートフィルターの解除&退避■■■
If .FilterMode = True Then
inAF = 1
stAFRange = .AutoFilter.Range.Address
With .AutoFilter.Filters
ReDim vaAF(1 To .Count, 1 To 3)
For i = 1 To .Count
With .Item(i)
If .On Then
vaAF(i, 1) = .Criteria1
If .Operator Then
vaAF(i, 2) = .Operator
vaAF(i, 3) = .Criteria2
End If
End If
End With
Next
End With
.AutoFilterMode = False
End If
(中略)
'■■■オートフィルターを戻す■■■
If inAF = 1 Then
For i = 1 To UBound(vaAF(), 1)
If Not IsEmpty(vaAF(i, 1)) Then
If vaAF(i, 2) Then
.Range(stAFRange).AutoFilter _
Field:=i, _
Criteria1:=vaAF(i, 1), _
Operator:=vaAF(i, 2), _
Criteria2:=vaAF(i, 3)
Else
.Range(stAFRange).AutoFilter _
Field:=i, _
Criteria1:=vaAF(i, 1)
End If
End If
Next
End If
End With
|
|