【本日のミッション】
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」 になります。) | ○ | ||||||||||||||||||||||||
Criteria1 | 1つめのフィルター条件となる文字列を指定します。 “=”と指定:空白セルが抽出されます。 “<>”と指定:空白以外のフィールドが抽出されます。 省略すると、フィルター条件は All になります。 引数Operatorに「xlTop10Items」を指定する場合は、引数 Criteria1に項目数を指定します。 | ○ | ||||||||||||||||||||||||
Operator | フィルター条件をXlAutoFilterOperator列挙型の定数で指定します。
| ○ | ||||||||||||||||||||||||
Criteria2 | 2つめのフィルター条件となる文字列を指定します。引数 Criteria1および引数 Operatorと組み合わせて、複合抽出条件を指定します。 | ○ | ||||||||||||||||||||||||
VisibleDropDown | オートフィルターのドロップダウン矢印の表示を指定します。 True :矢印を表示します。(規定値) False:矢印を非表示にします。 | ○ |
今回は引数Operatorに「xlFilterFontColor」を指定しています。
Range("a1").AutoFilter Field:=4, Criteria1:=t_cor, Operator:=xlFilterFontColor
手作業で行う時の、↓これのことですね。
参考
AutoFilter オートフィルター 1列に OR条件で2つの条件指定(Excel VBA)
AutoFilter オートフィルター 1列に AND条件 で2つの条件指定(Excel VBA)
AutoFilter オートフィルター 1列に OR条件 で 3つ以上 の条件指定(Excel VBA)
AutoFilter オートフィルター 複数列に 2つの条件指定(Excel VBA)
AutoFilter オートフィルター 複数列に 3つ以上の条件指定(Excel VBA)
エクセル 指定した色のカラーインデックスを取得し、同じ色のセルを色フィルターで抽出する(Excel VBA)
エクセル 入力した文字色のカラーインデックスを取得し、同色文字のセルを色フィルターで抽出する(Excel VBA)