[[20120512152919]] 『セル参照の繰返し』(えま) ページの最後に飛ぶ

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

 

『セル参照の繰返し』(えま)

いつもお世話になっています。
アクティブシートに"data_sheet"のセルを参照したいです。
数が多いのでマクロを使いたいと思い
途中まで作りましたが、2つ目のForのところがわかりません。
.Cells(5,17)の17に式が代入できると思い
For Col = 17 To 17 * (8 - 1) + 1 Step 8としましたが、エラーになりました。
ここには何を入れるといいのでしょうか?

また、For Col = 17 To 17 * (8 - 1) + 1 Step 8の下に3行ずつ参照式を
入れましたが、それぞれ列が1ずつ増えています。
これもまとめられないでしょうか?

ここまでが1ブロックの式で、次はアクティブシートは8行下から始まり、
"data_sheet"は1行下から始まります。
これを200回繰り返したいです。
ご教授いただけると、うれしいです。
よろしくお願いします。

Sub データ参照()

    Dim DS As Worksheet
    Set DS = ThisWorkbook.Sheets("data_sheet")

    Dim r As Integer
    Dim Col As Integer

    With DS
         For r = 3 To 10
            Cells(r, 2) = .Cells(5, 2)
            Cells(r, 6) = .Cells(5, 7)
            Cells(r, 7) = .Cells(5, 8)

         '17列目から8列置きに8回参照します。
         For Col = 17 To 17 * (8 - 1) + 1 Step 8
            Cells(r, 13) = .Cells(5, 17)
            Cells(r, 14) = .Cells(5, 18)
            Cells(r, 15) = .Cells(5, 19)

            Cells(r, 17) = .Cells(5, 81)
            Cells(r, 18) = .Cells(5, 82)
            Cells(r, 19) = .Cells(5, 83)

         Next
         Next

         For r = 11 To 18
            Cells(r, 2) = .Cells(6, 2)
            Cells(r, 6) = .Cells(6, 7)
            Cells(r, 7) = .Cells(6, 8)

            Cells(r, 13) = .Cells(6, 17)
            Cells(r, 14) = .Cells(6, 18)
            Cells(r, 15) = .Cells(6, 19)

            Cells(r, 17) = .Cells(6, 81)
            Cells(r, 18) = .Cells(6, 82)
            Cells(r, 19) = .Cells(6, 83)

Excel2007
Windows Vista


【1】 ※「エラーが出る」だけじゃなくて、どんなエラーメッセージが出たかも
    控えて報告してください。

【2】

         For Col = 17 To 17 * (8 - 1) + 1 Step 8
            Cells(r, 13) = .Cells(5, 17)
            Cells(r, 14) = .Cells(5, 18)
            Cells(r, 15) = .Cells(5, 19)
            Cells(r, 17) = .Cells(5, 81)
            Cells(r, 18) = .Cells(5, 82)
            Cells(r, 19) = .Cells(5, 83)
         Next

このブロックは、変数Colを使用していないので、繰り返しが利いていません。

【3】

            Cells(r, 13) = .Cells(5, 17)
            Cells(r, 14) = .Cells(5, 18)
            Cells(r, 15) = .Cells(5, 19)

これは

            Range(Cells(r, 13),Cells(r, 15)).Value = .Range(.Cells(5, 17),.Cells(5, 19)).Value

とまとめて書けそうです。

(みやほりん)


みやほりんさん、すばやいお返事をありがとうございます!
私の書き方が言葉足らずだったのですが、
For Col = 17 To 17 * (8 - 1) + 1 Step 8
            Cells(r, 13) = .Cells(5, Col)
Next
の1行だけで試してみたのですが、エラーといいますか、"3:10,13"に同じ数値が入り、
参照先の"data_sheet"にその数値がないのです。Ctrl+Fで探したので、文字列検索になっていて、
その数値が見つからなかったのかもしれませんが、いずれにしてもそれぞれのセルには別の
数値が入るはずで、それでエラーになっている、と思いました。 

IntegerをLongにも変えてみたのですが、結果は同じでした。

あと、【3】のくくりかたですが、17にColを入れると、
For Col = 17 To 17 * (8 - 1) + 1 Step 8なので(式は間違っているかもしれませんが)、
18、19はそれぞれ
For Col = 18 To 18 * (8 - 1) + 1 Step 8
For Col = 19 To 19 * (8 - 1) + 1 Step 8
になります。
これを書きたいのですが、教えていただけるでしょうか。
よろしくお願いします。

(えま)
#今、「更新の衝突が起こりました」とメッセージが出ました。
【1】の部分を変えてくださったのですね。
もう一度更新してみます^^


みやほりんさん、私が最初に書いた質問はいくつか情報が抜けていてわかりにくいと思うので、
書きなおして改めて投稿します。
ありがとうございました^^
(えま)

コメント返信:

[ 一覧(最新更新順) ]


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