特殊・他 findメソッド(バージョンによっては使えない)
※より実装に近く表示させる為、コードの改行を避けています。スマホ等で閲覧される際は向きを変えてご覧ください。
※実装するバージョンによってはバージョンアップの仕様により動作しないコードもあります。実装には動作確認の上ご使用下さい。
'※難しいメソッドに思えますが、意外に簡単です ' 'ヘルプにもありますが、ヘルプの方が判り難いかもしれません。 '対象 Rangeオブジェクト(つまりエクセルのセル) '構文 expression.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte) 'expression 検索の対象となるRange オブジェクトを指定(捜される側の範囲) '引数What 省略不可、(バリアント型 )検索する値を指定。 '引数After 省略可能、(バリアント型 )検索を開始するセル。単一セルを指定。検索は指定したセルの次から始まる。指定したセル自体は、検索が範囲全体を一度検索して戻ってくるまで検索されません。 '省略すると 対象セル範囲の左上端のセルが検索の開始点になる。 '引数LookIn 省略可能、(バリアント型 )セル内の何を対象とするのか指定。 ' xlFormulas 数式 LookIn:=xlValues ' xlValues 値 ' xlComments コメント '引数LookAt 省略可能、(バリアント型 )検索方法の指定。 ' xlPart 一部分でも含まれていたら LookAt:=xlPart ' xlWhole 完全同一値のみ '省略すると xlPartとなります。 '引数SearchOrder 省略可能、(バリアント型 )検索方向の指定。 ' xlByColumns 列 SearchOrder:=xlByRows ' xlByRows 行 '引数SearchDirection 省略可能、(バリアント型 )検索始点の決定。 ' xlNext 次から SearchDirection:=xlNext ' xlPrevious 前から '省略すると xlNextとなります。 '引数MatchCase 省略可能、(バリアント型 )大文字と小文字の区別。 ' TRUE 区別する MatchCase:=False ' FALSE 区別しない '省略すると Falseとなります。 '引数MatchByte 省略可能、(バリアント型 )半角と全角の区別。 ' TRUE 区別する MatchByte:=False ' FALSE 区別しない '省略すると Falseとなります。 '返値 検索をし最初に見つかったセルを返します。 '例 .Find(What:="2001", After:=ActiveCell, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False) ' '使用例 Dim FoundDate As Variant Set FoundDate = Worksheet("対象").Columns("A:A").Find(What:="1999/4/5") '① If FoundDate Is Nothing Then '② MsgBox "nothing " Else Worksheet("記録").Range("a1").Value = FoundDate.Offset(0, 1).Value '③ End If '解説 上記の例にて、①万一検索対象の「Worksheet.Columns("AD:AD")」セル内に「1999/4/5 12:00:01」の情報値が入っていた場合、必要引数をすべて省略しているため見つかったセル③を返します。しかし、引数LookAtのxlWholeを指定した場合は②Nothingということになります。時間を扱う場合には注意が必要です。 ' でも、大抵の場合全ての引数は省略①してもよいでしょう。 ' 又③では「見つかった場合そのセルのすぐ右横のセルの内容を記録する」になってます。使い方によっては大変便利なメソッドです。 '注意 引数 LookIn、LookAt、SearchOrder、および MatchByte の設定は、このメソッドが使われるたびに保存されます。次にこのメソッドを使うときに、これらの引数の指定を省略すると、保存された設定が使われます。 |