電子書籍の厳選無料作品が豊富!

作業ブックに下記のマクロを設定しております。
Sub 各シートセル位置指定()
Sheets("新築").Select
Range("A5").Select
Sheets("変更").Select
Range("A5").Select
途中省略
Sheets("増築").Select
Range("A5").Select
End Sub
各シートの各セル位置を設定できるようになっております。
しかし
例えば
シート("新築")("増築")が表示されている場合はマクロが実行されますが、
シート("変更")が非表示の場合はエラーメッセージが表示されて上手くマクロが実行
できません。
ブックの作業の方法によってシートが表示されたり非表示になったりします。
解決方法を教えていただけますか。
一つの方法として、非表示シートを一度、すべて表示にしてから、
このマクロを実行する方法があると思いますが、それ以外の方法はありますでしょうか。
宜しくお願い致します。

「エクセルのマクロについて教えてください。」の質問画像

A 回答 (4件)

意図が良く分かりません



エラー対策という事でしょうか?
非表示シートもA5選択したいという事でしょうか でしたら
>一つの方法として、非表示シートを一度、すべて表示にしてから
一番簡単ではと思いますが

エラーを出さないだけなら既に回答にある様な方法か
原因自体を回避する方法になるかと 
例えば
Sub 各シートセル位置指定()
Dim sn As Variant
For Each sn In Array("新築", "変更", "途中省略", "増築")
With Worksheets(sn)
If .Visible Then
.Select
.Range("A5").Select
End If
End With
Next
End Sub
シトー名の存在確認ロジックを入れる必要があります



表示非表示を切り替える事無く
対象非表示シートのA5を選択したい場合は・・
少し力技で考え(実行時に選択されているわけではないけれど非表示対象シートを登録しておき再表示したときにA5が選択される)

標準モジュール
Option Explicit
Public waitingSh As String
Sub 各シートセル位置指定()
Dim sn As Variant
For Each sn In Array("新築", "変更", "途中省略", "増築")
With Worksheets(sn)
If .Visible Then
.Select
.Range("A5").Select
Else
waitingSh = waitingSh & sn
End If
End With
Next
End Sub

ブックモジュール
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If waitingSh <> "" Then
If waitingSh Like "*" & Sh.Name & "*" Then
Sh.Range("A5").Select
Call Replace(waitingSh, Sh.Name, "")
End If
End If
End Sub

ちゃんと検証していませんし、エラー対策や無駄な処理があるかも知れません
シート名は配列にした方が確実かも知れませんね
まあ・・・暇つぶしにアイデアコードを書いただけです
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
詳しいコードを教えていただきまして、
ありがとうございます。
感謝いたします。
早速試してみます。

お礼日時:2025/01/30 13:16

こんばんは



何をしたいのか、意図がよくわかりませんけれど・・

非表示のシートもSelectしたいのなら、先に表示/非表示を調べて、Select後に非表示のシートは再セットしてあげればすむ話でしょう。
https://learn.microsoft.com/ja-jp/office/vba/api …

通常なら非表示シートのセルをSelectする必要はないと思うので、非表示ならスキップすればよさそう。
No1様の回答にあるエラー処理でも可能ですけれど。

シートを開いた際に特定のセルが選択されているようにしたいのなら、Activateイベントで選択するようにしておけばエラーになることはありません。
まとめて設定するのなら、ThisWorkbookのモジュールに設定しておけばすみます。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
参考にさせていただきます。

お礼日時:2025/01/29 18:36

selectするのが目的ならワークシートを再表示するしかありません。


しかし、selectした後で「なにか」をするのが目的なら、その「なにか」をselectしないで行う方法に変更すればいいです。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
参考にさせていただきます。

お礼日時:2025/01/29 16:35

On Error Resume Next


とか
On Error GoTo 0
で対処できるかな。

使用方法や注意点は検索して確認を。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
参考にさせていただきます。

お礼日時:2025/01/29 16:34

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A