• ベストアンサー

他のブックがアクティブな状態で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

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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の混同)があるような気がしますが。

saotome210
質問者

お礼

ご回答ありがとうございます。 おっしゃるとおりのことが起こっていました。 修正したところ無事動作しました。 本当にありがとうございました。

その他の回答 (1)

  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

「ThisWorkbook.」は全てに記述して下さい。 ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count).Visible = True For i = 1 To ThisWorkbook.Worksheets.Count - 1 ThisWorkbook.Worksheets(i).Visible = xlVeryHidden Next

saotome210
質問者

お礼

皆さんのおかげで無事不具合が直りました。 どうもありがとうございました。

saotome210
質問者

補足

早速のご回答ありがとうございます。 ご指摘のとおり、明示しないとActiveWorkbook指定になるかと思い 直してみたのですが、やはり同じ場所でつまずいてしまうようです。 ThisWorkbookを指定しているのになぜこのような動作をするのか・・・

関連するQ&A

専門家に質問してみよう