- FindFormatの設定をいじって書式検索ができるようになります。
- 以下のような特殊な書式のセル検索が可能に
①特定の背景色や文字色
②太字のセル
③結合しているセル
④フォントの種類やサイズ - サイトや書籍に頼らず条件を自分でコーディングできるようになる方法
- 注意点
こんにちは、hokkyokunです。
いくつかFindメソッド関連の記事を書いてきました。
正直Findメソッドは扱いが難しいところもあるのですが、
今回の記事はFindメソッドだからこそできる機能です。
Findメソッドは設定をいじることで
書式検索が可能になります。
例えば以下のような検索が可能です。
- 結合しているセルがあるかどうかをチェック、
あればその位置を特定 - 背景色が黄色のセルだけ値を取得したい
- フォントサイズを大きくしているセルを取得したい
- 特定のフォントで書いているセルを検索したい
業務によっては結構使う機会がありそうじゃないですか?
しかもこの条件は簡単に自分で調べることが可能です。
最後まで読んでいただければ自分で書式検索を簡単にマスタできます!!
Findメソッドについていくつか記事を書いています。
よかったら見てやってください。
FindFormatとは
FindFormatって何?
FindFormatはFindメソッドで検索するセルの書式を
絞り込むことができます。
エクセルで 「Ctrl + F」 を押すと
検索ダイアログボックスが出てきますが、
そのなかの書式設定をVBAを使っていじるイメージです。
この書式設定をいじって
最終的にはFindメソッドで検索をかけるという流れです。
具体的にはFindメソッドの「SearchFormat」という引数を「True」に変えます。
つまり、
- FindFormatで設定をいじる
- FindメソッドのSearchFormat:=Trueにして
FindFormatの設定を活かして検索する
FindFormatはちょっと特殊なので
注意してください。
基本構文
Application.FindFormat . [メソッド or プロパティ]
Application.FindFormatの後ろにつけるプロパティの状態を変更したり、確認したりすることが可能です。
代表的なメソッドやプロパティの変更を表にしました。
※コードはApplication.FindFormatの後ろです
全部書くと長いので省略しています。
コード | 説明 | 例 |
---|---|---|
.Clear | 書式設定をクリア | .Clear |
.Interior.Color | 背景色を指定 | .Interior.Color = vbYellow |
.Font.Color | 文字の色を指定 | .Font.Color=vbYellow |
.Font.Bold | 太字指定 | .Font.Bold=True |
.MergeCells | 結合セル | .MergeCells = True |
代表的な検索方法
下記のような図で書式検索を実行してみます。
検索時余計な意図しない書式設定にならないように
毎回 Application.FindFormat.clear
は入れておいた方がいい
背景色を指定して検索
Sub format_test1()
With Application.FindFormat
.clear
.Interior.Color = vbYellow
End With
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet2")
Debug.Print ws.Range("A1:C6").Find(What:="", searchformat:=True).Address
'>>$A$3
ws.Range("A1:C6").Find(What:="", searchformat:=True).Borders.Color = vbRed
End Sub
太字のセルを検索
Sub format_test2()
With Application.FindFormat
.clear
.Font.Bold = True
End With
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet2")
Debug.Print ws.Range("A1:C6").Find(What:="", searchformat:=True).Address
'>>$A$2
ws.Range("A1:C6").Find(What:="", searchformat:=True).Borders.Color = vbRed
End Sub
結合しているセルを検索
Sub format_test3()
With Application.FindFormat
.clear
.MergeCells = True
End With
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet2")
Debug.Print ws.Range("A1:C6").Find(What:="", searchformat:=True).Address
'>>$A$5
ws.Range("A1:C6").Find(What:="", searchformat:=True).Borders.Color = vbRed
End Sub
自分で書式検索の設定を調べる方法
使い方はそんなに難しくはないと思いますが、
設定条件が細かすぎるので全てを紹介することはできません。
特にフォント名の指定なんかもできるので
全て列挙するのは不可能です。
自分で書式検索の設定をいじれるようになる方法をご紹介します。
マクロの記録を有効活用しましょう。
①開発タブの「マクロの記録」をクリックしましょう。
②ダイアログボックスが出現するのでOK
③Ctrl + F で検索ダイアログボックスを出現させ
書式をクリック、あとは設定したい項目をクリックしてOK
④最後は記録終了をクリックして終了
⑤マクロを確認して、プロパティの設定の仕方を確認
※不要なコードも入ってくるので、適切にカットして使用
Sub Macro1()
'
' Macro1 Macro
'
'
With Application.FindFormat.Font
.Name = "Meiryo UI"
.Subscript = False
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
End Sub
注意点
Findメソッドの引数は適切に処理
Findメソッドは使い方がやや難しく、
特に引数の管理に癖があります。
引数には注意して使用してください。
下記の記事にFindメソッドの基本的な使い方や
見つからない場合の処置をまとめています。
FindFormatのプロパティは毎回クリアする
上記でも触れましたが、
基本的に前回の書式設定は残りますので
毎回クリアしてからの使用が無難です。
また、使用後も書式設定をクリアするべきです。
厳密にはFindメソッドでSearchFormatをTrueにしなければ
影響はありません。
ただし、エクセルからCtrl + Fで検索ダイアログボックスを開いて検索する場合は
がっちり書式設定が残っており、業務に支障をきたすので
マナーとして書式設定クリアはしておきましょう。
Application.FindFormat.Clear
は使用前、使用後に入れることを推奨
色の指定をするお勧めの方法
個人的にFindFormatを使用する一番の理由は文字や背景色の検索です。
そもそも色検索を否定する人も多いですし、
私も積極的にお勧めはしませんが、
実務上色で処理をかえるなんてことはあるあるじゃないかと思います。
実際、私も背景色をトリガーに
処理の分岐をするプログラムを書いたこともあります。
そんな色検索ですが、
まともに色指定の設定を選んでいると非効率的です。
大きく二つ方法をご提示します。
RGBを調べてコーディング
色を指定する方法はいろいろありますが、
RGBはノーコードで比較的簡単に調べられます。
①調べたいセルを選択し、ホームタブの「塗りつぶしの色」から色情報にアクセス
②RGBの情報が取得できるのでそれをメモしてコーディング
カラーチャートを活用する
もうひとつはカラーチャートを用意してその中から
色を指定していく方法です。
これはエクセルの運用を一からできる人向けですが、
VBAのコーディングも考慮した総合的な管理ができ、
結果、壊れにくいプログラムを作ることができます。
カラーチャートはネットで調べたりすれば出てきますが、
いちいちブラウザ開いて調べるのも面倒なので、
カラーチャートを呼び出す関数を作りました。
まとめ
- FindFormatとは
セルを書式で絞り込むための設定 - 書式で絞って検索するためには
①FindFormatで書式を設定
②Findメソッド(引数 SearchFormat:=True) - 背景色・文字の色、太字、結合セルなど
様々な書式で絞り込むことができる。 - 結合セルを見つけ出して処理…
みたいな使い方もできる - FindFormatの書式は毎回クリアする
でないとエラーの原因に - 色を調べるならRGBか
カラーチャート
VBAの学習方法をまとめました。
VBAを高コスパで、短期間で学ぶにはUdemyがおすすめです。
Udemyは良質の学習プラットフォームですが、
動画数が多すぎてどれを見ればよいか迷います。
おすすめの講師をまとめました。
Findメソッドの他の記事です。
ブログ村ランキング参加中です。よかったらフォローお願いします!!