• 締切済み

ExcelVBAの「For~Nextステートメント

ExcelVBAの「For~Nextステートメント」が全くわかりません。 変数にいれるなど、本に書いてあるのですが、、いまいち理解できないです。

みんなの回答

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

子供みたいなご質問です、単に参考本と同様の回答しても問題解決になりませんよね。 どういった点が判らない、どういった点が理解できない、等々を自分なりに分析しましょう。 VBAを学習する以前にもう少し論理的な考え方をするようにして下さいとしか言えません。

  • FEX2053
  • ベストアンサー率37% (7987/21355)
回答No.1

基本的には「指定した回数だけ、同じ処理を繰り返す」って ことです。 よくあるのが、連続したデータを取得・処理する場合です。 例えば、セルA1からA10まで順に、事前に用意したデータ DATA(1)からDATA(10)までのデータを設定したい場合。 Range("A1").Select For I = 1 TO 10 Selection.Value = DATA(I) Selection.Offset(1).Select Next なんてことをします。また、データの集計をしたい場合 Total=0 For I=1 TO 10 Total=Total + DATA(I) Next なんて処理もごく普通にありますね。 Do~Loop同様非常にしばしば使う処理ですので、慣れてください。

関連するQ&A

  • For~Nextステートメント  途中で止めるには

    For~Nextステートメント で、変数が5なら止めたいのですがIFを使わない方法があったと思うのですが、 忘れてしまいました。 今は、 +++++++++++++++++++++++++++++ Sub test() Dim i As Long For i = 2 To 10 If i = 5 Then Stop End If Next End Sub +++++++++++++++++++++++++++++ としていますが、 If i = 5 Then Stop End If じゃなくても、一つのメソッドで出来た気がするのですが、 わかる方いらっしゃいますか? ご回答よろしくお願いします。

  • ExcelVBAのSetステートメントについて

    お世話になります。 この土日で、ExcelVBAの勉強でもしようと思っていたのですが 掲題の件で躓いてしまいました。 具体的には、オブジェクト変数には、Setステートメントを使って 「オブジェクトへの参照」を代入するということらしいのですが、 恥ずかしながら理解できませんでした。 当方、財務・法務を担当しているのでプログラミングとは無縁の キャリアを歩んできました。 Setステートメントについて、知見のある方からご指導いただけると 幸いです。どうぞ、よろしくお願い申し上げます。

  • For next使う場合、next iはできない?

    vbsでFor next使う場合、next iはできないのですか? for i = 1 to 2 msgbox "" next i をすると "ステートメントの末尾が不正です"800A401 になります。 しかし for i = 1 to 2 msgbox "" next にすると、問題ないです。 VBAではnext iでも実行できるけどVBSではだめなのでしょうか? 理由を教えてください。

  • ExcelのFor...Nextステートメントについて

    For...Nextステートメントについて質問させて頂きます。 シート1のA1に変数(0.5から2まで、0.05ずつ増加)を挿入し、 シート2のA1で「シート1のA1のそれぞれの変数×2」を計算、 シート3のA1からシート2のA1の結果をそれぞれ縦方向に表記して しよう考えております。 Sub macro1() '画面更新停止 Application.ScreenUpdating = False '自動計算停止 ActiveSheet.EnableCalculation = False Dim sheet1 As Worksheet Set sheet1 = Worksheets(1) 'シート1をアクティブにする sheet1.Activate '変数を宣言する For i = 0.5 To 2 Step 0.05 For j = 1 To 30 'シート1のパラメータの値(A1)を0.5から2まで 0.05 刻みで変化させる sheet1.Cells(1, 1).Value = i '再計算・自動再計算停止 ActiveSheet.EnableCalculation = True ActiveSheet.EnableCalculation = False 'シート2をアクティブにする Sheet2.Activate '再計算・自動再計算停止 ActiveSheet.EnableCalculation = True ActiveSheet.EnableCalculation = False 'シート3をアクティブにする Sheet3.Activate '再計算・自動再計算停止 ActiveSheet.EnableCalculation = True ActiveSheet.EnableCalculation = False 'シート2(A1)の値をシート3の j 列目にコピー&ペースト Sheet3.Range("A" & j).Value = Sheet2.Range("A1").Value Next Next End Sub 上記のコードですと、シート3にA1、A2...にそれぞれ表記される値は全て 同じになりますが、私のしようとしている事は、 シート3のA1にシート1が0.5の時の計算結果、 シート3のA1にシート1が0.55の時の計算結果....というように したいのです。 どのようにすれば良いでしょうか。 VBAにお詳しい方、アドバイス宜しくお願い致します。

  • For Next ステートメントで計算式を代入したいのですが・・・

    For Next ステートメントで計算式を代入したいのですが・・・ excel(2003) VBAでの質問です。 20行ごとに同じような表が20個つづいてあります(さらにそれが複数のシートにある形です)。 それぞれの特定のセルに、計算式を入れていきたいのですが、 現状こんな感じです。 For i = 18 To 400 Step 20 Cells(i, 6).Formula = "=IF(P6>'sheet2'!g18,g1,'sheet2'!f18)" Next i ここで、「=」の右側の計算式の部分のセル「P6」「g18」「g1」「f18」も、変数「i」の値に応じる形で20行ずつさげたいのですが、どうしたらいいのでしょうか?  ちなみに、イメージではこんな感じなのですが   Cells(i, 6).Formula = "=IF(P6+i>'sheet2'!g18+i,g1+i,'sheet2'!f18+i)" 当然エラーが出てしまいます。「P6」の部分を「cells(i-12,16)」とかにしてみても無理でした。 初歩的な質問で申し訳ないのですが、ご教示の程、よろしくお願いいたします。

  • For Each ~ Nextステートメント

    今、1つのブックに200前後のワークシートがあるとします。 For Each ~ Nextステートメントを使って以下のようなプログラムを全てのワークシートに適用したいと考えています。 Sub test() Dim mySht As Worksheet For Each mySht In Worksheets If Range("A2").Value <> "1990/01/31" Then Rows("2:2").Select Selection.Insert Shift:=xlDown Range("A2").Select ActiveCell.FormulaR1C1 = "1990/01/31" End If If Range("A3").Value <> "1990/02/28" Then Rows("3:3").Select Selection.Insert Shift:=xlDown Range("A3").Select ActiveCell.FormulaR1C1 = "1990/02/28" End If ・・・(中略)・・・ Next End Sub しかし、これを実行しても、うまくいきません。 全てのワークシートについて、必ずしもA2のセルが 1990/01/31であるとは限らないことが原因かとは思うんですが、自身ではどうしてもうまくプログラムを書くことが できません。良いお知恵を拝借できればと思います。

  • for next year と for the next year

    for next year と for the next year では、the が入る場合と入らない場合の違いは何でしょう。 文脈の前後で変わってくるのでしょうか。

  • For ~ Next の使い方

    for ~ next 構文の途中でカウンターを進めることはできますか。 For I=1 to 10 処理 if ~ then next 処理 next このようにすると、エラーになります。 仕方なく次のようにしていますが、もっと良い方法はありますか。 For I=1 to 10 処理 if ~ then goto 次の行へ 処理 次の行へ: next

  • Access VBA でのFor_Nextステートメントで使用例の意味が理解できず困っています

    Access VBA の勉強を始めて間もないものですが、あるテキストのFor_Nextステートメント使用の一部分の意味がわかりません。教えてください。 Sub ループのネスト() Dim i As Integer, j As Integer Dim myStr As String '九九の結果を表示する For i = 1 To 9 For j = 1 To 9 myStr = myStr & i * j & " " Next j MsgBox myStr, , i & "の段" myStr = "" Next i End Sub 以上の文面で(1)『myStr = myStr & i * j & " "』でmystrにmyStr & i * j & " "を代入する意味だとは理解できますがmystr&を右辺に記載する意味がわかりません。何故必要でしょうか? (2)『mystr=""』は何故必要なのでしょうか?

  • For ~ Next文

    VB6でのFor~Next文で、指定した数字だけ処理しない方法はありますか? 例えばFor A = 0 To 100でA=20,50,80の場合は処理をスキップするという感じです。

専門家に質問してみよう