- ベストアンサー
2重ループ
下記のマクロを実行させてもB20までのセル(19回繰り返し)にしか数値を書き込んでくれません。 どうして100回繰り返さないのでしょうか? Private Sub CommandButton1_Click() For j = 1 To 10 For i = 1 To 10 Cells(i + j, 2).Value = i + j Next i Next j End Sub
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Cells(i + j, 2)と書いているからです。 このループは、 jが1で、iが1~10まで→Cells(2,2)~Cells(11,2)→B2~B11 jが2で、iが1~10まで→Cells(3,2)~Cells(12,2)→B3~B12 : : jが10で、iが1~10まで→Cells(11,2)~Cells(20,2)→B11~B20 というように動いています。 Cellsのカッコ内は(行、列)ですよ。
その他の回答 (2)
- jobvba
- ベストアンサー率50% (2/4)
しっかり100回繰り返しています Private Sub CommandButton1_Click() k = 0 For j = 1 To 10 For i = 1 To 10 Cells(i + j, 2).Value = i + j k = k + 1 '書き込んだ回数 Next i Next j Cells(i + j + 1, 2) = k End Sub これを実行してみてください 列Bの同じところにに連続して書き込んでいるので、 100回繰り返していないように見えてしまいます
お礼
早速の回答ありがとうございます。 100回は繰り返してるのですがセルへの書きこみに問題があったようです。
- deecyan
- ベストアンサー率38% (89/233)
100回繰り返してますが、 Cells(i + j, 2).Value = i + j ではなく Cells((j-1)*10+i,2).value = xxxxxxx としないと B100まで入りません。
お礼
早速の回答ありがとうございます。 模範例助かりました。
お礼
早速の回答ありがとうございます。 分かりやすい説明ありがとうございました。