Excel VBA オートフィルタをシート間で同期
ナビゲーションに移動
検索に移動
Excel VBA オートフィルタをシート間で同期
オートフィルタの状態をシート間で同期させる
- Sub SyncAutoFilter()
- Dim srcSht As Excel.Worksheet '同期元のシート
- Dim dstSht As Excel.Worksheet '同期元のセル
- Dim srcCell As Excel.Range '同期元のシート
- Dim dstCell As Excel.Range '同期先のセル
- '対象セルの位置
- Dim r As Integer
- Dim c As Integer
- r = 2
- c = 1
- '同期元情報を変数にセット
- Set srcSht = Application.Sheets("Sheet1")
- Set srcCell = srcSht.Cells(r, c)
- '同期先情報を変数にセット
- Set dstSht = Application.Sheets("Sheet2")
- Set dstCell = dstSht.Cells(r, c)
- '同期処理
- Dim idx As Integer 'AutoFilter index
- Dim fld As Integer 'フィルタの対象となるフィールド番号(リストの左側から数えた番号)
- idx = 1
- fld = 1
- If srcSht.AutoFilter.Filters(idx).On Then
- Select Case srcSht.AutoFilter.Filters(idx).Operator
- Case 0
- '条件指定なし
- dstCell.AutoFilter Field:=fld, _
- Criteria1:=srcSht.AutoFilter.Filters(idx).Criteria1
- Case xlAnd, xlOr
- '条件指定 AND、OR
- dstCell.AutoFilter Field:=fld, _
- Criteria1:=srcSht.AutoFilter.Filters(idx).Criteria1, _
- Operator:=srcSht.AutoFilter.Filters(idx).Operator, _
- Criteria2:=srcSht.AutoFilter.Filters(idx).Criteria2
- Case xlTop10Items, xlBottom10Items, xlTop10Percent, xlBottom10Percent
- '条件指定 上位、下位の件数、%
- dstCell.AutoFilter Field:=fld, _
- Operator:=srcSht.AutoFilter.Filters(idx).Operator
- Case Else
- 'NOP
- End Select
- Else
- ' フィルタの解除
- Call dstCell.AutoFilter(fld)
- End If
- End Sub
© 2006 矢木浩人