エクセル 入力した文字色のカラーインデックスを取得し、同色文字のセルを色フィルターで抽出する(Excel VBA)

【本日のミッション】

Excel VBAで、入力した文字色のカラーインデックスを取得し、同色文字のセルを色フィルターで抽出せよ。

ミッションの概要

入力した文字色のカラーインデックスを取得し、同色文字のセルを色フィルターで抽出せよ、というのが今回のミッションです。


↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

プロシージャ

Sub 文字色フィルター()

    Dim t_cor As Long   'カラー
    
    t_cor = Range("F1").Font.Color
    Range("a1").AutoFilter Field:=4, Criteria1:=t_cor, Operator:=xlFilterFontColor

End Sub

データ抽出を行いたいセルをアクティブにした状態で、プロシージャ(Sub~End Subまで)のどこかにカーソルを置いてF5キーをクリックしてください。

セルF1の文字色と同じ色のセルだけが、抽出されました。

■■■スポンサーリンク■■■

文字色を取得する Font.Colorプロパティ

文字色は、Font.Colorプロパティで取得することができます。

Range.Font.Color

複数セルの文字色は取得不可

Font.Colorプロパティでは、複数セルの文字色を取得することはできません。
「実行時エラー’94’; Nullの使い方が不正です」というエラーになってしまいます。

t_cor = Range("A1:B1").Font.Color
MsgBox "あなたが指定した文字色のカラーインデックスは「" & t_cor & "」です"

AutoFilterメソッド

Range.AutoFilter(Field, Criteria1, Operator, Criteria2, VisibleDropDown)
引数名説明省略
Fieldフィルターの対象となる列を列番号で指定します。列番号は、Rangeオブジェクト範囲の左から何列目かを整数値で指定します。(一番左列番号が「1」 になります。)
Criteria11つめのフィルター条件となる文字列を指定します。
“=”と指定:空白セルが抽出されます。
“<>”と指定:空白以外のフィールドが抽出されます。
省略すると、フィルター条件は All になります。
引数Operatorに「xlTop10Items」を指定する場合は、引数 Criteria1に項目数を指定します。
Operatorフィルター条件をXlAutoFilterOperator列挙型の定数で指定します。

定数説明
xlAndAND条件(Criteria1かつCriteria2)
xlOrOR条件(Criteria1またはCriteria2)
xlTop10Items上位からCriteria1で指定した項目数
xlBottom10Items下位からCriteria1で指定した項目数
xlTop10Percent上位からCriteria1で指定した割合%
xlBottom10Percent下位からCriteria1で指定した割合%
xlFilterValuesフィルターの値
xlFilterCellColorセルの色
xlFilterFontColorフォントの色
xlFilterIconフィルター アイコン
xlFilterDynamic動的フィルター
Criteria22つめのフィルター条件となる文字列を指定します。引数 Criteria1および引数 Operatorと組み合わせて、複合抽出条件を指定します。
VisibleDropDownオートフィルターのドロップダウン矢印の表示を指定します。
True :矢印を表示します。(規定値)
False:矢印を非表示にします。

今回は引数Operatorに「xlFilterFontColor」を指定しています。

Range("a1").AutoFilter Field:=4, Criteria1:=t_cor, Operator:=xlFilterFontColor

手作業で行う時の、↓これのことですね。