Excel 매크로의 변수 및 상수 이해

이 기사에서는 매크로에 어떤 상수와 변수가 있는지, 어디에 사용할 수 있는지, 다른 데이터 유형 간의 주요 차이점은 무엇인지 배울 것입니다. 또한 변수를 작성하고 변경하지 않을 수 있다면 상수가 필요한 이유도 밝혀질 것입니다.

다른 프로그래밍 언어와 마찬가지로 데이터는 변수나 상수에 저장할 수 있습니다(둘 모두 종종 데이터 컨테이너라고도 함). 이것이 이러한 개념의 주요 차이점입니다. 전자는 프로그램에서 발생하는 상황에 따라 변경될 수 있습니다. 차례로, 상수는 한 번 설정되고 값을 변경하지 않습니다.

동일한 큰 값을 여러 번 사용해야 하는 경우 상수가 유용할 수 있습니다. 숫자를 복사하는 대신 상수 이름을 쓰면 됩니다. 예를 들어 상수 "Pi"를 사용하여 상수 값인 Pi를 저장할 수 있습니다. 크기가 매우 커서 매번 쓰거나 검색하고 복사하기가 상당히 어렵습니다. 그래서 XNUMX글자만 쓰면 충분하고, 환경은 자동으로 원하는 숫자를 사용합니다.

Excel 사용자는 변수에 저장된 값을 수시로 변경해야 하는 경우 변수를 선언해야 합니다. 예를 들어, sVAT_Rate라는 변수를 설정할 수 있습니다. 이 변수는 제품에 대한 현재 VAT 세율을 저장합니다. 변경되면 빠르게 수정할 수 있습니다. 이것은 일부 상품이 VAT가 전혀 부과되지 않을 수 있는 미국에서 사업을 하는 사람들에게 특히 유용합니다(이 세금도 주마다 다름).

데이터 타입

각 데이터 컨테이너는 여러 유형 중 하나일 수 있습니다. 다음은 처리된 정보의 표준 유형을 설명하는 표입니다. 그것들이 많이 있으며 처음에는 초보자에게 서로 반복하는 것처럼 보일 수 있습니다. 그러나 이것은 허구적인 느낌입니다. 올바른 데이터 유형을 지정하는 것이 왜 중요한지 알아보려면 계속 읽으십시오.

적은 수에 대해 메모리에서 더 많은 공간을 차지하는 데이터 유형을 사용하는 것은 권장되지 않습니다. 예를 들어 숫자 1의 경우 Byte 유형을 사용하면 됩니다. 이것은 특히 약한 컴퓨터에서 실행 모듈의 성능에 긍정적인 영향을 미칩니다. 그러나 여기서 너무 멀리 가지 않는 것이 중요합니다. 너무 작은 데이터 형식을 사용하면 너무 큰 값이 맞지 않을 수 있습니다.

상수 및 변수 선언

먼저 선언하지 않고 데이터 컨테이너를 사용하는 것은 강력히 권장하지 않습니다. 그러면 여러 가지 문제가 발생할 수 있으며 이를 방지하기 위해 변수나 상수를 열거하는 몇 줄의 코드를 작성해야 합니다.

변수를 선언하기 위해 Dim 문을 사용합니다. 예를 들면 다음과 같습니다.

Dim Variable_Name을 정수로

Variable_Name은 변수의 이름입니다. 다음으로 데이터 유형을 나타내는 As 연산자가 작성됩니다. "Variable_Name" 및 "Integer" 문자열 대신 자신의 이름과 데이터 유형을 삽입할 수 있습니다.

상수도 선언할 수 있지만 먼저 해당 값을 지정해야 합니다. 옵션 중 하나는 다음과 같습니다.

구성 iMaxCount = 5000

공평하게, 어떤 경우에는 변수를 선언하지 않고도 할 수 있지만 이 경우에는 자동으로 Variant 유형이 할당됩니다. 그러나 다음과 같은 이유로 권장되지 않습니다.

  1. Variant는 훨씬 느리게 처리되며 이러한 변수가 많으면 약한 컴퓨터에서 정보 처리가 크게 느려질 수 있습니다. 그 초가 결정될 것 같습니까? 그러나 많은 수의 코드를 작성해야 하고 약한 컴퓨터에서도 실행해야 하는 경우(현대 오피스 제품군에는 많은 RAM이 필요하기 때문에 여전히 판매됨) 작업을 완전히 중지할 수 있습니다. 잘못된 매크로 작성으로 인해 RAM이 적고 복잡한 작업을 수행하도록 설계되지 않은 스마트북이 정지되는 경우가 있습니다. 
  2. 이름의 잘못된 인쇄가 허용되며, 이는 Option Explicit 문을 사용하여 방지할 수 있습니다. 이 문을 사용하면 선언되지 않은 변수를 찾을 수 있습니다. 약간의 오타로 인해 인터프리터가 변수를 식별할 수 없기 때문에 이것은 오류를 감지하는 쉬운 방법입니다. 그리고 변수 선언 모드를 켜면 모듈의 맨 처음에 선언되지 않은 데이터 컨테이너가 발견되면 인터프리터에서 매크로 실행을 허용하지 않습니다.
  3. 데이터 유형과 일치하지 않는 변수 값으로 인한 오류를 방지합니다. 일반적으로 정수 변수에 텍스트 값을 할당하면 오류가 발생합니다. 네, 한편으로 제네릭 형식은 선언 없이 할당되지만 미리 선언하면 임의 오류를 피할 수 있습니다.

따라서 모든 것에도 불구하고 Excel 매크로에서 모든 변수를 선언하는 것이 좋습니다.

변수를 선언할 때 한 가지 더 명심해야 할 것이 있습니다. 변수를 선언할 때 변수에 값을 할당하지 않을 수도 있지만 이 경우 기본값을 얻습니다. 예를 들어:

  1. 행이 비어 있습니다.
  2. 숫자는 0의 값을 갖습니다.
  3. 부울 유형의 변수는 처음에 거짓으로 간주됩니다.
  4. 기본 날짜는 30년 1899월 XNUMX일입니다.

예를 들어 이전에 값이 지정되지 않은 경우 정수 변수에 값 0을 할당할 필요가 없습니다. 그녀는 이미 이 번호를 가지고 있습니다.

옵션 명시적 진술

이 문을 사용하면 VBA 코드에 사용되는 모든 변수를 선언하고 코드가 실행되기 전에 선언되지 않은 컨테이너가 있는지 확인할 수 있습니다. 이 기능을 사용하려면 매크로 코드 맨 위에 Option Explicit 코드 한 줄을 작성하면 됩니다.

매번 이 명령문을 코드에 포함해야 하는 경우 VBA 편집기의 특수 설정을 사용하여 수행할 수 있습니다. 이 옵션을 활성화하려면 다음을 수행해야 합니다.

  1. 도구 > 옵션 경로를 따라 개발 환경으로 이동합니다.
  2. 이 후에 열리는 창에서 편집기 탭을 엽니다.
  3. 마지막으로 Require Variable Declaration 항목 옆의 확인란을 선택합니다.

이 단계가 완료되면 "확인" 버튼을 클릭합니다. 

이제 각 새 매크로를 작성할 때 이 줄이 코드 맨 위에 자동으로 삽입됩니다.

상수 및 변수의 범위

각 변수 또는 상수에는 제한된 범위만 있습니다. 선언 위치에 따라 다릅니다.

함수가 있다고 가정합니다. 총_비용(), 그리고 그것은 변수를 사용합니다 sVAT_요율. 모듈의 위치에 따라 범위가 다릅니다.

Option Explicit

Dim sVAT_단일 요금

함수 Total_Cost()를 Double로

.

.

.

최종 기능

변수가 모듈 자체의 맨 위에 선언되면 해당 모듈 전체에 전파됩니다. 즉, 모든 절차에서 읽을 수 있습니다.

또한 프로시저 중 하나가 변수 값을 변경하면 다음 프로시저에서도 이 수정된 값을 읽습니다. 그러나 다른 모듈에서 이 변수는 여전히 읽히지 않습니다.

Option Explicit

함수 Total_Cost()를 Double로

Dim sVAT_단일 요금

   .

   .

   .

최종 기능

이 경우 변수는 프로시저 내에서 선언되며 다른 프로시저에서 사용되면 인터프리터에서 오류가 발생합니다.

다른 모듈에서 변수를 읽으려면 Dim 키워드 대신 Public 키워드를 사용해야 합니다. 마찬가지로 Dim이라는 단어 대신 작성된 Public 문을 사용하여 변수의 범위를 현재 모듈로만 제한할 수 있습니다.

상수의 범위도 비슷한 방식으로 설정할 수 있지만 여기서 키워드는 Const 연산자와 함께 작성됩니다.

다음은 상수 및 변수와 함께 작동하는 방법에 대한 좋은 예가 있는 표입니다.

Option Explicit

공개 sVAT_단일 요금

공용 구성 iMax_Count = 5000

이 예제에서는 Public 키워드를 사용하여 변수를 선언하는 방법과 Visual Basic 편집기에서 공용 상수를 선언하기 위해 작성해야 하는 내용을 볼 수 있습니다. 이러한 값 컨테이너의 범위는 모든 모듈에 적용됩니다.
Option Explicit

개인 sVAT_단일 요금

개인 구성 iMax_Count = 5000

여기에서 변수와 상수는 Private 키워드를 사용하여 선언됩니다. 즉, 현재 모듈 내에서만 볼 수 있고 다른 모듈의 프로시저에서는 사용할 수 없습니다.

상수와 변수가 필요한 이유

상수와 변수를 사용하면 코드의 이해도를 높일 수 있습니다. 그리고 일반적으로 초보자가 변수가 필요한 이유에 대해 질문이 없다면 상수의 필요성과 관련하여 많은 모호성이 있습니다. 그리고 이 질문은 언뜻 보기에 매우 논리적으로 보입니다. 결국 변수는 한 번 선언하고 다시는 변경할 수 없습니다.

답은 메모리에서 큰 공간을 차지하는 데이터 유형의 사용과 관련하여 동일한 평면의 어딘가에 있는 것으로 나타났습니다. 엄청난 수의 변수를 처리하는 경우 실수로 기존 컨테이너를 변경할 수 있습니다. 사용자가 특정 값이 절대 변경되지 않는다고 규정하면 환경이 이를 자동으로 제어합니다.

이것은 매크로가 여러 프로그래머에 의해 작성될 때 특히 중요합니다. 어떤 변수는 변경되어서는 안 된다는 것을 알 수 있습니다. 그리고 다른 하나는 그렇지 않습니다. Const 연산자를 지정하면 다른 개발자가 이 값이 변경되지 않음을 알 수 있습니다.

또는 하나의 이름을 가진 상수가 있고 변수의 이름은 다르지만 유사한 경우입니다. 개발자는 단순히 혼동할 수 있습니다. 예를 들어 변경할 필요가 없는 변수를 Variable11이라고 하고 편집할 수 있는 변수를 Variable1이라고 합니다. 사람은 자동으로 코드를 작성할 때 실수로 추가 단위를 건너뛰고 눈치채지 못할 수 있습니다. 결과적으로 값의 컨테이너가 변경되어 건드리지 않아야 합니다.

또는 개발자 자신이 만질 수 있는 변수와 만질 수 없는 변수를 잊어버릴 수 있습니다. 이것은 코드가 몇 주 동안 작성되고 크기가 커질 때 자주 발생합니다. 이 시간 동안 이 변수나 저 변수가 의미하는 바를 잊어버리기가 매우 쉽습니다.

예, 이 상황에서 주석으로 할 수 있지만 Const라는 단어를 지정하는 것이 더 쉽지 않습니까?

결론

변수는 계산에서 사용자에게 특정 이벤트에 대해 알리거나 스프레드시트 셀의 특정 값 지정에 이르기까지 복잡한 작업을 수행할 수 있는 매크로 프로그래밍의 필수 구성 요소입니다.

개발자가 이러한 컨테이너의 내용이 미래에 변경되지 않을 것임을 확실히 알고 있는 경우 상수를 사용해야 합니다. 실수로 실수할 수 있으므로 변수를 대신 사용하지 않는 것이 좋습니다.

댓글을 남겨주세요.