[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『エラーメッセージ』(ぴょん)
お世話になります。
下記のマクロ実行時に必ず「実行時エラー'9'インデックスが有効範囲にありません」
と表示されます。一応処理はされるのですが、表示が出なくなる方法はございますか?
教えてください。
Sub Sumple()
Dim n As Integer
Dim LastR1 As Long, LastR2 As Long
For n = 2 To 600 'データシートの数だけループ
LastR1 = Sheets(1).Range("A65536").End(xlUp).Row '貼付先シートの最終行取得
LastR2 = Sheets(n).Range("A65536").End(xlUp).Row '貼付元シートの最終行取得
With Sheets(n) '貼付元データをコピー(最終行の1行下まで)
.Range("A1:AF34").Copy
End With
ActiveSheet.Paste Destination:=Sheets(1).Cells(LastR1 + 3, 1) '貼付(3行下を起点)
Next
End Sub
シートは本当に600シートもあるのですか? (Mook)
Mookさんと衝突してしまいましたがそのまま…
インデックスが有効範囲にないと言うことはひょっとしてシートが600枚以下であると言うことは無いでしょうか? あとIntegerは値の範囲が-32.768〜32.767の整数値なので、もし本当にシートの数が600枚もあるのであればn As Longのが宜しいかと。
と言うことで↓で試してみてください。 (ぜんぜん検討違いの結果が出たらすみません)
Sub Sumple() Dim n As Long Dim LastR1 As Long, LastR2 As Long
For n = 2 To Worksheets.Count 'データシートの数だけループ
LastR1 = Sheets(1).Range("A" & Rows.Count).End(xlUp).Row '貼付先シートの最終行取得
LastR2 = Sheets(n).Range("A" & Rows.Count).End(xlUp).Offset(1).Row '貼付元シートの最終行取得
With Sheets(n) '貼付元データをコピー(最終行の1行下まで)
.Range("A1", "AF" & LastR2).Copy
End With
ActiveSheet.Paste Destination:=Sheets(1).Cells(LastR1 + 3, 1) '貼付(3行下を起点)
Next
End Sub
(毛虫通過中@場繋ぎ)
修正方法に関しては提示された内容で解決しそうなので、余計な突っ込みですが、
>あとIntegerは値の範囲が-32.768〜32.767の整数値なので、もし本当にシートの数が600枚 >もあるのであればn As Longのが宜しいかと。
は整数値と書いているので -32.768〜32.767 は日本式に書くと -32,768 〜 32,767 と 認識されていると思いますが、 であれば 600程度は Integer で問題ないですよね?
まぁ、Long にしてまったく問題はないので置き換えてもかまわないとは思いますが。 確かに、だいぶ以前、行の変数を Integer にして足りなくなった経験はありました。 (Mook)
Mook様
>は整数値と書いているので -32.768〜32.767 は日本式に書くと -32,768 〜 32,767 と >認識されていると思いますが、 であれば 600程度は Integer で問題ないですよね?
どうやら今の今までを勘違し続けていたようです…!
余計な突っ込みだなんてとんでもありません! ご指摘ありがとうございました!勉強になります!
ぴょんさん、レス汚しすみませんでした。
(毛虫通過中@勉強不足)
(ぴょん)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.