1.Findメソッドを使ってセルを検索する
セルに入力されている文字や数字を検索するには、RangeオブジェクトのFindメソッドを使います。このメソッドの機能は、{Ctrl}キー+{F}キーで行うExcelのセル検索とほぼ同じです。
Findメソッドとは
Findメソッドは、ワークシート内のセルに入力された内容を検索するメソッドです。Findメソッドを実行するときは、全ての引数を指定するのが基本です。Findメソッドの引数は前回検索したときの設定内容がそのまま使用されるため、引数を省略すると期待通りの結果が得られないことがあるためです。
図 1-1
Findメソッドの使い方
Rangeオブジェクト
.
Find
(
引数
).
メソッド
/
プロパティ
セルを検索します。
・
Rangeオブジェクト
ワークシート内の検索範囲を記述します。Cellsを記述するとワークシート全体が対象、ワークシートの一部分を検索するときはRangeプロパティで範囲を記述します。
・
引数
指定できる引数の種類は、下の表の通りです。位置指定で記述する場合は表の順序通りに、名前指定で記述する場合は「What:="A"」のように記述します。
・
メソッド/プロパティ
見つかったセルを操作するときに記述します。Rangeオブジェクトのメソッドやプロパティが使用できます。
◆
戻り値
見つかったとき …見つかったセルのRangeオブジェクトが返ります。
見つからないとき…Nothingが返ります。
【記述例】
「VBA」という単語が含まれるセルを検索します。
Cells.
Find
(What:="VBA" _
, After:=ActiveCell _
, LookIn:=xlValues _
, LookAt:=xlPart _
, SearchOrder:=xlByColumns _
, SearchDirection:=xlNext _
, MatchCase:=False _
, MatchByte:=False _
, SearchFormat:=False).Activate
表 1-1
Findメソッドの引数
引数名
内容
使用方法
What
必須
検索内容
文字や数値など、検索する内容を指定します。
この引数のみ必須です。
After
検索開始位置
検索を開始するセルを、Rangeオブジェクトで指定します。省略時は、検索範囲の左上のセルです。ActiveCellを指定すると、次にヒットするセルを検索します。
検索範囲を限定するときにAfterを指定するときは、検索範囲内のセルを指定しなくてはなりません。
LookIn
検索部分
セルのどの部分で検索するかの設定です。XlFindLookIn列挙の内容で指定します。
xlValues …セルに入力されている値
xlFormulas…セルに入力されている数式
xlComments…セルのコメント
LookAt
比較方法
部分一致と完全に一致のどちらで検索するかの設定です。XlLookAt列挙の内容で指定します。
xlPart …部分一致
xlWhole…完全一致
SearchOrder
行列方向
行と列のどちらに向かって検索するかの設定です。XlSearchOrder列挙の内容で指定します。引数名は順序的な意味(Order)ですが、検索ボックスの「検索方向」に相当します。
xlByRows …行方向
xlByColumns…列方向
SearchDirection
検索順序
手前と後ろのどちらに向かって検索するかの設定です。XlSearchDirection列挙の内容で指定します。引数名は方向的な意味(Direction)ですが、検索ボックスの「方向」ではありません。
xlNext …後ろ(次)を検索
xlPrevious…手前を検察
MatchCase
大文字/小文字の区別
アルファベットの大文字と小文字を区別するかどうかの設定です。省略した場合は、Falseが有効になります。
True …区別する
False…区別しない
既定値
MatchByte
全角/全角の区別
全角文字と半角文字を区別するかどうかの設定です。
True …区別する
False…区別しない
SearchFormat
書式検索
Application.FindFormatに設定された内容を元に、書式の検索を行うかどうかの設定です。
True …書式検索を行う
False…書式検索を行わない
図 1-2
検索と置換ダイアログボックスとFindメソッドの対応図
Findメソッドの使用例
次のリストは、セルの内容を検索するプログラムの作成例です。7〜15行目で、Findメソッドによるセル検索の処理を行っています。Findメソッドの引数は、全ての種類を指定しました。検索の内容は、リスト下の図と同じです。
リスト 1-1
セルの内容を検索するプログラム
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sheet1
Option Explicit
Sub CellsFindSample()
Dim oRange As Range
Set oRange = Cells.
Find
(What:="阿武隈" _
, After:=ActiveCell _
, LookIn:=xlFormulas _
, LookAt:=xlPart _
, SearchOrder:=xlByRows _
, SearchDirection:=xlNext _
, MatchCase:=False _
, MatchByte:=False _
, SearchFormat:=False)
oRange.Activate
End Sub
サンプルダウンロード
図 1-3
検索の内容
◆実行結果
サンプルプログラム「CellsFindSample」を実行すると、表示内容に「阿武隈」という単語が含まれるセルを検索し、見つかったセルにカーソルを移動します。
Sheet1の表の中には、「阿武隈」という文字が含まれるが複数あります。プログラムを何度も実行すると、そのつど新しいセルを見つけ出してカーソルを移動します。
図 1-4
サンプルプログラムの実行例
エクセルマクロTips
セル検索編
◆セルの検索
1.Findメソッドを使ってセルを検索する
・Findメソッドの基本と構文
1-(1).文字や数字を検索する
・FindメソッドとLookIn:=xlValues
1-(2).数式を検索する
・FindメソッドとLookIn:=xlFormulas
1-(3).コメントを検索する
・FindメソッドとLookIn:=xlComments
1-(4).未入力のセルやコメントを検索する
・FindメソッドとWhat:=vbNullString
1-(5).検索結果を調べる
・FindメソッドとNothing
1-(6).ワークシート全体を検索対象にする
・FindメソッドとCells
1-(7).ワークシートの特定の範囲を検索する
・FindメソッドとRange/Rows/Columsns
1-(8).行を優先?それとも列を優先?
・FindメソッドとSearchOrder
1-(9).前に進む?後ろに戻る?
・FindメソッドとSearchDirection
1-(10).大文字と小文字を区別してセルを検索する
・FindメソッドとMatchCase
1-(11).全角と半角を区別してセルを検索する
・FindメソッドとMatchByte
1-(12).検索内容と完全に一致するセルを検索する
・FindメソッドとLookAt:=xlWhole
1-(13).検索内容が含まれるセルを検索する
・FindメソッドとLookAt:=xlPart
1-(14). ワークシートを指定してセルを検索する
・WorksheetsとFindメソッド
1-(15).条件と一致する最初のセルを検索する
・FindメソッドとSearchDirection:=xlNext
1-(16).条件と一致する最後のセルを検索する
・FindメソッドとSearchDirection:=xlPrevious
1-(17).あいまいな条件で検索する
・Findメソッドとワイルドカード文字
1-(18).日付や時刻でセルを検索する
・FindメソッドとLookInと日付/時刻
2.次のセルを検索する
・FindNextメソッド
3.手前のセルを検索する
・FindPreviosメソッド
4.不要な行/列を全て削除する
・FindメソッドとDeleteメソッド
5.検索するセルの範囲を自動的に決める
・FindメソッドとUsedRangeプロパティ
◆ワークシート関数でのセル検索
1.VLookupを使ってコード値から名前を取得する
・VLookUpメソッド
1-(1).VLookupを使ってあいまい検索をする
・VLookupとワイルドカード文字
3.目的のデータが何個あるかを調べる
・CountIfメソッド
■ブック・シート操作編
■セル・行・列操作編
■セル検索編
■Applicationオブジェクト・イベント編
■オートシェイプ操作編
■グラフ操作編
■応用技・その他編
■サイト内を検索
Happy! Happy! Islandその他のコンテンツ
■
VBAプログラミング系
Access VBAのTipsとサンプル
Excel VBA(エクセルマクロ)のTipsとサンプル
VBScript/JScriptのTipsとサンプル
プログラミング基礎・入門
■
入門と使い方
Access入門と使い方講座97~2003/2007/2010/2013
Access VBAプログラミング入門 2013/2010/2007/2003
Excel入門と使い方講座2013/2010/2007
■
ダウンロードコーナー
AccessとExcelのフリーソフト
■
その他
質問受け付けコーナー「管理人に聞いてみよう♪」
BBS過去ログ広場
HTMLの書き方
管理人プロフィール
┗
twitter(外部サイト)
管理人へメール
■
別館(海外向けサイト)
Excel Games and Access Games
VBAプログラミング&Tips集の
"Happy! Happy! Island"トップページへ
[PR]管理人が心を込めて書いた本
■
最速攻略 AccessVBAサンプル大全集
Access 2013/2010/2007対応版
■
速効!ビジネスPC Accessマクロ&VBA
Access2013/2010/2007対応
■
最速攻略Accessクエリ テクニック大全集
Access2013/2010/2007対応
■
AccessVBAマクロ超入門講座 Access2010/2007対応
■
ExcelVBA超入門講座 Excel2010/2007対応
■
ExcelVBAでできる RPGゲーム作成入門
■
[改訂新版]実践COBOLプログラミング入門
■
最速攻略 VBScriptサンプル大全集
Windows7/Vista/XP/2000対応
(
アマゾン
へジャンプします)
[PR]注目の情報
転職成功の秘訣はサイトに公開されない求人にあった
採用人数が少ない・専門性が高い・競合他社に知られたくないなど、魅力的な求人情報ほど一般には公開できないのです。
株デビューするなら SBI証券!
業界屈指の格安手数料と業界最高水準のサービスで口座数はネット証券 No.1!口座開設料・管理料は無料。
GDOゴルフショップ
ゴルフ用品のオンラインメガストア。品揃え10万点!
アスタリフトコラーゲンドリンク
毎日続けるものだから・・まとめ買いで最大10%OFF!集中コラーゲンケアで、ハリと潤いの溢れる毎日へ。
[リンク]IT関連情報サイトなど
gihyo.jp
技術評論社提供のIT関連コンテンツサイト
Copyright(C) 1999-2015
結城圭介
(Ver.3.51) All rights reserved