Findメソッド実行後、さらに続けて検索するには、FindNextメソッドを使います。
|
Range オブジェクト.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)
・引数
・戻り値
Range オブジェクト.FindNext(After)
・引数
After (省略可)バリアント型 (Variant): 行のときは右、列のときは下のセルから検索を開始。省略すると、セル範囲の左上隅のセルになる
・戻り値
見つかった先頭のセルを表すRange オブジェクト
検索範囲の最後になると、最初から検索を繰り返します。
検索する市町村に入力し、「検索」ボタンをクリックすると、結果をF列に、アドレスをG列に表示します。
Option Explicit
'検索実行
Private Sub MyFindData(sf As String)
Dim lrow As Long
Dim trange As Range
Dim sadr As String
lrow = 4
'市町村を検索
Set trange = Range("C2", "C1948").Find(sf)
If Not trange Is Nothing Then
'見つかれば、最初に見つかったアドレスを保存
sadr = trange.Address
Do
'見つかった位置に移動
trange.Select
'データ表示
Cells(lrow, 6) = trange.Value
'見つかった位置のアドレス
Cells(lrow, 7) = trange.Address
lrow = lrow + 1
'次を検索
Set trange = Range("C2", "C1948").FindNext(trange)
'最初に見つかったアドレスと同じならばループを抜ける
If sadr = trange.Address Then
Exit Do
End If
Loop
End If
'開始位置へ
Range("F2").Select
End Sub
Private Sub CommandButton1_Click()
If Range("F2") = "" Then
MsgBox "検索する市町村を入力してください。"
Exit Sub
Else
'検索結果セルを消去
Range("F4", "G100").Clear
'検索実行
MyFindData (Range("F2"))
End If
End Sub
■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します