文字列の検索と取得

文字列の検索から、値を取得するVBA。
下記のコードでは先頭行より検索したい文字列を取得する。

以下、サンプルコードと説明。

 


 

Sub Mojikensaku()

Dim SCsh As String ‘検索するシート
Dim SCrow As String ‘検索する行
Dim SCcol As String ‘検索する列
Dim SCrg As Range ‘検索範囲
Dim SCmoji As String ‘検索文字
Dim Fcell As Range ‘取得セル
Dim Frow As Long ‘取得セルの行
Dim Fcol As Integer ‘取得セルの列
Dim Fvalue As String ‘取得セルの値

SCsh = “Sheet1”
SCcol = “A:Z”
SCmoji = InputBox(“検索する文字を入力してください”)
上記はSheet1の列A~Zで文字列をInputboxを使用して探す例

Set SCrg = Worksheets(SCsh).Columns(SCcol) ‘検索範囲をセット(列で検索する場合)
‘行で検索する場合はSet SCrg = Worksheets(SCsh).Rows(SCrow)
Set Fcell = SCrg.SpecialCells(xlLastCell) ‘エクセルが認知している最終セルを取得(検索範囲)
注意書き:行やセル範囲に対して挿入や消去を行なった場合、SpecialCells(xlLastCell)は誤認する場合がある
フィルタで表示行を制限している場合、SpecialCells(xlLastCell)は表示されている中での最終セルを指す

検索を開始
Set Fcell = SCrg.Find(What:=SCmoji, after:=Fcell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, MatchByte:=False)

If Not (Fcell Is Nothing) Then

Frow = Fcell.Row
Fcol = Fcell.Column
Fvalue = Fcell.Value
見つかったセルの行、列番号、値を記憶しておく
特に検索結果に対しての追加VBAを必要としないのなら上記は不要

MsgBox “指定文字列を見つけました” & Fcell.Address
Set Fcell = SCrg.FindNext(after:=Fcell)

End If
End Sub