• ベストアンサー

VBAの変数 超入門

上司からVBAの宿題をだされました。 変数とFOR nextを使って 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 と出るようにしろ、とただこれだけのVBA。。。 基礎なんでしょうけど、いまいち理解しきれていません。 よろしくお願いします。

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

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.3

なるべく内容を考えてみてくださいね。 VBAのウィンドウでF8キー押下によりステップ実行と機能があるので動作を確認ください。 Sub 課題() Dim n行 as Long Dim n列 as Long '行(1-5)に対するループ For n行 = 1 To 5 '列(A-E)に対するループ For n列 = 1 To 5 '対象とするセルに値を代入する 'OffsetでセルのA-Eを判断せずに済ませる Range("A" & n行).Offset(0, n列 - 1) = (n行 - 1) * 5 + n列 '次の列の処理 Next n列 '次の行の処理 Next n行 End Sub

okiekama
質問者

お礼

ありがとうございます!!offsetは使わないで Sub a() For N = 1 To 5 For I = 1 To 5 Cells(N, I) = (N - 1) * 5 + I Next I Next N End Sub でもできました!!こんなふうに考えるのかーー!とまだその段階ですが、 頑張ります!ありがとうございました。

その他の回答 (2)

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

#1の回答に追加。 (1)For Nextは1つでも出来ます。   5の倍数の次になれば下の行のA列にデータをセッ ト する(復帰改行のイメージ)  Sub test01() i = 0 For k = 1 To 40  x = k Mod 5   If x = 1 Then   i = i + 1   j = 0   End If  j = j + 1  Cells(i, j) = k Next k End Sub (2)For Nextを使わず、変数 i 1つだけでも出来ます。    i=i+1でセル毎に1を加え、5の倍数の次に  なれば下の行のA列にデータをセットする (3)当然For Next以外の制御文も使えます。 (4)エクセル固有の操作を、VBA化することも出来ます。   例えばオートフィルを使う操作をVBA化するもの。   他にもあるかもしれない。 Sub Macro1() Range("A1") = 1 Range("B1") = 2 Range("A1:B1").AutoFill Destination:=Range("A1:E1"), Type:=xlFillDefault 'この行は上の行の右に続けること Range("A2") = 6 Range("B2") = 7 Range("A2:B2").AutoFill Destination:=Range("A2:E2"), Type:=xlFillDefault 'この行は上の行の右に続けること Range("A1:E2").AutoFill Destination:=Range("A1:E8"), Type:=xlFillDefault 'この行は上の行の右に続けること End Sub (5)常に(A)通常のロジックによる解答      (B)エクセル固有の操作を、VBA化する解        答(随分単純になることがあるので。         マクロの記録を活用。)   のどちらが有利か考えてVBAを組むこと。

okiekama
質問者

補足

マクロの記録は活用はちょっとしてます。 で、少し手直しをするとかまでなのです。基本的なことを 勉強しろと言われて、今必死でやってます。アドバイスありがとうございます。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

宿題の答えを書いちゃまずいんでしょうから。 ヒントは「行列」ですね。 1.For~Nextループは「行」「列」二つが必要。 2.ループ制御変数は「行」「列」を示すもの二つが必要。 3.6=1+5、11=6+5、16=11+5のルール。2=1+1、3=2+1のルール。 と、いうことでがんばってみてください。

okiekama
質問者

補足

はい、For Nextは2つ使うとヒントはもらいました。 一生懸命考えましたが、うまくいきません。。。 基本的に、考え方がいまいちわからないのです。これから本を買って勉強もしますが、 もうちょっとヒントなんかをお願いします。(^^;)

関連するQ&A