Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5059 / 13646 ツリー ←次へ | 前へ→

【52751】複数のシートから値を検索 tomi 07/11/30(金) 19:51 質問[未読]
【52752】Re:複数のシートから値を検索 かみちゃん 07/11/30(金) 20:00 発言[未読]
【52755】Re:複数のシートから値を検索 Mariko 07/12/1(土) 15:02 回答[未読]
【52835】Re:複数のシートから値を検索 tomi 07/12/5(水) 15:15 お礼[未読]

【52751】複数のシートから値を検索
質問  tomi  - 07/11/30(金) 19:51 -

引用なし
パスワード
   複数のシートから値を検索するマクロを書きましたが、うまくいきません。

マクロの記録で処理を複写したところ


Dim f as String
f=cells(1,3).Value

Sheets("sheet1").Select
  ActiveWindow.ScrollWorkbookTabs Position:=xlLast
  Sheets(Array("sheet1", "sheet2", "sheet3", "sheet4", "sheet5", "sheet6")).Select
  Sheets("sheet1").Activate

  Cells.Find(What:=f, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
    :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
    False, MatchByte:=False, SearchFormat:=False).Activate

となりましたが、それをVBEに貼り付けて実行するとエラーがでます。

エラーの内容は
オブジェクト変数または With ブロック変数が設定されていません。(Error 91)
です。

申し訳ございませんが、VBAで複数シートから値を検索するロジックをご存知の方がいましたら、ご教授願います。

【52752】Re:複数のシートから値を検索
発言  かみちゃん  - 07/11/30(金) 20:00 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>エラーの内容は
>オブジェクト変数または With ブロック変数が設定されていません。(Error 91)
>です。

検索した結果見つからなかったら、そういうエラーになります。
ただ、
After:=ActiveCell
の部分を見ると、何がしたいのか、よくわかりませんし、どれかのシートで見つ
かった後、どうしたいのかもわかのません。

> VBAで複数シートから値を検索するロジック

おおむね以下のような感じでしょうか。

Sub Sample()
 Dim ws As Worksheet
 Dim FR As Range
 Dim f as String
 
 f = Cells(1, 3).Value 'マクロ実行時のアクティブセルはどこか?
 
 For Each ws In Sheets(Array("Sheet1", "Sheet2"))
  ws.Activate
  Set FR = Cells.Find(What:=f, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
    :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
    False, MatchByte:=False, SearchFormat:=False)
  If FR Is Nothing Then
   FR.Activate
   MsgBox FR.Address(, , , True)
  Else
   MsgBox ws.Name & "にはありません"
  End If
 Next
End Sub

【52755】Re:複数のシートから値を検索
回答  Mariko  - 07/12/1(土) 15:02 -

引用なし
パスワード
   ▼tomi さん
こんにちはMarikoです。
こんな感じで作成しました。
Dim i As Integer
 Dim R As Range
 Dim myR As Range
  For i = 1 To Sheets.Count
   With Sheets(i)
    For Each R In Sheets(i).UsedRange
     If R.Value = Sheets(1).Range("C1").Value Then
      msg = msg & "Sheets" & i & "-" & R.Address(0, 0) & vbCrLf
     End If
    Next
   End With
  Next i
MsgBox msg

【52835】Re:複数のシートから値を検索
お礼  tomi  - 07/12/5(水) 15:15 -

引用なし
パスワード
   かみちゃんさん、Marikoさん

返信が遅くなりまして大変申し訳ございません。
大変参考になりました。
ありがとうございました。

5059 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free