VBA의 변수 및 상수

VBA에서는 다른 프로그래밍 언어와 마찬가지로 변수와 상수를 사용하여 값을 저장합니다. 이름에서 알 수 있듯이 변수는 변경될 수 있지만 상수는 고정 값을 저장합니다.

예를 들어, 상수 Pi 3,14159265 값을 저장합니다... 프로그램 실행 중에 숫자 "Pi"는 변경되지 않지만 이러한 값을 상수로 저장하는 것이 여전히 더 편리합니다.

동시에 변수를 사용할 수 있습니다. sVAT_요율 구매한 상품에 대한 VAT 세율을 저장합니다. 변수 값 sVAT_요율 구매하신 상품에 따라 다를 수 있습니다.

데이터 타입

모든 변수와 상수는 특정 데이터 유형입니다. 아래 표는 VBA에서 사용되는 데이터 유형과 가능한 값의 설명 및 범위를 나열합니다.

데이터 유형 크기상품 설명값의 범위
바이트1 바이트양의 정수 바이너리 데이터에 자주 사용0에서 255에
부울2 바이트True 또는 False일 수 있습니다.참 또는 거짓
정수2 바이트정수(소수 부분 없음)-32에서 +768까지
4 바이트큰 정수(소수 부분 없음)от -2 147 483 648 до +2 147 483 647
단일4 바이트단정밀도 부동 소수점 숫자-3.4e38에서 +3.4e38로
8 바이트배정밀도 부동 소수점 숫자-1.8e308에서 +1.8e308로
환율8 바이트소수점 이하 자릿수가 고정된 부동 소수점 숫자от -922 337 203 685 477.5808 до +922 337 203 685 477.5807
날짜8 바이트날짜 및 시간 – 날짜 유형의 데이터는 부동 소수점 숫자로 표시됩니다. 이 숫자의 정수 부분은 날짜를 나타내고 소수 부분은 시간을 나타냅니다.1년 100월 31일부터 9999년 XNUMX월 XNUMX일까지
목적4 바이트개체 참조모든 개체 참조
바뀌고있다문자 집합입니다. String 유형은 고정 또는 가변 길이일 수 있습니다. 가변 길이와 함께 더 일반적으로 사용됨고정 길이 – 최대 약 65자. 가변 길이 – 최대 약 500억 자
변형바뀌고있다날짜, 부동 소수점 또는 문자열을 포함할 수 있습니다. 이 유형은 어떤 유형의 데이터를 입력할지 미리 알 수 없는 경우에 사용됩니다.숫자 – 더블, 문자열 – 문자열

분명히 위의 표를 사용하고 올바른 데이터 유형을 선택하면 메모리를 더 경제적으로 사용할 수 있습니다(예: 데이터 유형 선택 정수 를 받아야 하는 미국 여행자 or 단일 를 받아야 하는 미국 여행자 ). 그러나 더 간결한 데이터 유형을 사용할 때 코드가 과도하게 큰 값을 데이터 유형에 맞추려고 하지 않도록 주의해야 합니다.

변수 및 상수 선언

번역자 주: VBA의 변수에 대해 말하면 매우 중요한 점을 한 가지 더 언급할 가치가 있습니다. 변수를 선언했지만 값을 할당하지 않으면 기본값으로 초기화됩니다.

• 텍스트 문자열은 빈 문자열로 초기화됩니다.

• 숫자 — 값 0;

• 유형 변수 부울 - 거짓;

• 날짜 – 30년 1899월 XNUMX일.

변수나 상수를 사용하려면 먼저 선언해야 합니다. 이렇게 하려면 매크로에 다음과 같은 간단한 코드 줄을 추가합니다.

Dim Имя_Переменной As Тип_Данных

위의 코드 줄에서 변수 _ 이름 코드에서 사용될 변수의 이름이고, 데이터 형식 이 기사의 앞부분에서 제공된 테이블의 데이터 유형 중 하나입니다. 예를 들어:

Dim sVAT_Rate As Single Dim i As Integer

상수도 비슷하게 선언하지만, 상수를 선언할 때는 그 값을 바로 나타내야 한다. 예를 들면 다음과 같습니다.

Const iMaxCount = 5000 Const iMaxScore = 100

Excel에서는 변수를 선언할 필요가 없습니다. 기본적으로 Excel에서 입력되었지만 선언되지 않은 모든 변수는 다음 유형을 갖습니다. 변형 숫자와 텍스트 값을 모두 받아들일 수 있습니다.

따라서 프로그래머는 언제든지 새 변수를 사용할 수 있으며(선언되지 않은 경우에도) Excel은 이를 다음 유형의 변수로 처리합니다. 변형. 그러나 이렇게 하면 안 되는 몇 가지 이유가 있습니다.

  1. 메모리 사용량 및 계산 속도. 데이터 유형을 나타내는 변수를 선언하지 않으면 기본적으로 유형으로 설정됩니다. 변형. 이 데이터 유형은 다른 데이터 유형보다 더 많은 메모리를 사용합니다. 변수당 몇 개의 추가 바이트가 많지 않은 것처럼 들릴 수 있지만 실제로 프로그램에는 수천 개의 변수가 있을 수 있습니다(특히 배열로 작업할 때). 따라서 다음과 같은 변수가 사용하는 추가 메모리 변형, 유형의 변수와 비교 정수 or 단일, 상당한 금액까지 추가할 수 있습니다. 또한 유형의 변수를 사용한 작업 변형 각각 다른 유형의 변수보다 훨씬 느리게 실행됩니다. 변형 계산 속도가 크게 느려질 수 있습니다.
  2. 변수 이름의 오타 방지. 모든 변수가 선언되면 VBA 문을 사용할 수 있습니다. Option Explicit (나중에 이야기하겠습니다) 선언되지 않은 모든 변수를 식별합니다. 이렇게 하면 잘못 작성된 변수 이름으로 인해 프로그램에서 오류가 발생하지 않습니다. 예를 들어, sVAT_요율, 오타를 만들고 이 변수에 값을 할당하여 "VATRate = 0,175"라고 쓸 수 있습니다. 이제부터 변수가 될 것으로 예상됩니다. sVAT_요율 0,175 값을 포함해야 하지만 물론 그렇지 않습니다. 사용된 모든 변수의 필수 선언 모드가 활성화된 경우 VBA 컴파일러는 변수를 찾지 못하기 때문에 즉시 오류를 표시합니다. 부가세율 발표된 것 중.
  3. 선언된 변수 유형과 일치하지 않는 값을 강조 표시합니다. 특정 유형의 변수를 선언하고 다른 유형의 데이터를 할당하려고 하면 오류가 발생하며, 이를 수정하지 않으면 프로그램이 충돌할 수 있습니다. 언뜻 보기에는 이것이 변수를 선언하지 않는 좋은 이유처럼 보일 수 있지만 사실 변수 중 하나가 수신해야 할 잘못된 데이터를 수신한 것으로 밝혀지기 전보다 훨씬 더 좋습니다! 그렇지 않으면 프로그램이 계속 실행되면 결과가 올바르지 않고 예상치 못한 것일 수 있으며 오류의 원인을 찾기가 훨씬 더 어려워집니다. 매크로가 "성공적으로" 실행될 수도 있습니다. 결과적으로 오류가 눈에 띄지 않고 잘못된 데이터로 작업이 계속됩니다!

이와 관련하여 잘못된 데이터 유형을 감지하고 코드에서 이러한 오류를 가능한 한 빨리 수정하는 것이 바람직합니다. 이러한 이유로 VBA 매크로를 작성할 때 모든 변수를 선언하는 것이 좋습니다.

Option Explicit

운영자 Option Explicit VBA 코드에서 사용될 모든 변수가 선언되도록 하고, 컴파일 중(코드 실행이 시작되기 전) 선언되지 않은 모든 변수에 오류 플래그를 지정합니다. 이 연산자를 적용하는 것은 어렵지 않습니다. VBA 파일의 맨 위에 다음 줄을 작성하기만 하면 됩니다.

Option Explicit

항상 삽입하려면 Option Explicit 생성된 각 새 VBA 모듈의 맨 위에 이 작업을 자동으로 수행할 수 있습니다. 이렇게 하려면 옵션을 활성화해야 합니다. 변수 선언 필요 VBA 편집기 설정에서

이것은 다음과 같이 수행됩니다.

  • Visual Basic Editor 메뉴에서 검색을 > 옵션
  • 표시되는 대화 상자에서 탭을 엽니다. 편집자
  • 체크 박스 변수 선언 필요 키를 누릅니다 OK

활성화되면 문자열 Option Explicit 생성된 각 새 모듈의 시작 부분에 자동으로 삽입됩니다.

변수 및 상수의 범위

선언된 각 변수 또는 상수는 고유한 제한된 범위, 즉 이 변수가 존재하는 프로그램의 제한된 부분을 가집니다. 범위는 변수 또는 상수가 선언된 위치에 따라 다릅니다. 예를 들어 변수를 가져 가라. sVAT_요율, 함수에서 사용되는 총비용. 다음 표에서는 변수 범위 지정에 대한 두 가지 옵션에 대해 설명합니다. sVAT_요율모듈에서 두 개의 다른 위치에 선언됨:

옵션 명시적 Dim sVAT_Rate As Single Function Total_Cost() As Double ... End Function
변수의 경우 sVAT_요율 모듈의 맨 처음에 선언된 경우 이 변수의 범위는 전체 모듈(즉, 변수 sVAT_요율 이 모듈의 모든 절차에서 인식됩니다.

따라서 함수에서 총비용 변수 sVAT_요율 어떤 값이 할당되면 동일한 모듈 내에서 실행되는 다음 함수가 변수를 사용합니다 sVAT_요율 같은 의미로.

그러나 다른 모듈에 있는 일부 함수가 호출되면 해당 변수에 대해 sVAT_요율 알려지지 않을 것입니다.

옵션 명시적 함수 Total_Cost() As Double Dim sVAT_Rate As Single ... End 함수
변수의 경우 sVAT_요율 함수의 시작 부분에 선언 총비용, 그 범위는 이 함수로만 제한됩니다(즉, 함수 내에서 총비용, 변수를 사용할 수 있습니다 sVAT_요율, 그러나 외부는 아님).

사용하려고 할 때 sVAT_요율 다른 프로시저에서 이 변수가 함수 외부에서 선언되지 않았기 때문에 VBA 컴파일러가 오류를 보고합니다. 총비용 (연산자를 사용하는 경우 Option Explicit).

위의 예에서 변수는 키워드를 사용하여 모듈 수준에서 선언됩니다. . 그러나 선언된 변수를 다른 모듈에서 사용할 수 있어야 할 수도 있습니다. 이 경우 키워드 대신 변수를 선언하려면 키워드를 사용해야 합니다 공공 영역.

그건 그렇고, 키워드 대신 모듈 수준에서 변수를 선언하려면 키워드를 사용할 수 있습니다 프라이빗 투어, 이는 이 변수가 현재 모듈에서만 사용하기 위한 것임을 나타냅니다.

키워드를 사용하여 상수를 선언할 수도 있습니다. 공공 영역 и 프라이빗 투어, 하지만 키워드 대신 CONST, 그것과 함께.

다음 예는 키워드 사용을 보여줍니다. 공공 영역 и 프라이빗 투어 변수 및 상수에 적용됩니다.

옵션 명시적 공개 sVAT_Rate 단일 공개 Const iMax_Count = 5000 ...    
이 예에서 키워드 공공 영역 변수 선언에 사용 sVAT_요율 및 상수 iMax_Count. 이렇게 선언된 요소의 범위는 현재 프로젝트 전체가 됩니다.

sVAT_요율 и iMax_Count 모든 프로젝트 모듈에서 사용할 수 있습니다.

옵션 명시적 개인 sVAT_Rate As 단일 개인 Const iMax_Count = 5000 ...    
이 예에서 변수를 선언하려면 sVAT_요율 및 상수 iMax_Count 사용된 키워드 프라이빗 투어. 이러한 요소의 범위는 현재 모듈입니다.

sVAT_요율 и iMax_Count 현재 모듈의 모든 프로시저에서 사용할 수 있지만 다른 모듈의 프로시저에서는 사용할 수 없습니다.

댓글을 남겨주세요.