2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

VBAでFor文のループ条件を途中で変更できない

Last updated at Posted at 2021-11-27

VBAでForループをj回実行するときに、For文内でjの値を変更しても、ループ回数に反映されません。

test
Sub ボタン1_Click()
    Dim i As Integer
    Dim j As Integer
    
    j = 10
    For i = 0 To j-1 Step 1
        j = 20
    Next i
    
    Call MsgBox(i, vbOKOnly)    
End Sub

VBAの結果
10

上の例では、Forループ内でjを10から20に変更しても、Forループは10回しか実行しません。

なお、Cの場合、for文内でjの値を変更すると、ループ回数に反映されます。

test.c
#include <stdio.h>

void main(void){
	int i;
	int j=10;

	for(i=0;i<j;i++)
	{
		j=20;
	}

	printf("%d\n",i);
}

test.cの結果(gcc)
20

上の例では、forループ内でjを10から20に変更すると、forループは20回実行されます。

Javaは、Cと同様です。

Sample.java
class Sample
{     
    public static void main(String[] args)
    {         
        int i,j=10;

        for(i=0;i<j;i++)
        {
            j=20;
        }

        System.out.println(i);       
    }     
}

Sample.javaの結果(javac)
20
2
0
7

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?