2017-12-29 55 views
0

나는이 코드를 가지고있다 : 1에서 10까지 두 개의 for 루프가있다. 각 루프에서 변수 k이 선언됩니다.현재 범위 오류의 중복 선언입니다. 같은 변수, 가변 범위를 가진 두 개의 루프

Sub Test() 
    Dim i As Long 
    For i = 1 To 10 
     Dim k As Long 
     k = i * 2 

     Debug.Print k 
    Next 


    Dim j As Long 
    For j = 1 To 10 
     Dim k As Long 'error here 
     k = j * 2 

     Debug.Print k 
    Next 

End Sub 

그러나 실행하려고하면 duplicate declaration in the current scope 오류가 발생합니다. 내가 왜 그것을 얻었는지 잘 모르겠다 - 은 그 안에서 선언 된 변수의 범위가 루프에 의해 제한되지 않는다.? 두 번째 루프에서 같은 이름의 변수를 만들 수 있도록 첫 번째 변수의 나머지 부분을 제거 할 수있는 방법이 있습니까?

답변

1

프로 시저에서 변수를 선언 할 때이 변수는 loops뿐 아니라 모든 프로 시저에 유효합니다. 변수를 지울 수있는 경우 설정할 수 있습니다. k = 0

로컬 변수가 Dim 문으로 선언 된 경우 해당 변수는 선언 된 프로 시저가 실행되는 동안에 만 존재합니다. 일반적으로 프로 시저가 실행을 마치면 프로 시저의 로컬 변수 값이 보존되지 않고 해당 변수에 할당 된 메모리가 해제됩니다. 다음에 프로 시저가 실행될 때 모든 로컬 변수가 다시 초기화됩니다.

https://support.microsoft.com/en-us/help/141693/scope-of-variables-in-visual-basic-for-applications

http://www.excel-easy.com/vba/examples/variable-scope.html

+0

인용하지 마십시오 링크. 따옴표가 아닙니다. – TylerH

+0

변수'k'를'for loop' 안에 선언하는 것은 의미가 없습니다. 왜냐하면 매번 루프'k' **가 반복적으로 선언되기 때문에 **. 그래서'for 루프 '밖에서 변수'k'를 선언 하시길 권합니다. – Moreno