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

No.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
ちゃんと検証していませんし、エラー対策や無駄な処理があるかも知れません
シート名は配列にした方が確実かも知れませんね
まあ・・・暇つぶしにアイデアコードを書いただけです
No.3
- 回答日時:
こんばんは
何をしたいのか、意図がよくわかりませんけれど・・
非表示のシートもSelectしたいのなら、先に表示/非表示を調べて、Select後に非表示のシートは再セットしてあげればすむ話でしょう。
https://learn.microsoft.com/ja-jp/office/vba/api …
通常なら非表示シートのセルをSelectする必要はないと思うので、非表示ならスキップすればよさそう。
No1様の回答にあるエラー処理でも可能ですけれど。
シートを開いた際に特定のセルが選択されているようにしたいのなら、Activateイベントで選択するようにしておけばエラーになることはありません。
まとめて設定するのなら、ThisWorkbookのモジュールに設定しておけばすみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
以下のプログラムの実行結果はどうなると思いますか? その理由も教えてください。
Visual Basic(VBA)
-
質問58753 このコードでうまく動作しません。どうしたら良いですか Private Sub Wor
Visual Basic(VBA)
-
算術演算子「¥」の意味について
Visual Basic(VBA)
-
-
4
Excelマクロで使うVBAコードをスプレッドシートのGoogle Apps Scriptに変換
Visual Basic(VBA)
-
5
VB.net 文字列から日付型へ変更したい
Visual Basic(VBA)
-
6
改行文字「vbCrLf」とは
Visual Basic(VBA)
-
7
VBA 同じフォルダ内のすべてのファイルに同じセルをペーストしたい
Visual Basic(VBA)
-
8
エクセルでセルに入力する前は非表示にしたい
Excel(エクセル)
-
9
エクセルの数式について教えてください。
Excel(エクセル)
-
10
ユーザーマクロ作成
Excel(エクセル)
-
11
エクセルのマクロについて教えてください。
Visual Basic(VBA)
-
12
VBAの「To」という語句について
Visual Basic(VBA)
-
13
ダブルクリックで貼り付けた画像からリンクのみ削除し、画像を残したい。
Visual Basic(VBA)
-
14
Vba FileSystemObject オブジェクトに使って拡張子、BaseNameを取り出す
Visual Basic(VBA)
-
15
Excelのデータの入力規則の問題点について
Excel(エクセル)
-
16
(EXCEL超初心者)EXCELの関数(またはマクロ)で質問です。
Visual Basic(VBA)
-
17
Excelについて教えてください。
Excel(エクセル)
-
18
【マクロ】変数を使った、文字の種類の変更にて、エラーとなる。
Visual Basic(VBA)
-
19
vbsでのwebフォームへの入力制限?
Visual Basic(VBA)
-
20
【マクロ】開いているブックの名前を取得した後、名前をセルに1つづつ入力するには?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBA セルの値がおかしいです
-
VBA セル間のリンク修正につい...
-
WindowsのOutlook を VBA から...
-
【ExcelVBA】値を変更しながら...
-
ExcelのVBAコードについて教え...
-
VBAでCOPYを繰り返すと、処理が...
-
マクロの記録を使用したマクロ...
-
vba textboxへの入力について教...
-
複数のExcelファイルをマージす...
-
Vba Array関数について教えてく...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】並び替えの範囲が、...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】開いているブックの...
-
Excelのマクロについて教えてく...
-
Vba WorkBooks.Openについて教...
-
VBAから書き込んだ条件付き初期...
-
Vba 型が一致しません(エラー1...
-
【ExcelVBA】5万行以上のデー...
-
[Excel VBA]特定の条件で文字を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA セル間のリンク修正につい...
-
VBAでCOPYを繰り返すと、処理が...
-
vba textboxへの入力について教...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】並び替えの範囲が、...
-
Vba Array関数について教えてく...
-
Vba セルの4辺について罫線が有...
-
【マクロ】開いているブックの...
-
複数のExcelファイルをマージす...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【ExcelVBA】5万行以上のデー...
-
vbsでのwebフォームへの入力制限?
-
[VB.net] ボタン(Flat)のEnable...
-
Excelのマクロについて教えてく...
-
【ExcelVBA】値を変更しながら...
-
改行文字「vbCrLf」とは
-
算術演算子「¥」の意味について
-
VBAでセルの書式を変えずに文字...
-
VBAの「To」という語句について
-
VB.net 文字列から日付型へ変更...
おすすめ情報