- ベストアンサー
VBAでインデックスが有効範囲にないと出るメッセージが表示される原因は?
- VBAを使用してデータをコピーする処理を書いたところ、インデックスが有効範囲にないとエラーメッセージが表示されます。
- 特に、以下の行でエラーメッセージが表示されます。
- Worksheets("フェアリスト").Cells(65536, i + 1).End(xlUp).Row
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
エラーが出たときに「デバッグ」のボタンをクリックして,具体的に「どの行」に色が付いてエラーになっていたのかを情報提供するようにしてください。 考えられることとしては… 1)Worksheets("フェアリスト").Selectが黄色くなっていたら ・単純にシート名を誤記しているので直します または ・マクロを開始したときに,フェアリストシートを含んだブックとは違うブックがアクティブになっています フェアリストシートを含むブックを表に出してからマクロを実行するか,またはマクロの中にフェアリストシートを含むブックをselectする命令を追記します 2)Worksheets("csv").Range("A:C").ClearContentsが黄色くなっていたら ・単純にシート名を誤記しているので直します または ・csvシートが,フェアリストシートを含むブックとは「別のブックとして開かれています」 csvシートをフェアリストシートを含むブックのシートにしてからマクロを実行するか,またはマクロの中でcsvシートをフェアリストシートのブックに移動します または,マクロをcsvシートが別ブックにあるという状況に合わせて修正します #余談:今回のご質問とは関係ない範囲でおかしい箇所 間違い? Worksheets("csv").Range("A:C").ClearContents 訂正: Worksheets("csv").Range("A:E").ClearContents 間違い: Worksheets("フェアリスト").Range(Cells(11, i), Cells(r, i + 3)).Copy _ 訂正: Range(Cells(11, i), Cells(r, i + 3)).Copy _ または Worksheets("フェアリスト").Range(Worksheets("フェアリスト").Cells(11, i), Worksheets("フェアリスト").Cells(r, i + 3)).Copy _ 間違い: Worksheets("csv").Range("A65536").End(xlUp).Offset(1).Resize(r - 3, 1).Value = Worksheets("フェアリスト").Cells(8, i).Value 訂正: Worksheets("csv").Range("A65536").End(xlUp).Offset(1).Resize(r - 10, 1).Value = Worksheets("フェアリスト").Cells(8, i).Value 間違い? Worksheets("csv").Range("A1:C1").Delete shift:=xlShiftUp 訂正: Worksheets("csv").Range("1:1").Delete shift:=xlShiftUp
その他の回答 (1)
- keithin
- ベストアンサー率66% (5278/7941)
はて。 元のご相談: >しかしインデックスが有効範囲にないとメッセージがでるのですが、どこがまちがっているでしょうか?? は,どこへ行ってしまったのですか? 余談は,あくまでも今回のご質問とは関係無い内容です。 まず今回のご相談内容をクリアして,このご相談を解決で閉じてください。 その次のステップとして指摘した箇所までマクロが到達したら,改めて追加の疑問の箇所の数字を余談でお話しした数字やアナタの思いついた数字に思うとおりに色々変えて,「この数字では意図した結果にならない」や「こうすれば意図通りになる結果」になることを実際にアナタの目で確認し,どうしてそうなるのか考えてください。
補足
ありがとうございます。 一つ疑問なんですが、Resizeがどうして-10なんでしょうか? 行数が10までありますが、たとえば100行まであった場合は-100になるのでしょうか? どうしてマイナスするのでしょうか?