検索
Sub edit_1()
Cells.Find(What:="AAA", _
'検索する文字列を指定します。
After:=ActiveCell, _
'検索開始位置です。
'省略すると最左上からになります。
LookIn:=xlFormulas, _
'対象を数式に指定します
'引数は他にxlValues(値)
'xlComments(コメント)があります。
LookAt:=xlPart, _
'完全に同一のセルでなくても検索させます。
'引数は他にxlWhole(完全に同一のセルだけ検索)があります。
SearchOrder:=xlByColumns, _
'検索方向を行(左から右)に指定します。
'引数は他にxlByRows(列)(上から下)があります。
SearchDirection:=xlNext, _
'次を検索します
'引数は他にxlPrevious(前を検索)があります。
'xlPreviousにするとSerchOrderが逆(右から左or下から上)になります
MatchCase:=True, _
'大文字と小文字を区別するようにします
MatchByte:=True) .Activate
'全角と半角を区別するようにします
End Sub
上の例は1つのみを検索する場合ですが複数検索する場合は
FindNext(次を検索)メソッドまたはFindPrevious(前を検索)で次を検索します
FindNextなどは一通り検索終わると最初に戻りますので以下のようにしないと
無限ループとなります。
Sub edit_search2()
'変数宣言
Dim myCell As Range
Dim firstAddres As Range
Set myCell = Cells.Find("AAA", Lookin:=xlValue)
'値がAAAのセルを検索してmyCellに代入します
If Not myCell Is Nothing Then
'myCellがあれば
firstAddress = myCell.Address
'最初に見つかったセルをfirstAddeesに代入
Do
Set myCell = .FindNext(myCell)
'次を検索
Loop While Not myCell Is Nothing And myCell.Address <> firstAddress
'見つかったセルが最初のセルと同一かチェック
End If
End Sub
Cyber Click!