- ベストアンサー
【エクセルVBA】「インデックスが有効範囲にありません」というエラーがでます
こんにちは。VBA初心者ですが、下記コードを実行すると エラーが出てしまいました。 シート(シート1)のセルから別シート(シート2)のセルに 値のみコピーするVBAを組んでいます。 適宜、シート1に入力したものを読みこませていきたいので 変数を使用しています。 ------------------------------------------------------------- Sub セルのコピー() Dim X As Integer X = 3 Y = 2 Do While Cells(X, "A").Value <> "" Sheets("シート1").Cells(X, "A").Copy Sheets("シート2").Activate Sheets("シート2").Cells(Y, "F").PasteSpecial _ Paste:=xlPasteValues ⇒エラー対象 Application.CutCopyMode = False X = X + 1 Y = Y + 1 Loop End Sub ------------------------------------------------------------ つまり、シート1のA3セルを先頭にA4,A5,A6・・・と続くセルの値 をシート2のF2を先頭としたセル(以下、F3,F4・・・)に値のみコピー していきたいのですが。。 実行すると「インデックスが有効範囲にありません」というエラーが でます。デバック対象は上記、「⇒エラー対象」の構文です。 変数の設定の仕方がおかしいのでしょうか。。 ご教示のほどよろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
お礼
>konnamondeさま ご回答ありがとうございます。 返信がおそくなり申し訳ありません。 シート名を誤転記していたのと、Do while cells(X,"A")の前にsheets("シート1")を追加、sheets("シート2").activateを削除したら、無事動作しました。 また、ScreenUpdatingプロパティを加えてみたら各段に動作が速くなり 感動しております。。 Sheets("シート2").Activate で "シート2" を Activate にすると、 Do Loop の頭に返ってきたとき(以下省略) ⇒なるほど!でした。動作イメージがしっかり分かってないと。。ですね。 シート名を使わなくてそれぞれ Sheets(1)、Sheets(2) でもいけます ⇒こちらの方が使いやすそうですね。取り入れてみます!