- ベストアンサー
他のブックがアクティブな状態でExcelを終了させる場合の不具合
マクロを使って、 ブックを閉じるときに最後のシートを表示させて他のシートを全て隠す という動作を行っています。 当該ブックがアクティブなときは正常に動作するのですが、 他のブックがアクティブな状態で閉じると 実行時エラー'1004': WorksheetクラスのVisibleプロパティを設定できません。 とのエラーが出てしまいます。 下記にコードを載せますので、どなたかご教示ください。 ThisWorkbookの辺りが怪しいとは思うのですが。。 よろしくお願いいたします。 Function HideSheets() Call 開始設定 Call ブック解錠 Worksheets(ThisWorkbook.Worksheets.Count).Visible = True For i = 1 To Worksheets.Count - 1 Worksheets(i).Visible = xlVeryHidden Next Call ブック施錠 Call 終了設定 End Function
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
他の処理をコメント化して Function HideSheets() 'Call 開始設定 'Call ブック解錠 With ThisWorkbook .Worksheets(.Worksheets.Count).Visible = True For i = 1 To .Worksheets.Count - 1 .Worksheets(i).Visible = xlVeryHidden Next End With 'Call ブック施錠 'Call 終了設定 End Function としてもエラーになりますか? なんとなく「Call ブック解錠」内で、同じ問題(ActiveWorkbookとThisWorkbookの混同)があるような気がしますが。
その他の回答 (1)
- kybo
- ベストアンサー率53% (349/647)
「ThisWorkbook.」は全てに記述して下さい。 ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count).Visible = True For i = 1 To ThisWorkbook.Worksheets.Count - 1 ThisWorkbook.Worksheets(i).Visible = xlVeryHidden Next
お礼
皆さんのおかげで無事不具合が直りました。 どうもありがとうございました。
補足
早速のご回答ありがとうございます。 ご指摘のとおり、明示しないとActiveWorkbook指定になるかと思い 直してみたのですが、やはり同じ場所でつまずいてしまうようです。 ThisWorkbookを指定しているのになぜこのような動作をするのか・・・
お礼
ご回答ありがとうございます。 おっしゃるとおりのことが起こっていました。 修正したところ無事動作しました。 本当にありがとうございました。