• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL VBAでの 文字列検索)

EXCEL VBAで文字列検索の方法

このQ&Aのポイント
  • EXCELのVBAを使用して、セル内の文字列を部分一致で検索する方法について教えてください。
  • 検索対象シートを選択する必要なく、堅くならない検索方法があれば教えてください。
  • Selection.FindとCells.FindNextを使用した場合、PGの動きが堅くなってしまいます。より効率的な文字列検索方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

>PGの動きが堅くなってしまいます。・・・ 質問の意味を理解しているか疑問ですが、Selectionを問題にされているのでしょうか。 また、検索の進行を制御しないとFindNextだけでは終わらなくなります。 下は検索範囲を選択しないでマクロ内で定義して検索しています。検索文字もInputBoxを使えば任意に指定できます。検索して何を行なうか分からないのでメッセージを出しています。 また、少し変形すれば、複数シートの検索も可能ですね。そういう意味では柔らかくなっている? ご参考に。(Excel97です) Sub Kensaku()   Dim schSheet As String '検索シート   Dim schColumns As String '検索列   Dim schRg As Range '検索範囲   Dim schWhat As String '検索文字   Dim fndCell As Range '検索したセル   Dim fstRow As Long '検索したセルの行   Dim fstColumn As Integer '検索したセルの列   'Sheet1の列A~Cで文字『A』を探す例です   schSheet = "Sheet1"   schColumns = "A:C"   schWhat = "A" '= InputBox("検索文字を入力して下さい。")   '検索範囲をセット   Set schRg = Worksheets(schSheet).Columns(schColumns)   'アクティブセルを検索範囲の使っている最後のセルにする   Set fndCell = schRg.SpecialCells(xlLastCell)   '検索開始   Set fndCell = schRg.Find(What:=schWhat, after:=fndCell, LookIn:=xlFormulas, _         LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _         MatchCase:=False, MatchByte:=False)   '見つかった!   If Not (fndCell Is Nothing) Then     '最初に見つかったセルの行、列番号を記憶     fstRow = fndCell.Row     fstColumn = fndCell.Column     Do       MsgBox "ありました! " & fndCell.Address       Set fndCell = schRg.FindNext(after:=fndCell)       '最初に見つかったセルを再度見つけるまで続ける     Loop Until (fndCell.Row = fstRow) And (fndCell.Column = fstColumn)   End If End Sub

Neigh
質問者

お礼

ごめんなさいぃ。3つも回答していただいており、すべて良回答 だったのに、ここのサイトの点の渡し方がわからず、質問を 一つ良回答点をさしあげることができませんでした ごめんなさいm(__)m