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 矢木浩人