マクロを使っていくと、特定の値を検索してそれに干渉したり、条件に該当するセルだけを検索して変更したりといった操作が要求される場面が出てきます。そうした場合は、Findメソッドを使うことで対応可能な場合が多いです。
Findメソッドの使い方
条件に合うセルを検索し、その位置情報を取得
検索範囲.Find(検索内容)
検索範囲.Find(検索内容)

A列の数字のいずれかを選択した状態でマクロを実行すると、C列の同じ数字を検索し、色をつけるというマクロを組んでみたいと思います。

Findメソッドを使う場合、一般的に①まず変数を作っておきます。As Rangeを付けるほうが正式ですが、なくても動きます。

②その変数にSetを使って何か代入することを示した上で、

③検索範囲を入力します。もし別のシートなら、Sheets(“シート名”).Range(範囲)のようにします。

④最後に何を検索するかを指定します。
しかる後変数に対して何かアクションをします。
しかる後変数に対して何かアクションをします。

今作ったDim FoundCell
Set FoundCell = Range(“C1:C14”).Find(ActiveCell.Value)というコードを実行すると、たとえばA列で「5」を選んでいれば、
Set FoundCell = Range(“C1:C14”).Find(ActiveCell.Value)というコードを実行すると、たとえばA列で「5」を選んでいれば、

ActiveCellの値である「5」と同じものがC列で検索され、最初に一致するC5セルが変数FoundCellに代入されます。

で、そのFoundCellに対して色を変えるマクロを実行すると、

FoundCell=Range(“C5”)なので、C5セルの色が変わります。
値が見つからない場合の処理

上記のようなコードでもし値が見つからない場合、

もっともらしいエラーが出ますが、要するに「指定した値がない」というエラーです。

Findメソッドで検索値が見付けられない場合、「Nothing」という値が返されます。
なので、発見できない場合の処理としてIf FoundCell Is Nothing Thenを記述します。
検索値がNothingかどうかを判定する時は、「=」ではなく「Is」を使います(そういうルールです)。
なので、発見できない場合の処理としてIf FoundCell Is Nothing Thenを記述します。
検索値がNothingかどうかを判定する時は、「=」ではなく「Is」を使います(そういうルールです)。

今回は見つからない場合何もしないことにして、そのままElseを置き、その下に色を変えるコードを置いて、End Ifで閉じます。

これで検索値が見つからない場合何もせず、エラーも出ないマクロとなります。
' vba
Dim FoundCell
' ActiveCellの値をC1~14で検索
Set FoundCell = Range("C1:C14").Find(ActiveCell.Value)
If FoundCell Is Nothing Then' 一致しない場合
Else
' 検索して見付けたセルにアクション
FoundCell.Interior.ColorIndex = 20
End If

やりたいことから方法を探すエクセルExcel操作・関数・VBA(マクロ)逆引きまとめ
逆引き(やりたいことから探す)Excel記事まとめ

関数・演算子・メソッド・プロパティ名から探すExcel/VBA(マクロ)使い方・組み合わせ方まとめ
こちらはExcelやメソッドの諸機能を、機能の名称から探せるまとめ記事です。
コメント