アプリ版:「スタンプのみでお礼する」機能のリリースについて

セル内の文字列を部分一致で検索したいのですが、
下記の構文だと、検索対象シートを選択しなくてはならないため、
PGの動きが堅くなってしまいます。何かいい方法をご存知の方、
教えてください。

Selection.Find(What:=key, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, MatchByte:=False).Activate

Cells.FindNext(After:=ActiveCell).Activate

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/01/21 23:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!