VBAで
・シート上の文字列を検索
できます!
VBAコード
ここでは例として、
・シート「sample」上の文字列「佐藤」を検索
します。
※検索結果として「設定されているセル(例:C3など)」と「そのセルに設定されている値」を取得します。
※検索結果をDictionaryへ設定します。
※検索結果(=Dictionaryの内容)をイミディエイトウィンドウへ出力します。
Option Explicit
Sub sample()
Dim dicResult As Object
Dim findStr As String
Dim ws As Worksheet
Dim resultRange As Range
Dim address As String
Dim arrAddress As Variant
Dim resultRangeStr As String
Dim key As Variant
Set dicResult = CreateObject("Scripting.Dictionary")
'検索対象の文字列を指定
findStr = "佐藤"
'検索対象のシートを指定
Set ws = Worksheets("sample")
'検索を実行(1回目)
Set resultRange = ws.Cells.Find(What:=findStr, LookIn:=xlValues, LookAt:=xlPart)
'検索を実行(最後まで繰り返し)
Do While Not (resultRange Is Nothing)
'見つかったセルのアドレスを取得(例:C$3など)
address = resultRange.address(RowAbsolute:=True, ColumnAbsolute:=False)
'見つかったセルを取得(例:C3など)
resultRangeStr = Split(address, "$")(0) & resultRange.Row
'見つかったセルが既にDictionaryに設定済みの場合はLoopを抜ける
If dicResult.Exists(resultRangeStr) Then
Exit Do
End If
'見つかったセルの情報をDictionaryへ設定
dicResult.Add resultRangeStr, resultRange.Value
'次を検索
Set resultRange = ws.Cells.FindNext(After:=resultRange)
Loop
'検索結果(=Dictionaryの内容)をイミディエイトウィンドウへ出力
If dicResult.Count <> 0 Then
For Each key In dicResult.Keys
Debug.Print key & "," & dicResult(key)
Next
Else
MsgBox "指定した文字列は存在しませんでした。"
End If
End Sub
実行結果
シート上の文字列を検索できました。
※検索結果として「設定されているセル(例:C3など)」と「そのセルに設定されている値」を取得できました。
※検索結果をイミディエイトウィンドウへ出力できました。
参考①
上記のVBAコードは以下の記事を参考にして作成しました。
参考②
シート上の文字列を置換することもできます。
詳細は以下の記事をご確認ください。
参考③
上記のVBAコードで使用している以下の詳細は、公式サイトをご確認ください。
●「Worksheetオブジェクト」の「Cells」プロパティ
●「Range」オブジェクトの「Find」メソッド
●「Range」オブジェクトの「FindNext」メソッド
●「Dictionary」オブジェクト