• ベストアンサー

VB初心者です For Nextの構文について

処理したい内容はA列に数字1~10まで数字を A1のセルから順番に入力させるという処理を For Next を使用して実行させたいのですが上手くいきません。ソースは以下になります。 Sub 記入() Dim i As Integer Dim n As Integer n = 0 For i = 1 To 10 n = n + i Next >Range("A" + n) = n End Sub >の部分でエラーになります。ここの部分を A1 A2 A3 ・ ・    列番号 と A + ○ を繰り返しでカウント変数 n で繰り返しをさせたいのですが、どう処理すればよろしいですか? アドバイスお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#86752
noname#86752
回答No.2

for nextはその間にある処理を繰り返します。 今回の処理では「セルに値をセットする」という処理も繰り返し実行しないといけません。 For i = 1 To 10 n = n + i Range("A" & n) = n Next これでどうでしょう。Rangeの部分がfor nextの間に入ったので、繰り返し処理されるはずです。

u-mesh12
質問者

お礼

&を使用すれば良かったのですね。アドバイスありがとうございました。

その他の回答 (3)

回答No.4

>Range("A" + n) = n 文字列と数字の加算となるので「"A" + n」の部分でエラーになります。 文字列の連結でしたら「"A" & n」としてください。 それと繰り返して処理するなら、RengeをFor~Nextの中に入れないといけません。 Sub 記入() Dim i As Integer Dim n As Integer n = 0 For i = 1 To 10 n = n + i Range("A" & n) = n  'ここに移動 Next End Sub それとソースを見ていて気になったのですが、セルの行番号をそのまま表示するだけでよいのですか? 例えば A1→1 A2→2 A3→3 であれば上記で問題ありませんが A1→5 A2→6 A3→7 といったように、行番号と違うカウント変数を入れるようであれば、別に変数を作ってRangeのところの右辺の変数nを作った変数に入れ替える必要があります。 (関係なかったら申し訳ないです)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

雑感。 >VB初心者です  表題について質問内容がエクセルVBAですので、VBAとするか エクセルVBAと書くべし。 >Range("A" + n) = n 各セルに書きこむのだから、For Nextのループ内に入れるべし。 >("A" + n) 文字列結合は+より、&を使うべし。 この方法が旨く行くのは、このケースに限ると思うべし。 文字列で作れば、コーディグや操作と同じ効果があるとは 限らない。むしろない場合が多い。 >Range("A" + n) Range(”A1”)より、今後使うパターンの主力を Cells(i,j)をお勧めします。 >n = n + i 1づつ増やすはずで、n = n + 1が適当でしょう。 むしろiを直接使う手もある。 Sub 記入() Dim i As Integer Dim n As Integer n = 0 For i = 1 To 10 n = n + 1 Range("A" & n) = n Next End Sub または Sub 記入() Dim i As Integer For i = 1 To 10 Range("A" & i) = i Next End Sub

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

>Range("A" + n) = n range("A" & n) でいいような気がします。 (未検証)

関連するQ&A