Excel VBA テクニック集 |
|
シートのタイトル行に、オートフィルタの▼ボタンが表示されているかどうかを判定です。 そのためには、ワークシートのAutoFilterModeプロパティを調べます。 使い方は、ファイル一覧を使った応用の、「マクロ専用ファイル」によるマクロ実行に、下記コードを入れます。 If Excel_App.ActiveSheet.AutoFilterMode = True Then MsgBox "オートフィルター有効" Else MsgBox "オートフィルター無効" End Ifさらに、特定の条件で絞り込まれているかどうかを判定するには、ワークシートのFilterModeプロパティを調べます。 If Excel_App.ActiveSheet.AutoFilterMode = True Then If Excel_App.ActiveSheet.AutoFilter.FilterMode = True Then MsgBox "絞り込み" Else MsgBox "絞り込みなし" End If End Ifさらに、絞り込みの内容を調べます。 Excel_App.ActiveSheet.AutoFilter.Filters.Count は、オートフィルタの▼ボタンが表示されている、列の件数です。 Excel_App.ActiveSheet.AutoFilter.Filters(I).On = True ならば、フィルターをかけている状態です。 フィルターをかけた列の情報を、下記により取得できます。 (フィルターをかけた列) = Excel_App.ActiveSheet.AutoFilter.Range.Columns(I).Address (タイトルの値) = Excel_App.ActiveSheet.AutoFilter.Range(I).Value フィルターの件数が1個ならば、Criteria1がArrayになりません。 If IsArray(Excel_App.ActiveSheet.AutoFilter.Filters(I).Criteria1) = False Then フィルターの件数が2個以上ならば、Criteria1がArrayになります。 If IsArray(Excel_App.ActiveSheet.AutoFilter.Filters(I).Criteria1) = True Then このときは、「For Each 〜 Next」のテクニックでフィルターの内容を調べることができます。 以上をまとめてコード化すると、下記のようになります。 Dim Criteria_V As Variant For I = 1 To Excel_App.ActiveSheet.AutoFilter.Filters.Count If Excel_App.ActiveSheet.AutoFilter.Filters(I).On Then (フィルターをかけた列) = Excel_App.ActiveSheet.AutoFilter.Range.Columns(I).Address (タイトルの値) = Excel_App.ActiveSheet.AutoFilter.Range(I).Value If IsArray(Excel_App.ActiveSheet.AutoFilter.Filters(I).Criteria1) = False Then (フィルターの値) = Excel_App.ActiveSheet.AutoFilter.Filters(I).Criteria1 Else For Each Criteria_V In Excel_App.ActiveSheet.AutoFilter.Filters(I).Criteria1 (フィルターの値) = Criteria_V Next Criteria_V End If End If Next |
「こだわりハウス」写真館| 数学公式集| ピンポイントストリートビュー| FaceBook| Excel Vba テクニック集| Excel 計算式解析・他解析| 富山の建築家| Excel 計算式解析・他解析| 積分の定義・積分の記号の意味の研究| |