Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9658 / 13646 ツリー ←次へ | 前へ→

【26153】VBA セル位置の取得 セボン 05/6/24(金) 18:37 質問[未読]
【26154】Re:VBA セル位置の取得 Nossori 05/6/24(金) 19:02 発言[未読]
【26155】Re:VBA セル位置の取得 ichinose 05/6/24(金) 19:03 発言[未読]
【26206】Re:VBA セル位置の取得 セボン 05/6/27(月) 11:01 お礼[未読]

【26153】VBA セル位置の取得
質問  セボン E-MAIL  - 05/6/24(金) 18:37 -

引用なし
パスワード
   1シート上のあるデータを検索して、そのデータが存在しているセル位置(R1,C1)を取得する方法を教えてください。※アクティブシェルの位置取得ではありません。
例えば、”a2014”という数値があるか検索、データがあることが判明し、かつそのセル位置を取得したいのです。
よろしくお願いします。

【26154】Re:VBA セル位置の取得
発言  Nossori  - 05/6/24(金) 19:02 -

引用なし
パスワード
   ▼セボン さん:
今晩は
26033に有りますよ。
一度ご覧になっては?

【26155】Re:VBA セル位置の取得
発言  ichinose  - 05/6/24(金) 19:03 -

引用なし
パスワード
   ▼セボン さん:
こんばんは。

>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

確認してみて下さい。

【26206】Re:VBA セル位置の取得
お礼  セボン  - 05/6/27(月) 11:01 -

引用なし
パスワード
   有難うございました、セル位置の取得が出来ました。
また質問させて頂くときは宜しくお願いします。

▼ichinose さん:
>▼セボン さん:
>こんばんは。
>
>>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
>
>確認してみて下さい。

9658 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free