[Excel VBA] 文字列検索し、その結果をAddressかValueで返す。オフセット付き [Excel VBA]
文字列を検索し、見つかったRangeを戻す関数。 オフセットを入れられるようにして、見つかった文字から RowでLoopさせたりするときを目的とした関数。 アドレスが欲しい場合、Rangeで戻しているので、 fnFind("検索文字").address が使える。 Function fnFind(KeyWord As String _ , Optional ofstR As Long = 0, Optional ofstC As Long = 0) As Range ' 2020/10/24 Sanono ' 文字列を検索し、見つかったセルを Rangeで返す。 ' アドレスが必要な場合 .adderss をつける。指定がない場合Valueが戻る ' Row,Columnのオフセットを指定できるようにして、 ' 検索文字からのRow,ColumnでLoop用いることを想定 ' Keyword : 検索文字 ' area : 検索範囲 ' ofstR : Row 方向のオフセット ' ofstC : Column 方向のオフセット Dim rng As Range Dim ret As Integer Set rng = Cells.Find(What:=KeyWord, After:=ActiveCell, LookIn:=xlValues, LookAt:= _ xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True _ , MatchByte:=False, SearchFormat:=False) If rng Is Nothing Then ret = MsgBox("検索文字[" & KeyWord & "]が見つかりません、終了します。" & vbCrLf _ & " キャンセルでデバックモード", vbOKCancel) If ret = vbOK Then End End If Stop Set fnFind = rng Else Set fnFind = rng.Offset(ofstR, ofstC) End If End Function Sub test_fnFind() Dim tmp As String tmp = fnFind("A2") Debug.Print tmp Debug.Print fnFind("A2").Address Debug.Print fnFind("X2") End Sub
タグ:Excel,VBA
コメント 0