![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
いつもお世話になっております
遣りたいこと
ワークシート内 検索 HITしたら
すべて選択する
以前頂戴しましたコードを
For Each wS In ActiveWorkbook.Worksheets 全部追加
Set myrng = wS.Range("B3").CurrentRegion ws追加
Set c = wS.Cells.FindNext(after:=c) ws追加
Set Target = Union(Target, c) この部分で黄色反転します。
わかる方教えてくれませんでしょぅか
Sub azee2r()
Dim myrng As Range
Dim c As Range, Target As Range
Dim myStr
Dim Fall As String
Dim wS As Worksheet
For Each wS In ActiveWorkbook.Worksheets
Set myrng = wS.Range("B3").CurrentRegion
For Each myStr In Array("BBB", "AAA")
Set c = myrng.Find(what:=myStr, LookAt:=xlWhole)
If Not c Is Nothing Then
Fall = c.Address
Do
If Target Is Nothing Then
Set Target = c
Else
Set Target = Union(Target, c)
End If
Set c = wS.Cells.FindNext(after:=c)
Loop Until c.Address = Fall
If Not Target Is Nothing Then
Target.Select
End If
End If
Next
Next
End Sub
No.4ベストアンサー
- 回答日時:
だいぶお疲れのようですので、ご質問のコードをローカルで確認して
添削してみました。
Excelのオブジェクト操作や、selectメソッドなど、、判り難いですね。
Dim myrng As Range
Dim c As Range, Target As Range
Dim myStr
Dim Fall As String
Dim wS As Worksheet
For Each wS In ActiveWorkbook.Worksheets
Set myrng = wS.Range("B3").CurrentRegion
For Each myStr In Array("BBB", "AAA")
Set c = myrng.Find(what:=myStr, LookAt:=xlWhole)
If Not c Is Nothing Then
Fall = c.Address
'シート選択用変数宣言
Dim sh_name(), n As Integer
Do
If Target Is Nothing Then
Set Target = c
'該当シート(Targetが見つかったシート)選択用配列
ReDim Preserve sh_name(n)
sh_name(n) = wS.Name
n = n + 1
'-----
Else
Set Target = Union(Target, c)
End If
'未使用(空白)セルに囲まれた塊範囲内をFindNext
Set c = myrng.FindNext(after:=c)
Loop Until c.Address = Fall
If Not Target Is Nothing Then
'セル選択の為シートを選択
wS.Select
Target.Select
End If
End If
Next
'シートごとのRangeオブジェクトを作る為 オブジェクト変数を初期化(解放)
Set c = Nothing
Set Target = Nothing
Next
'最後のシートが選択される為、見つかったシート全てを選択 (最初に見つかったシートがアクティブ)
Worksheets(sh_name).Select
End Sub
補足を入れましたのでどうでしょう。
ちなみにRange("B3").CurrentRegionの外にAAAを入力して実行すると
Set c = wS.Cells.FindNext(after:=c)
選択される
Set c = myrng.FindNext(after:=c)
選択されない
Set myrng = wS.Range("B3").CurrentRegion なので選択されない方が良いのでは?
いつもお世話になっております
とても 思い通りに じっこうされました
しかし、どうすれば、このように
思いどおりに作成することができるのでしょか
わたしも こうなりたいです。
ありがとうございました。
No.5
- 回答日時:
選択してどうしたいのかがわかりませんが、全てのシートの該当セルを選択して一気に何かをするって訳じゃないならアクティブシート内のみで選択するのも宜しいのでは?
Work_Actveteイベントを全てのシートに記載しておいて標準モジュールのSubプロシージャを呼び出すとか。
まぁ全てのシートを同時に監視するって事ならダメなのかもですが、ここは素人的に判断できないです。
余談ですが。
知恵袋放置されてません?
質問内容が類似してたもので違ってたらすいません。
No.3
- 回答日時:
Set c = Nothing
Set Target = Nothing
Next
は付けましたか?
もし、該当シート全てを選択する必要があるのであれば、
True条件内にwSを記録して(名前で配列を作る?)最後に該当シート全選択の実行になるか、、アクティブシートはどれにするか、、最初?最後?など
>Set c = myrng.Find
Set c = wS.Cells.FindNext
エラーの原因ではないので良いかも知れませんが、
wS.Range("B3").CurrentRegionはwS.Cellsと同じでは無いけれど
CurrentRegion範囲以外でも存在を確認、選択するのかな、、と
検索範囲は狭い方が良く、同じで良いように思いました。
No.2
- 回答日時:
#1です、、
気になった事を書きましたが、
For Each wS In ActiveWorkbook.Worksheets これですね
複数シートを対象にしているのでシートごとに処理すれば良いと思います。
具体的には
If Not Target Is Nothing Then
wS.Select
Target.Select
End If
End If
Next
Set c = Nothing
Set Target = Nothing
Next
みたいな、、、
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- Visual Basic(VBA) シート削除のマクロで「deleteメソッドは失敗しました」となります。助けてください! Sub 不要 6 2022/09/08 16:41
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) 【VBAエラー】Nextに対するForがありません 対策について 5 2022/11/21 21:26
- Excel(エクセル) マクロで列を加えたら上手くいかなくなりました。 2 2022/05/23 17:59
- Visual Basic(VBA) エクセルVBA(実行時エラー438)の対処法を教えてもらえないでしょうか 3 2023/04/22 13:43
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Excel(エクセル) vba シート名の一覧を2列に分けるには 5 2023/04/24 08:56
- Excel(エクセル) EXCEL マクロで行を挿入して貼り付けようとするとエラーになる。 2 2022/05/24 09:43
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
excelのマクロで該当処理できな...
-
XL:BeforeDoubleClickが動かない
-
同じ作業を複数のシートに実行...
-
特定の文字を含むシートだけマ...
-
エクセルのシート名変更で重複...
-
【ExcelVBA】全シートのセルの...
-
実行時エラー'1004': WorkSheet...
-
ExcelのVBAのマクロで他のシー...
-
エクセルのマクロでアクティブ...
-
VBA 存在しないシートを選...
-
ブック名、シート名を他のモジ...
-
Excelマクロのエラーを解決した...
-
実行時エラー1004「Select メソ...
-
VBA 入力月で該当シートを選択...
-
【VBA】シート名に特定文字が入...
-
userFormに貼り付けたLabelを変...
-
エクセル Worksheet_Calculate
-
ListViewの画面の更新
-
Excel VBA 複数行を数の分だけ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
excelのマクロで該当処理できな...
-
【ExcelVBA】全シートのセルの...
-
ユーザーフォームに入力したデ...
-
同じ作業を複数のシートに実行...
-
ブック名、シート名を他のモジ...
-
特定の文字を含むシートだけマ...
-
実行時エラー'1004': WorkSheet...
-
VBA 存在しないシートを選...
-
エクセルのシート名変更で重複...
-
XL:BeforeDoubleClickが動かない
-
シートが保護されている状態で...
-
Excel VBA 複数行を数の分だけ...
-
実行時エラー1004「Select メソ...
-
【Excel VBA】Worksheets().Act...
-
Excelマクロのエラーを解決した...
-
エクセル・マクロ シートの非...
-
VBAで同じシート名のコピー時は...
-
ExcelのVBAのマクロで他のシー...
-
【VBA】色のついたシート名を取得
おすすめ情報
Set myrng = wS.Range("B3").CurrentRegion
Set c = myrng.Find
Set c = wS.Cells.FindNext
・・申し訳ございません わかりませんです。
wS.Select
Target.Select
付け加えました。
だけど 前の 検索範囲が間違ってるのかも
最初のままで、実行すると Target.Select部分で
rangeクラスのselectメソッドに失敗しました。
となります