• ベストアンサー

for文のstepについて

for i=1 to 10 step 4と書くと i=1 5 9の順番だと思いますが、 一番最後のi=10も処理して欲しいのですが、 そのようなことは出来ますか?

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

  • ベストアンサー
回答No.4

Private Sub コマンド6_Click()   Dim I As Integer   Dim J As Integer   Dim S As Integer   J = 10   S = 4   For I = 1 To J Step S     Debug.Print I     If I + S > J And I <> J Then       I = J - S     End If   Next I End Sub 理屈は前の回答と同じです。

その他の回答 (3)

回答No.3

Private Sub コマンド6_Click()   Dim I As Integer   For I = 1 To 10 Step 4     Debug.Print I     If I = 9 Then       I = 6     End If   Next I End Sub コード中に9、6というマジックナンバーを埋め込むので推奨されるやり方ではありませんが・・・。

miya2004
質問者

お礼

ありがとうございます。 ちなみに、開始No終了Noステップ数は変数なので、 今は、i mod step=1か最終Noの時、処理するようにしています。

  • seth0128
  • ベストアンサー率0% (0/1)
回答No.2

まず質問を行う前に使用している言語について書いておくと解答者が答えやすいと思います。 また、そのfor文でどういうことをしたいのかも添えてあるとより良いです。 これはBASICのfor文についての質問ですね。 BASICはあまり使ったことがないのですが調べてみたところ stepで増分を決定しているようなのでそのfor文はi=1,5,9のときのみ実行されるようです。 そのfor文中ではi=10のときにfor文の中身(繰り返し部分)を実行するのは無理だと思うので for文の外にi=10のときの動作に相当する文を書くかstep4を使用せず step1としてif文で1,5,9,10のときのみ特定の動作をするように書いてみてはいかがでしょう。

参考URL:
http://fullbasic.web.fc2.com/220_for.html
回答No.1

できません。stepでそんなことができたら訳分からん。 For Each i In Array(1, 5, 9, 10) とか、 For i = 1 to 10 の中でSelect Case分岐 とかでしょう。

関連するQ&A

  • ACCESS VBA のFor文のStepについて

    ACCESS VBAでFor文を使った構文を作っているのですが、Stepについて+、-は使えたのですが、乗算、割り算は使えないのでしょうか? For i = 10 to 10000 step *10 ~処理 Next i にすると"*"でコンパイルエラーが出ます。 10、100、1000、10000の処理がしたいのです。 Forでは無理なのでしょうか?

  • vbsのfor文に対する質問です。

    vbsのfor文に対する質問です。 Javaでいうところのbreak文と同様の処理はどのようにすれば良いのでしょうか? 例) For i=1 to 10 step 1   If str = "" Then    // for文を抜ける処理   End If next

  • (VBA) FOR文の修正をお願いします。

    基本的な事でうまく処理できません。 下記コードで シート(DATA)の内容を シート(Chapter)に順番(FOR文)に書き出したいのですが  コードの修正をお願いします。 添付画像で説明すると  ①の内容を  ②のように書き換えたいのですが  実際の現在のコードでは③のようになってしまいます。 FOR文の変数(I)とSTEPの値が間違っているのですが  基本的なことですいません。 ------------------------------------------------------------- Set WS1 = Worksheets("DATA") With Worksheets("Chapter") For I = 1 To EndLow - 2 Step 2 .Cells(I, "A") = "CHAPTER" & WS1.Cells(I + 2, "H") & "=" & Format(WS1.Cells(I + 2, "E").Value, "h:mm:ss") .Cells(I + 1, "A") = "CHAPTERNAME=" & WS1.Cells(I + 2, "G") Next End With

  • フォーム & FOR文

    TEXTBOX1,TEXTBOX2,....をFOR文でまわして処理をしたいのですが、 やり方としては For i = 1 To 8 hairetu(i) = TextBox & i &.Text Next にするとエラーになってしまいます。 何か方法はないでしょうか?

  • [VBA] for文の3次元ループ

    for文の3次元ループがうまく働いてくれません。 8通り(2x2x2)の組み合わせ表示を期待しましたが2通り(y1のみ)のみでループが終わってしまいます。エラーなどはでません。何が原因なのか分かりません。ご指導お願いします。 Public x1 As Single, y1 As Single, z1 As Single Sub Start1() i=1 For x1 = 0.3 To 0.4 Step 0.1 For y1 = 0.5 To 0.6 Step 0.1 For z1 = 0.4 To 0.5 Step 0.1 Cells(i, 1) = x1 Cells(i, 2) = y1 Cells(i, 3) = z1 i=i+1 Next z1 Next y1 Next x1 End Sub

  • For文によるセル結合について

    A1:C1~G1:I1をFor文を使ってセル結合したいのですが 何故かうまく動きません。 For x = 1 to 9 step 3 Range("Cells(x,1):Cells(x+2,1)").Merge Next で試したのですがデバックエラーになり。 For x = 1 to 9 step 3 Range("x&1":"x+2&1").Merge Next でもエラーでした。 本にもCellを両方動かすサンプルが無くて困ってます。

  • for文について

    100毎に処理したのですが、以下のようにするとうまくいきません。 for ($i = 100; $i <= 1000; $i+100) { 100から100件単位で1000までという定義はできないのでしょうか?

    • ベストアンサー
    • PHP
  • for分の最後の引数のみの変更プログラム

    現在、for分の使い方について良いアイディアがありません。 やりたい事は、変数iが0以下のときは、forの最後のカウンタを"a++"を行い、0より上の場合は、"a--"の処理を行いたいのです。 もし、よいプログラミング方法がありましたら、ご教授よろしくお願いします。 以下に、プログラムを記述します。 if( i<= 0){ for(a=0;a<120 a++) //a++処理 {   処理(20ステップくらい)  } else{ for(a=0;a<120 a--) //a--処理 { 処理(20ステップくらい) }

  • for文の使い方

    for文の中にif文を入れて使いたいのですが「Nextに対するforがありません」となりエラーが出てしまいます。どうしたらよいのでしょうか? If Option1.Value = True Then For i = 2 To 10  If xlSheet.Cells(i, 2).Value > 10 Then Form2.List1.AddItem xlSheet.Cells(i, 1) Next i End If End If

  • For文と配列

    下のFor文でセルに0から9999の数字を入力しようとしたのですが 「forで指定された変数は既に使用されています」というエラーがでます。 Dim i As Integer Dim Num(3) As Integer For Num(0) = 0 To 9 For Num(1) = 0 To 9 For Num(2) = 0 To 9 For Num(3) = 0 To 9 Cells(i, 1) = Num(3) + Num(2) * 10 + Num(1) * 100 + Num(0) * 1000 i = i + 1 Next Num(3) Next Num(2) Next Num(1) Next Num(0) 他には何にも書いていないマクロなので他所で使用しているとも思えないですが うまくゆきません。 続きの作業でNum()を配列として作業したいのでこの形を変えたくありません。 何がいけないのでしょう?

専門家に質問してみよう