Excel 2013の「実行時エラー’9’」について

投稿者: user8606

Excel 2013 で下記のマクロを実行しているときに

実行時エラー’9′:インデックスが有効範囲にありません

と出ます。

Sub test()
    Workbooks("Book2.xlsm").Worksheets("Sheet1").Visible = False
End Sub

「Sheet1」があるのにも関わらず、上記のようなエラーが出ます。
どうすれば「Sheet1」を非表示にできるのでしょうか?

解決

まず、Workbooks(“Book2.xlsm”)でワークブック本体を取得するには、そのファイルを開いていないとダメです。
そしてWorksheetsには名前ではなくindexを渡します。つまり何番目のシートかという数字です。
1番目のシートであれば.Worksheets(1)でOKです。
※一般的な言語の配列のように0から始まりません。

そしてもう一つ注意点。
Excelでは全てのシートを非表示にできません。
なのでSheet1しかそのファイルに存在していない場合、なんぼがんばっても非表示にできません。
もう一つシートを追加してやれば非表示にできるハズです。


今調べてみたらWorksheets(“名前”)でも行けるみたいですね…出直してきます。(´・ω・`)

どうやら、ファイルを開いてないと実行時エラー'9'が出るみたいです。
とりあえず、メソッドチェーンを使わずに、どの段階でエラーが起きているのか特定するのが良いかと思います。以下のようにして実行するとドコで落ちるでしょう?

Sub Test()
  Dim wb As Workbook
  Set wb = Workbooks("Book2.xlsm")
  Dim ws As Worksheet
  Set ws = Worksheets("Sheet1")
  ws.Visible = False
End Sub
回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *