「インデックスが有効範囲にありません。」エラーは、マクロ作成時によく遭遇する実行時エラーのひとつです。
このサイト『インストラクターのネタ帳』でも、Sheetsプロパティ・Worksheetsプロパティを使ったシート指定時の、インデックスが有効範囲にありませんエラーについて記事を公開しています。
ブック指定時にも、インデックスが有効範囲にありませんエラーは発生する可能性があります。
「vba workbooks インデックスが有効範囲にありません」
「VBA book名指定インデックスが有効範囲にありません」
といった検索キーワードでアクセスも、あります。
数値指定時のインデックスが有効範囲にありません実行時エラー
ブックが1つしか開いていない状態で、以下のSubプロシージャを実行すれば、インデックスが有効範囲にありませんエラーとなります。Workbooks(2).Activate
End Sub
ブックが1つしか開いていないのに、存在しない「2」が指定されれば、エラーとならざるを得ません。
指定できる数値は、1からWorkbooks.Countプロパティで取得できる整数までですから、
Workbooks(0).Activate
といったコードは、必ずエラーになります。
ブック名指定時のインデックスが有効範囲にありません実行時エラー
「hogehoge.xlsx」という名前のブックが開かれていない状態で、以下のSubプロシージャを実行すれば、やはりインデックスが有効範囲にありませんエラーとなります。Workbooks("hogehoge.xlsx").Activate
End Sub
フルパスも指定できない
Workbooksコレクションの既定プロパティに指定できるのはブック名ですから、フルパス等を指定した場合にも、インデックスが有効範囲にありませんエラーとなります。
名前指定時は拡張子に注意
名前指定時には、拡張子まで明示するほうが無難です。
Windowsの拡張子表示状態によって、挙動が変化するためです。
例えば、hogehoge.xlsxブックが開かれているときに、
Workbooks("hogehoge")
といった指定をすると、インデックスが有効範囲にありませんエラーが発生するときと、しないときがあります。
Windowsで拡張子が非表示状態ならば、
Workbooks("hogehoge.xlsx")
のように拡張子を含んだ指定でも、
Workbooks("hogehoge")
のように拡張子を含まない指定でも、エラーは発生しません。
しかし、Windowsで拡張子が表示されているときには、
Workbooks("hogehoge.xlsx")
はエラーになりませんが、
Workbooks("hogehoge")
では、インデックスが有効範囲にありませんエラーが発生します。
最終更新日時:2019-01-17 12:05
- Newer:全角スペースを検索して位置を取得-FIND関数・SEARCH関数
- Older:セル範囲から配列作成時の要素数
Home » エクセルマクロ・Excel VBAの使い方 » Workbooks・Workbook » Workbooksでインデックスが有効範囲にありませんエラーの発生する原因