マクロ処理の中で、「シート名を検索して表示させる」という工程があります。
その部分だけ抜粋すると以下の感じです
------------
For Each myWS In Worksheets
Sheets(myWS.Name).Select
If InStr(myWS.Name, 検索値) > 0 Then
myFlag = True
Exit For
End If
Next
------------
左から順にシート名を取得して、それが検索値と一致したら変数 myFlagをTrueにするという処理ですが、
目的のシートよりも左のシートが非表示になっていると、
2行目の「Sheets(myWS.Name).Select」の所でエラーになってしまいます。
恐らく、非表示シートをSelectできないからでは?と思ってます。
シートが非表示になっていたら無視するにはどうしたら良いでしょうか?
他の方法でも良いのですが、シンプルな方が良いと思ってます。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
こんにちは。
非表示の場合は、処理をしないでしょうか?
For Each myWS In Worksheets
IF myWS.Visible = True Then
If InStr(myWS.Name, 検索値) > 0 Then
myWS.Select
myFlag = True
Exit For
End If
End If
Next
No.1
- 回答日時:
こんにちは
シートの表示/非表示は .Visible プロパティを参照すれば判断できますので、それで分岐すればよいですが・・・
目的ではないシートを順にいちいち表示することには意味がないと思いますので、見つかった時に表示するように処理順を変えた方がよさそうに思います。
また、非表示シートをSelectしようとするとエラーになるので、条件分岐が必要になりますが、Activateメソッドを用いれば、エラーにならないのでそちらの方が面倒が少ないかと思います。
(非表示の場合は、直近のシートがアクティブになります)
・・・ということで、以下ではいかがでしょうか?
For Each myWS In Worksheets
If InStr(myWS.Name, 検索値) > 0 Then
myFlag = True
Worksheets(myWS.Name).Activate
Exit For
End If
Next
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Excel(エクセル) ②Excel 簡単にシートコピーしたら前日の残高と日付を変更させたい→マクロの記録でエラーが出ます 8 2022/07/16 20:40
- Visual Basic(VBA) 検索のユーザーフォームの表示について 1 2023/03/27 23:31
- Visual Basic(VBA) シート削除のマクロで「deleteメソッドは失敗しました」となります。助けてください! Sub 不要 6 2022/09/08 16:41
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- Excel(エクセル) vbaで列幅について 1 2022/11/15 08:31
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) ユーザーフォームの表示を追加したい 2 2023/03/26 23:18
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
Worksheets メソッドは失敗しました。のエラー処理のやり方
Visual Basic(VBA)
-
SheetsクラスのSelectメソッドが失敗
Visual Basic(VBA)
-
sheetsメソッドの失敗
Excel(エクセル)
-
-
4
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
5
Rangeメソッドは失敗しました。globalオブジェクトについて
Excel(エクセル)
-
6
Excel VBAで同じフォルダ内のファイルを開くには?
Excel(エクセル)
-
7
エクセルでエラーが出て困っています。
Excel(エクセル)
-
8
エクセル・マクロ シートの非表示でマクロのエラー
Visual Basic(VBA)
-
9
エクセルマクロエラー'Global'オブジェクト
Excel(エクセル)
-
10
マクロ 新しいシートにデータをコピペしてシートの名前を変更したい
Excel(エクセル)
-
11
VBA シートをコピーする際に Copyメソッドは失敗しましたのエラーが出てしまいます
Visual Basic(VBA)
-
12
【Excel VBA】Worksheets().Active でエラーが出る原因を教えてください
Visual Basic(VBA)
-
13
エクセルVBAで開いているファイルをコピーする方法
Visual Basic(VBA)
-
14
VBA 実行時エラー1004 rangeメソッドは失敗しました。globalオブジェクトのエラー
Excel(エクセル)
-
15
VBAが得意な方 助けてください Rangeについて
Access(アクセス)
-
16
VBA 置換文字がみつからない時
Visual Basic(VBA)
-
17
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
18
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
19
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
20
実行時エラー 438になった時の対処法を教えて下さい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
【ExcelVBA】全シートのセルの...
-
ユーザーフォームに入力したデ...
-
【VBA】色のついたシート名を取得
-
セルの値によって、シート見出...
-
ブック名、シート名を他のモジ...
-
別のシートを参照して計算する方法
-
XL:BeforeDoubleClickが動かない
-
VBAで同じシート名のコピー時は...
-
マクロを使って、シート印刷完...
-
ExcelのVBAのマクロで他のシー...
-
VBA 存在しないシートを選...
-
VBA 最終行まで数式をコピーする
-
特定の文字を含むシートだけマ...
-
【Excel VBA】Worksheets().Act...
-
Access エクセルシート名変更
-
ExcelVBA シート名を複数セルか...
-
エクセルVBA 別シートからのコ...
-
同じ作業を複数のシートに実行...
-
実行時エラー'1004': WorkSheet...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
同じ作業を複数のシートに実行...
-
ExcelVBA シート名を複数セルか...
-
【ExcelVBA】全シートのセルの...
-
Excel マクロについての相談
-
VBA 存在しないシートを選...
-
実行時エラー'1004': WorkSheet...
-
特定の文字を含むシートだけマ...
-
ExcelのVBAのマクロで他のシー...
-
ブック名、シート名を他のモジ...
-
XL:BeforeDoubleClickが動かない
-
VBA 複数の各シートに行を追加...
-
エクセルのシート名変更で重複...
-
【Excel VBA】Worksheets().Act...
-
シートが保護されている状態で...
-
Excel VBA 複数行を数の分だけ...
-
for 文の 繰り返し処理に使える...
おすすめ情報