ULALA'Sブログ

ULALA'Sブログ

2020年08月23日
XML
カテゴリ: VBA
​ ​今回は実務でVBAを利用するときにも
使用頻度が高いものを学ぼうと思う。


①Find


指定した語句がどこに存在するか(しないか)を
​調べる関数。シート内容は以下とした。
「検索する語句」欄に記載された語句が、
B2~E6の中に存在するかを調べる。
※全角



ソース
​​​ Sub searchWords()​​​
​​​​​     Dim result As Range ​​​​​
Set result = Range ("B2:E6"). Find ( LookAt := xlWhole , What := Range ("G3"). Value )

​​​​​ If result Is Nothing Then
MsgBox ("見つかりませんでした")
End
​End If​​​​ ​​


​' 見つかったセルを選択状態にする​
​result.Select​

​     MsgBox ("見つかりました")​
​End Sub​

結果1

オプションに  SearchOrder:=xlByRows

を指定した場合( E2セルがヒット )
行検索になるので、2行目→3行目→4行目・・
の順に検索。




結果2

オプションに SearchOrder:=xlByColumns
を指定した場合( B5セルがヒット )
列検索になるのでB列→C列→D列・・
の順に検索。




補足

「Ctrl+F」等で検索した場合、直前の検索オプションが
保持されるので、VBAに限らず、エクセルの
検索
についても ​ ​SearchOrder:=xlByColumns が
​適用された状態で検索される。
​​




Findに指定できるオプションは以下。
※順不同
 What以外は任意

「What:=」検索する語句を指定(必須)
「After:=」ここに指定したセルの次から検索開始
「LookIn:=」検索する対象を指定
「LookAt:=」一致条件を指定(完全一致、部分一致)
「SearchOrder:=」検索方向を指定(右方向、下方向)
「SearchDirection:=」検索の向きを指定(次、前)
「MatchCase:=」大文字小文字を区別するかを指定
「MatchByte:=」半角全角を区別するかを指定
「SeatchFormat:=」書式を検索条件に含めるかを指定


​テキストでは、任意だけど指定しておいた方が
良いオプションとして
​​​ 「LookAt:=」を挙げている。

上記補足でも記載したが、VBAによる検索時に
指定しなかった場合、前回の検索時の状態を引き継ぐ為、
検索範囲や内容によって見つかったセルの場所が
変わってしまう可能性があるから、ということ。

LookAtに限らず他のオプションについても指定
しない場合は前回検索状態を引き継いていると思うのだが、
なぜか テキストではLookAtは指定しておいた方が安全、
と記載 されている。 (それは理解できるので良しとする、、)

そのくせ「 LookAtはコード簡略化の為省略して解説 します。」
とある、、

自身が主催する資格試験の公式テストにもかかわらず
紙面を割かずに飛ばすとはこれいかに?

正直にいうと、 資格が取得できたらさっさと別の
VBA参考書を元に基礎を積み上げていくことをお勧めしたい 。

それまでは我慢してテキストの内容を把握して
問題に備えられると良いかと思う、、
​​​





お気に入りの記事を「いいね!」で応援しよう

最終更新日  2020年08月23日 21時28分40秒
コメント(0) | コメントを書く


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

PR

×

プロフィール

ULALA13

ULALA13

カレンダー


© Rakuten Group, Inc.
X
Design a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: