
ExcelVBA シート内で特定の文字列や値を検索し、そのセルの位置を取得したり、検索結果を活用して処理を自動化できます。使い方や注意点など、サンプルコードをもとに具体的に解説します。
2025年の目標は繰り返し作業に悩まされない年にしませんか? Excel VBAを活用した効率化がその第一歩
本サイト参考:Excel VBAで自動化するコードのベースを習得したい方におすすめの記事
目次
Excel VBA 文字列を検索してセルの位置を取得する|シーン
以下のシーンで利用します。
1.指定した値を含むセルの位置を調べる。
2.検索したセルに対して書式設定や値の変更を行う。
3.一覧表から特定のキーワードを含む行を抽出する。
4.複数のシートやブックにまたがる検索を自動化する。
Excel VBA 文字列を検索してセルの位置を取得する|基本構文
セルを検索するには Range.Find メソッドを使用します。
Dim foundCell As Range
Set foundCell = Range("A1:D10").Find(What:="検索する文字列", LookAt:=xlPart)
If Not foundCell Is Nothing Then
MsgBox "見つかったセルのアドレス: " & foundCell.Address
Else
MsgBox "検索した値は見つかりませんでした。"
End If
```
・What:="検索する文字列" → 検索する文字列や値
・LookAt:=xlPart → 部分一致(完全一致の場合は xlWhole を指定)
Excel VBA 文字列を検索してセルの位置を取得する|サンプルコード
Excel VBAで効率化の準備をしてみませんか?2025年をよりスムーズに過ごすための資格
基本的な文法やVBAの実践的な応用までを網羅的に学習できる方法は、ExcelVBAエキスパート資格の取得を目指すこと。学習を通して、より効率的に、着実に基礎を身につけることが可能です。資格取得すれば、スキルの証明にもなり、職場での評価アップにも繋がるため、勉強を進めるモチベーションにもなります。
本サイト参考:マクロ知識がないから「何から学べば良いのかわからない」という人におすすめの記事
Option Explicit
Sub SearchAll()
Dim ws As Worksheet
Dim searchRange As Range
Dim foundCell As Range
Dim firstAddress As String
Set ws = ThisWorkbook.Sheets("Sheet1")
Set searchRange = ws.Range("A:A") ' A列全体を検索対象にする
Set foundCell = searchRange.Find(What:="検索する文字列", LookAt:=xlPart)
If Not foundCell Is Nothing Then
firstAddress = foundCell.Address ' 最初の一致セルを記録
Do
foundCell.Interior.Color = RGB(255, 255, 0) ' 見つかったセルを黄色にする
Set foundCell = searchRange.FindNext(foundCell) ' 次の一致セルを検索
Loop While Not foundCell Is Nothing And foundCell.Address <> firstAddress
Else
MsgBox "検索した値は見つかりませんでした。"
End If
End Sub
FindNext を使用して検索結果を順番に取得
Do While ループで最初の検索結果に戻るまで繰り返す。
Interior.Color を変更して検索結果を強調表示
・ Find を使うと検索結果が Nothing の場合があるので If Not foundCell Is Nothing Then のチェックが必要
・ Find は 最後の検索条件を記憶しているため、意図しない動作を防ぐには Find の各引数を明示的に指定する。
・ FindNext を使用する場合、無限ループにならないよう firstAddress を記録してループを管理
Excel VBA 文字列を検索してセルの位置を取得する|まとめ
Find で 単一セル を検索、FindNext で複数一致を取得
LookAt:=xlWhole で 完全一致、LookAt:=xlPart で 部分一致
検索結果のセルを活用して、色を付けたり、データを処理できる。
Excel VBAで自動化するコードのベースを習得したい方におすすめ!
VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。
ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。
ExcelVBAエキスパートスタンダード
ExcelVBAの開発を仕事にする人が対象の問題集です。
Excel VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。