| 
    
     |  | ▼セボン さん: こんばんは。
 
 >1シート上のあるデータを検索して、そのデータが存在しているセル位置(R1,C1)を取得する方法を教えてください。※アクティブシェルの位置取得ではありません。
 >例えば、”a2014”という数値があるか検索、データがあることが判明し、かつそのセル位置を取得したいのです。
 >よろしくお願いします。
 
 
 Findメソッドを使用した例です。
 だいぶ前に作ったサブプロシジャーですが・・。
 アクティブシートが検索対象シートです。
 '=================================================
 Sub main()
 Dim f_value As Variant
 Dim find_cell As Range
 Dim cnt As Long
 cnt = 0
 f_value = "a2014" '検索する値を入れる"
 Set find_cell = get_findcell(f_value, ActiveSheet.Cells)
 Do While Not find_cell Is Nothing
 With find_cell
 MsgBox "見つかった : 行--" & .Row & " 列--" & .Column
 End With
 cnt = cnt + 1
 Set find_cell = get_findcell() '次の検索
 Loop
 MsgBox cnt & "個みつかりました"
 End Sub
 '==========================================================================
 Function get_findcell(Optional f_v As Variant = "", Optional rng As Range = Nothing, Optional 方法 As Long = 1) As Range
 '指定された値でセル範囲を検索し、該当するセルを取得する
 'input : f_v 検索する値
 '    rng 検索する範囲
 '    方法: :検索方法 1-完全一致 2-部分一致
 'output:get_findcell 見つかったセル(見つからなかったときはNothingが返る)
 Static 検索範囲 As Range
 Static 最初に見つかったセル As Range
 Static 直前に見つかったセル As Range
 If Not rng Is Nothing Then
 Set 検索範囲 = rng
 End If
 If f_v <> "" Then
 Set get_findcell = 検索範囲.Find(f_v, , xlValue, 方法)
 If Not get_findcell Is Nothing Then
 Set 最初に見つかったセル = get_findcell
 Set 直前に見つかったセル = get_findcell
 End If
 Else
 Set get_findcell = 検索範囲.FindNext(直前に見つかったセル)
 If get_findcell.Address = 最初に見つかったセル.Address Then
 Set get_findcell = Nothing
 Else
 Set 直前に見つかったセル = get_findcell
 End If
 End If
 End Function
 
 確認してみて下さい。
 
 
 |  |