Microsoft로 로그인
로그인하거나 계정을 만듭니다.
안녕하세요.
다른 계정을 선택합니다.
계정이 여러 개 있음
로그인할 계정을 선택합니다.

소개

이 문서에서는 Microsoft Microsoft Excel 하위 프로시저에서 변수를 사용하는 Visual Basic for Applications.

추가 정보

하위 프로시저의 변수

프로그래밍 언어의 강력한 기능은 변수의 내용을 사용하거나 절차의 나중에 변경할 수 있도록 변수에 무언가를 저장할 수 있는 기능입니다. 이 문서에서는 다음과 같은 변수를 사용하는 방법을 Visual Basic.

  • 변수가 선언되는 방식입니다.

  • 변수를 사용할 수 있는 프로시저 및 프로젝트입니다.

  • 변수의 수명입니다.

매크로에서 변수 선언

매크로에서 변수를 선언하는 가장 간단한 방법은 Dim 문을 사용하는 것입니다. 다음 줄은 정수로 두 개의 변수를 선언합니다.

    Dim x As Integer, y As Integer

x 및 y를 정수로 지정하면 정수 변수에 대한 충분한 메모리를 Visual Basic(x 및 y에 각각 2비트)를 설정하고 x 또는 y에 저장된 정보는 -32768과 32767 사이의 정수입니다.

참고: 단일 Dim 문을 사용하여 두 개 이상의 변수를 선언하는 경우 각 변수에 대한 데이터 형식을 지정해야 합니다.

다음 코드와 같이 각 변수에 대한 데이터 형식을 지정하지 않으면 Visual Basic 변수 y만 정수 변수로 설정됩니다. 변수 x는 변형 유형입니다.

    Dim x, y As Integer

자세한 내용은 아래 변형 데이터 형식을 참조하세요.
 

변수 테스트를 수행하기 위해 다음 단계를 수행합니다.

  1. 열려 있는 통합 문서는 저장하고 닫은 다음 새 통합 문서가 열립니다.

  2. 편집기를 Visual Basic(ALT+F11을 누르기)를 시작합니다.

  3. 삽입 메뉴에서 모듈 을 클릭합니다.

  4. 다음 코드를

    입력합니다.
    Sub Variable_Test()     Dim x As Integer, y as Integer
        x = 10
        y = 100
        MsgBox "x 값은 " & x & _
        Chr(13) & "y의 값은 "y"& 있습니다.
    엔드 서브

  5. 매크로 Variable_Test 실행합니다. 다음 메시지를 받게 됩니다.the value of x is 10


    the value of y is 100

  6. 확인을 클릭합니다.

  7. 다음 Variable_Test 매크로에서 다음

    줄을x = 10

  8. to:

    x = "error"

  9. 매크로 Variable_Test 실행합니다.

"오류"는 정수가 아니고 정수 변수 x에 이 문자열 값을 할당하려고 하기 때문에 런타일 오류가 발생합니다.
 

데이터 형식 요약

다음은 일반적인 변수 데이터 형식입니다.

일반적인 변수 데이터 형식

Variant 데이터 형식

변수를 선언할 때 데이터 형식을 지정하지 않은 경우 또는 변수를 Visual Basic 변수에 대한 변형 데이터 형식을 자동으로 지정합니다. 다음은 이 데이터 형식로 선언된 변수의 이점입니다.

  • 변수는 문자열, 날짜, 시간, 부울 또는 숫자 값을 포함할 수 있습니다.

  • 변수는 자동으로 포함된 값을 변환할 수 있습니다.

단점은 변형 변수에 최소 16비트의 메모리가 필요하기 때문이다. 16비트의 메모리는 대규모 프로시저 또는 복잡한 모듈에서 중요할 수 있습니다.

이 매크로에서 어떻게 작동하는지 Variable_Test 다음 단계를 수행합니다.

매크로의 코드를 Variable_Test 다음으로 변경합니다.

Sub Variable_Test()
    Dim x, y
    x = "string"
    y = 1.23
    MsgBox "the value of x is " & x & _
    Chr(13) & "the value of y is " & y
End Sub

매크로 Variable_Test 실행합니다.

변형 변수 x 및 y에 아무 것도 할당할 수 있기 때문에 오류가 수신되지 않습니다.

참고: 또한 다음 줄을 그대로 두면 변수 x 및 y가 Variant 데이터 형식으로 처리될 때 매크로가 계속 작동됩니다.

    Dim x, y

변수의 범위

변수를 선언할 때 동일한 모듈, 다른 모듈 또는 다른 프로젝트의 다른 매크로가 볼 수 있습니다. 모듈에서 변수의 이 가용성을 범위라고 합니다. 범위의 세 가지 유형은 프로시저 수준, 개인 모듈 수준 및 공용 모듈 수준입니다. 범위는 변수 또는 변수를 선언하는 방법 및 위치에 따라 다를 수 있습니다.

프로시저 수준 범위

프로시저 수준 범위가 있는 변수는 선언된 프로시저 외부에서 볼 수 없습니다. 프로시저 수준 범위가 있는 변수의 값을 설정하면 해당 변수의 내용은 다른 매크로에서 볼 수 없습니다.

프로시저 수준 범위가 있는 변수가 선언된 프로시저 외부에서 볼 수 없는지 확인하기 위해 다음 단계를 수행합니다.

  1. 프로젝트에 새 모듈을 삽입합니다.

  2. 다음 매크로를 모두 이 모듈에 입력합니다.
      Sub Macro1() Dim x As Integer x = 10 MsgBox "x, as Macro1에서 볼 수 있는 " & x "다음 줄은 Macro2 Macro2 End Sub Sub Macro2() MsgBox "x, 매크로2에서 볼 수 있는 "& x 엔드 서브"입니다.

  3. Macro1을 실행하면 다음 메시지가

    x, as seen by Macro1 is 10

  4. 확인 클릭하면 다음 메시지가

    x, as seen by Macro2 is

  5. 확인을 클릭합니다.

Macro2는 변수 x가 Macro1에 로컬이기 때문에 변수 x에 대한 값을 표시하지 않습니다.

개인 및 공용 모듈 수준 범위

모듈의 선언 섹션(모듈 맨 위에 있는 모든 하위 프로시저)에서 변수를 정의하고 공용 문, Dim 문 또는 개인 문을 사용하여 변수의 범위를 설정할 수 있습니다. 공개 문을 변수 앞에 놓는 경우 변수는 프로젝트의 모든 모듈의 모든 매크로에서 사용할 수 있습니다. Dim 문 또는 개인 문을 변수 앞에 놓은 경우 변수는 선언되는 모듈의 매크로에만 사용할 수 있습니다.

공용 문과 Dim 문의 차이점을 보시고 다음 단계를 수행합니다.

  1. 열려 있는 통합 문서를 저장하고 닫은 다음 새 통합 문서가 열립니다.

  2. 편집기를 Visual Basic 시작합니다.

  3. 프로젝트에 모듈을 삽입합니다.

  4. Type the following code into this module:
    
    Public x As Integer
    Sub Macro_1a()
        x = 10
        MsgBox x
        Macro_1b
    End Sub
    Sub Macro_1b()
        x = x * 2
        MsgBox x
        Macro2
    End Sub
  5. 프로젝트에 다른 모듈을 삽입합니다.

  6. 이 모듈에 다음 코드를 입력합니다.


    Sub Macro2()     x = x * 3
        MsgBox x
    엔드 서브

  7. Macro_1a 매크로를 실행합니다.

  8. 변수 x가 "공용 x As Integer"로 선언된 경우 프로젝트의 세 매크로 모두 x 값에 액세스할 수 있습니다. 첫 번째 메시지 상자에 10의 값이 표시됩니다. 두 번째 메시지 상자는 20의 값을 Macro_1b. 세 번째 메시지 상자에는 값이 60으로 표시됩니다(x 값이 20으로 변경되어 Macro_1b 매크로2에서 3을 곱하기 때문에).

  9. 첫 번째 모듈의 선언 줄을 다음에서

       Public x As Integer

    to:

       Dim x As Integer

  10. 매크로 Macro_1a 실행합니다.

  11. 변수 x가 "Dim x As Integer"로 선언된 경우 첫 번째 모듈의 매크로만 x 값에 액세스할 수 있습니다. 따라서 첫 번째 메시지 상자에는 값이 10이고 두 번째 메시지 상자는 20 값을 표시하며(x가 2로 곱하기 때문에Macro_1b) 세 번째 메시지 상자에는 0이 표시됩니다(매크로2가 x 값을 표시하지 못하고 매크로 2에서 0의 값이 사용되어 있기 때문에).

  12. 첫 번째 모듈의 선언 줄을 다음에서

      Dim x As Integer

    받는 사람:

        Private x As Integer

  13. 매크로 Macro_1a 실행합니다.

  14. Dim 문을 사용하는 것처럼 개인 문 범위를 사용하여 동일한 메시지 상자가 표시됩니다. 변수 x에는 선언된 모듈에 대한 개인 범위가 동일합니다.


참고: 변수의 범위를 선언된 모듈로 제한하려는 경우 Dim 문 대신 Privatestatement를 사용합니다. 둘 다 동일한 효과를 얻을 수 있지만 개인 문을 사용하는 경우 코드를 읽을 때 범위가 더 명확합니다.
 

변수의 수명

변수가 해당 값을 유지하는 기간을 수명으로 알려져 있습니다. 변수의 값은 수명 동안 변경될 수 있지만 값이 유지됩니다. 또한 변수가 범위를 잃어버리면 값이 더 이상 없습니다.
 

변수의 값 초기화

매크로를 실행하면 모든 변수가 값으로 초기화됩니다. 숫자 변수는 0으로 초기화하고, 가변 길이 문자열은 0 길이 문자열("")으로 초기화하고 고정된 길이 문자열은 ASCII 코드 0으로 채워집니다. 변형 변수는 빈으로 초기화됩니다. 빈 변수는 숫자 컨텍스트의 0과 문자열 컨텍스트에서 0 길이 문자열("")으로 표현됩니다.

프로시저 수준 변수

Dim 문을 사용하여 매크로로 선언된 변수가 있는 경우 매크로가 실행되는 동안 변수는 해당 값을 유지됩니다. 이 매크로가 다른 매크로를 호출하는 경우 이러한 다른 매크로도 실행되는 한 변수의 값은 유지됩니다(다른 매크로에서는 사용할 수 없습니다).

프로시저 수준 변수가 어떻게 작동하는지 설명하기 위해 다음 단계를 수행합니다.

  1. 프로젝트에 새 모듈을 삽입합니다.

  2. 다음 매크로를 이 모듈에Sub Macro1()


        'x를 프로시저 수준 변수로 설정
       Dim x As 정수
       MsgBox "x의 초기화된 값은 " & x입니다.
       x = 10
        MsgBox "x는 " & x입니다.
        '다음 줄은 Macro2를 실행합니다.
        Macro2
        MsgBox "x는 여전히 " & x입니다.
    엔드 서브
    Sub Macro2()
        MsgBox "x, Macro2에서 볼 수 있는 것 처럼" & x
    엔드 서브

  3. Macro1을 실행합니다.

  4. 다음 메시지가 표시됩니다.

        the initialized value of x is 0

  5. 확인 클릭하면 메시지가 표시됩니다.

     x is 10

  6. 확인 클릭하면 다음 메시지가

    x, as seen by Macro2 is

  7. 확인 을 클릭합니다.

  8. Macro2는 변수 x가 Macro1에 로컬이기 때문에 변수 x에 대한 값을 표시하지 않습니다. 다음 메시지가 표시됩니다.

    x is still 10

  9. 확인을 클릭합니다.

  10. Macro1 을 실행합니다.

매크로1이 6단계에서 실행을 중지하면 변수 x 값이 손실되어 3~6단계에 설명된 동일한 메시지를 받게 됩니다. 따라서 7단계에서 Macro1을 다시 시작하면 첫 번째 메시지는 x 값을 0(초기화된 값)으로 표시됩니다.

정적 키워드

정적 키워드를 사용하여 프로시저 수준 변수를 선언하는 경우 변수는 프로젝트를 다시 설정할 때까지 해당 값을 유지됩니다. 따라서 정적 변수가 있는 경우 다음에 프로시저를 호출할 때 정적 변수가 마지막 값으로 초기화됩니다.

정적 키워드의 작동 방식은 다음 단계를 따릅니다.

  1. Change the code in Macro1 to:
    
    Sub Macro1()
        'set x as a procedure level variable
        Static x As Integer
           MsgBox "the initialized value of x is " & x
        x = x + 10
        MsgBox "x is " & x
    End Sub
  2. Macro1을 실행합니다.

  3. 메시지:the initialized value of x is 0

  4. 확인 클릭하면 메시지가

    표시됩니다.x is 10

  5. 확인을 클릭합니다.

  6. Macro1을 실행하면 다음 메시지가

    the initialized value of x is 10

  7. 확인 클릭하면 다음 메시지가

    x is 20

  8. 확인을 클릭합니다.

메시지에 나타나는 값은 변수 x가 정적 변수로 선언되고 변수가 매크로1을 처음 실행한 후 해당 값을 유지하기 때문에 두 번째로 다릅니다.

참고:  모듈 수준 변수가 있는 경우 해당 수명은 정적 프로시저 수준 변수인 경우와 동일합니다.

모듈 수준 변수의 수명을 확인하기 위해 다음 단계를 수행합니다.

  1. Change the code in the module that contains Macro1 to the following:
    
    Dim x As Integer  'create a module-level variable
    Sub Macro1()
       MsgBox "the initialized value of x is " & x
       x = x + 10
       MsgBox "x is " & x
    End Sub
  2. Macro1을 실행하면 다음 메시지가

    the initialized value of x is 0

  3. 확인을 클릭하면 다음 메시지가

    x is 10

  4. 확인을 클릭합니다.

  5. Macro1을 실행하면 다음 메시지가

    the initialized value of x is 10

  6. 확인을 클릭합니다.

  7. 다음 메시지가x is 20

  8. 확인을 클릭합니다.

메시지에 나타나는 값은 변수 x가 정적 변수로 선언되고 매크로1을 처음 실행한 후 해당 값을 유지하기 때문에 두 번째로 다릅니다.
 

변수를 다시 설정하기 위해 프로젝트 재설정

정적 변수 또는 모듈 수준 변수에 대한 값을 다시 설정하려면 에서 다시 설정 단추를 클릭합니다.
표준 도구 모음을 클릭하거나 실행 메뉴에서 재설정을 클릭합니다.

Macro1 프로젝트에 대해 이 작업을 한 다음 Macro1을다시 시작하면 변수 x의 값이 다시 0으로 초기화됩니다. 첫 번째 메시지가 표시됩니다.

    the initialized value of x is 0

도움이 더 필요하세요?

더 많은 옵션을 원하세요?

구독 혜택을 살펴보고, 교육 과정을 찾아보고, 디바이스를 보호하는 방법 등을 알아봅니다.

커뮤니티를 통해 질문하고 답변하고, 피드백을 제공하고, 풍부한 지식을 갖춘 전문가의 의견을 들을 수 있습니다.

이 정보가 유용한가요?

언어 품질에 얼마나 만족하시나요?
사용 경험에 어떠한 영향을 주었나요?
제출을 누르면 피드백이 Microsoft 제품과 서비스를 개선하는 데 사용됩니다. IT 관리자는 이 데이터를 수집할 수 있습니다. 개인정보처리방침

의견 주셔서 감사합니다!

×