[[20191129111112]] 『VBA:Worksheets.Countの最終行でエラー』(和美) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBA:Worksheets.Countの最終行でエラー』(和美)

いつもお世話になっております。

VBAで出された課題が解けません。
問題は、指定したブックのシート名を取得し、一覧を作るものです。
(VBA使用が指定されています)

ループ文で参考にしたサイトはこちらです。
https://www.sejuku.net/blog/30902


pass = ActiveSheet.Range("A2") 'ファイルパス
file = ActiveSheet.Range("B2") 'ファイル名

 path = pass & "\" & file
 Set wb = Workbooks.Open(path) 'ファイルパス
    ActiveWindow.Visible = False 'ファイルをアクティブにしない

For i = 1 To Worksheets.Count

       Worksheets("回答").Range("B" & i) = wb.Worksheets(i).Name
    Next i


シート名が最後まで入力された後、「インデックスが有効範囲にありません」と出ます。

OSのバージョンは8にチェックを入れましたが、8.1です。

< 使用 Excel:Excel2013、使用 OS:Windows8 >


 >For i = 1 To Worksheets.Count 
 だと現在アクティブなブック(マクロのあるブック)のシート数になっているのでは?
 >For i = 1 To wb.Worksheets.Count 
 ではどうか?
(ねむねむ) 2019/11/29(金) 11:29

 親オブジェクトを明示しないと全てActiveWorkbookになりますよ?

 For i = 1 To wb.Worksheets.Count
    ThisWorkbook.Worksheets("回答").Range("B" & i) = wb.Worksheets(i).Name
 Next i
(seiya) 2019/11/29(金) 11:30

ねむねむ様 seiya様

お二方ともお早いご回答をありがとうございます。
ThisWorkbook.がなくても動きましたが、この後A2セルとB2セルの指定部分を書き換えてループさせることを考えると、あった方が良さそうですね。

ありがとうございました。
(和美) 2019/11/29(金) 12:26


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.