セル内の文字列を部分一致で検索したいのですが、
下記の構文だと、検索対象シートを選択しなくてはならないため、
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
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
ごめんなさいぃ。3つも回答していただいており、すべて良回答
だったのに、ここのサイトの点の渡し方がわからず、質問を
一つ良回答点をさしあげることができませんでした
ごめんなさいm(__)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルマクロで教えてください 2 2022/05/04 09:07
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
- Visual Basic(VBA) ワークブック内すべて検索 2 2022/12/20 20:13
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Visual Basic(VBA) VBA初心者です 検索した数字の行に色をつける 5 2023/02/13 14:22
- Visual Basic(VBA) Excle VBA Findメソッドについて 3 2022/07/15 13:56
- Excel(エクセル) Excelでの検索結果を含む行だけを表示させたい 5 2023/03/10 17:08
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SUMIF関数で、「ブランク以外を...
-
エクセル1行おきのセルを隣の...
-
エクセルで、指定の値よりも大...
-
文字列から英数字のみを抽出す...
-
EXCEL-同じ組み合わせになった回数
-
エクセルに入力後、別シートの...
-
自分の左隣のセル
-
エクセルで、A2のセルにA3...
-
セルを結合した時のエクセル集...
-
【Excel】4つとばしで合計する方法
-
excelで、空白を除いてデータを...
-
EXCELでマイナス値の入ったセル...
-
Excelで大量のセルに一気に関数...
-
エクセルで年月日から月日のみへ
-
検索関数を使って検索窓を作成...
-
エクセル、○が連続する回数を数...
-
条件付き書式の色付きセルのカ...
-
エラー「#REF」の箇所を置き換...
-
Excelで離れた位置のAVERAGEを...
-
週の労働時間を計算するエクセル
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SUMIF関数で、「ブランク以外を...
-
文字列から英数字のみを抽出す...
-
エクセル1行おきのセルを隣の...
-
エクセルで、指定の値よりも大...
-
自分の左隣のセル
-
セルを結合した時のエクセル集...
-
Excelで大量のセルに一気に関数...
-
エクセルで、A2のセルにA3...
-
excelで、空白を除いてデータを...
-
エクセルで特定のセル内にだけ...
-
週の労働時間を計算するエクセル
-
エクセルで年月日から月日のみへ
-
条件付き書式の色付きセルのカ...
-
EXCELのcountif関数での大文字...
-
EXCELでマイナス値の入ったセル...
-
エクセルに入力後、別シートの...
-
【Excel】4つとばしで合計する方法
-
同一セル内の重複文字を削除し...
-
エクセルでエンターを押すと任...
-
エラー「#REF」の箇所を置き換...
おすすめ情報