끊임없는
계속해서 반복되는 상수 값이 포함된 코드를 찾는 것은 흔한 일입니다. 코드에서 명확한 의미가 없어 기억하기 어려운 숫자를 사용하는 경우도 있습니다.
이러한 경우 상수를 사용하면 코드의 가독성과 유지 관리성을 크게 향상시킬 수 있습니다. 상수는 절대 변하지 않는 숫자 값이나 문자열을 대체하는 의미 있는 이름입니다. 상수는 변수와 다소 비슷하지만 변수처럼 수정할 수 없으며 상수에 새 값을 할당할 수도 없습니다. 상수는 두 가지 소스에서 나옵니다.
1. 내부 또는 시스템 정의 상수는 애플리케이션과 컨트롤에 의해 제공됩니다. Visual Basic 상수는 "개체 브라우저"의 VB(Visual Basic) 및 VBA(Visual Basic for Application) 개체 라이브러리에 나열됩니다. Microsoft Excel 및 Microsoft P Project와 같이 개체 라이브러리를 제공하는 다른 응용 프로그램도 응용 프로그램의 개체, 메서드 및 속성과 함께 사용할 수 있는 상수 목록을 제공합니다. 상수는 각 ActiveX 컨트롤의 개체 라이브러리에도 정의됩니다. 개체 브라우저 사용에 대한 자세한 내용은 9장 "개체를 사용한 프로그래밍"을 참조하십시오.
2. 기호 또는 사용자 정의 상수는 Const 문을 사용하여 선언됩니다. 사용자 정의 상수는 다음 섹션인 "자신만의 상수 만들기"에서 설명됩니다.
Visual Basic에서 상수 이름은 대소문자 혼합 형식이며 해당 접두사는 상수가 정의된 개체 라이브러리의 이름을 나타냅니다. Visual Basic 및 Visual Basic for Application 개체 라이브러리의 상수는 vbTileHorizontal과 같이 vb로 시작합니다.
접두사를 디자인할 때 실수로 인한 충돌을 방지하기 위해 최선을 다해야 합니다. 이름은 같지만 값이 다른 상수는 존재하지 않아야 합니다. 접두사가 사용되더라도 두 개체 라이브러리에는 여전히 서로 다른 값을 나타내는 동일한 상수가 포함될 수 있습니다. 이 경우 어떤 상수가 참조되는지는 어떤 개체 라이브러리의 우선순위가 더 높은지에 따라 달라집니다. 개체 라이브러리 우선 순위 변경에 대한 자세한 내용은 "참조 대화 상자" 절을 참조하십시오.
상수 이름 충돌이 발생하지 않도록 하려면 다음 구문을 사용하여 상수에 대한 참조를 한정할 수 있습니다.
[libname.][모듈 이름.]constname
Libname은 일반적으로 컨트롤이나 라이브러리의 클래스 이름입니다. Modulename은 상수가 정의된 모듈의 이름입니다. Constname은 상수 이름입니다. 각 요소는 개체 라이브러리에 정의되어 있으며 개체 브라우저에서 볼 수 있습니다.
나만의 상수 만들기
상수 선언 구문은 다음과 같습니다 .
[공개|비공개]상수 상수 이름[Astype]=표현식
매개변수 Constantname은 유효한 기호 이름(규칙은 변수 이름 설정 규칙과 동일)이며 표현식은 숫자 상수 또는 문자열 상수와 연산자로 구성되지만 표현식에서는 함수 호출을 사용할 수 없습니다.
Const 문은 수량, 날짜 및 시간을 나타낼 수 있습니다.
ConstconPi=3.14159265358979
PublicConstconMaxPlanetsAsInteger=9
ConstconReleaseDate=#1/1/95#
문자열 상수는 Const 문을 사용하여 정의할 수도 있습니다.
PublicConstconVersion=07.10.A
ConstconCodeName=수수께끼
여러 상수 선언을 쉼표로 구분하면 한 줄에 배치할 수 있습니다.
PublicConstconPi=3.14,conMaxPlanets=9,_
콘월드팝=6E 09
등호(=) 오른쪽에 있는 표현식은 숫자 또는 리터럴 문자열인 경우가 많지만 결과가 숫자 또는 문자열인 표현식일 수도 있습니다(단, 표현식에는 함수 호출이 포함될 수 없음). 이전에 정의된 상수를 사용하여 새 상수를 정의할 수도 있습니다.
ConstconPi2=conPi*2 상수가 정의되면 코드를 더 읽기 쉽게 만들기 위해 코드에 배치할 수 있습니다. 예를 들어:
StaticSolarSystem(1ToconMaxPlanets)
IfnumPeople>conWorldPopThenExitSub
사용자 정의 상수의 범위 설정
변수 선언과 마찬가지로 Const 문에는 범위가 있으며 동일한 규칙을 사용합니다.
프로시저 내에서만 존재하는 상수를 만들려면 프로시저 내에서 상수를 선언하세요.
모듈의 모든 프로시저에는 유효하지만 모듈 외부의 코드에는 유효하지 않은 상수를 만들려면 모듈의 선언 섹션에서 상수를 선언하세요.
애플리케이션 전체에서 유효한 상수를 만들려면 표준 모듈의 선언 섹션에서 이를 선언하고 Const 앞에 Public 키워드를 배치하세요. 공용 상수는 양식 모듈이나 클래스 모듈에서 선언할 수 없습니다.
범위에 대한 자세한 내용 은 이 장 앞부분의 "변수 범위 이해" 섹션을 참조하십시오.
순환 참조를 피하세요
상수는 다른 상수의 관점에서 정의될 수 있으므로 두 개 이상의 상수 사이에 순환 또는 순환 참조를 생성하지 않도록 주의해야 합니다. 프로그램에 두 개 이상의 공개 상수가 있고 각 공개 상수가 다른 공개 상수에 의해 정의되면 루프가 발생합니다. 예를 들어:
'모듈1에서:
PublicConstconA=conB*2 '애플리케이션 전체에서
'는 '에서 유효합니다.
'모듈 2에서:
PublicConstconB=conA/2 '애플리케이션 전체에서
'는 '에서 유효합니다.
루프가 발생하면 Visual Basic은 응용 프로그램을 실행하려고 할 때 오류 메시지를 생성합니다. 순환 참조를 확인하지 않으면 프로그램을 실행할 수 없습니다. 순환을 피하기 위해 공개 상수를 단일 모듈 또는 최대 몇 개의 모듈로 제한할 수 있습니다.
데이터 유형
변수는 값을 저장하는 데 사용되는 장소이며 이름과 데이터 유형이 있습니다. 변수의 데이터 유형은 해당 값을 나타내는 비트가 컴퓨터 메모리에 저장되는 방식을 결정합니다. 변수를 선언할 때 변수의 데이터 유형을 지정할 수도 있습니다. 모든 변수에는 저장할 수 있는 데이터 종류를 결정하는 데이터 유형이 있습니다.
기본적으로 선언에 데이터 유형이 지정되지 않은 경우 변수의 데이터 유형은 Variant입니다. Variant 데이터 유형은 카멜레온과 같아서 상황에 따라 다양한 데이터 유형을 나타낼 수 있습니다. 지정된 변수가 Variant 변수이면 데이터 형식 간에 변환할 필요가 없습니다. Visual Basic에서는 필요한 다양한 변환을 자동으로 완료합니다.
그러나 변수가 항상 특정 형식의 데이터를 저장한다는 것을 알고 해당 특정 형식의 변수를 선언하면 Visual Basic에서 이 데이터를 더 효율적으로 처리합니다. 예를 들어, 사람의 이름을 저장하는 변수는 이름이 항상 문자로 구성되기 때문에 문자열 데이터 유형으로 가장 잘 표현됩니다.
변수 외에도 데이터 유형은 다른 상황에서도 사용됩니다. 속성에 값을 할당할 때 값에는 데이터 유형이 있습니다. 함수의 매개변수에도 데이터 유형이 있습니다. 실제로 Visual Basic에서는 데이터와 관련된 모든 것이 데이터 형식과 관련되어 있습니다.
또한 모든 기본 유형의 배열을 선언할 수도 있습니다.
세부정보 자세한 내용은 이 장 뒷부분의 "어레이" 섹션을 참조하세요. 15장 "성능 및 호환성을 위한 설계"에서는 데이터 유형을 선택하여 애플리케이션 성능을 향상시키는 방법도 설명합니다.
데이터 유형으로 변수 선언
Variant가 아닌 변수를 사용하기 전에 Private, Public, Dim 또는 Static 문을 사용하여 변수를 Astype으로 선언해야 합니다. 예를 들어, 다음 문은 각각 Integer, Double, String 및 통화 유형의 변수를 선언합니다.
PrivateIA정수
DimAmtAsDouble
정적YourNameAsString
PublicBillsPaidAsCurrency
선언문은 여러 선언을 결합할 수 있습니다. 다음 설명을 참조하세요.
PrivateIAsInteger,AmtAsDouble
PrivateYourNameAsString,BillsPaidAsCurrency
PrivateTest,금액,JAsInteger
데이터 유형이 제공되지 않으면 지정된 변수는 기본 유형입니다. 위의 예에서 Test 및 Amount 변수는 Variant 데이터 유형입니다. 다른 프로그래밍 언어를 사용한 경험으로 인해 동일한 선언문의 모든 변수가 동일한 지정된 데이터 유형(이 경우 Integer)을 가지고 있다고 믿게 되었다면 여기의 결과가 새로 고쳐질 수 있습니다.
숫자 데이터 유형
VisualBasic은 Integer(정수), Long(긴 정수), Single(단정밀도 부동 소수점), Double(이중 정밀도 부동 소수점) 및 통화(통화)와 같은 여러 숫자 데이터 형식을 지원합니다. 숫자 유형은 일반적으로 Variant 유형보다 저장 공간을 덜 차지합니다.
변수가 소수점이 있는 숫자(예: 3.57) 대신 항상 정수(예: 12)를 저장한다는 것을 알고 있는 경우 해당 변수를 Integer 또는 Long 유형으로 선언해야 합니다. 정수는 다른 데이터 유형보다 작업을 더 빠르게 수행하고 메모리를 덜 차지합니다. 정수 유형은 For...Next 루프 내에서 카운터 변수로 사용될 때 특히 유용합니다.
제어 구조에 대한 자세한 내용 은 이 장 뒷부분의 "제어 구조 개요"를 참조하십시오. 변수에 소수가 포함된 경우 Single, Double 또는 통화 변수로 선언할 수 있습니다. 통화 데이터 형식은 소수점 오른쪽 4자리, 소수점 왼쪽 15자리를 지원하며 통화 계산에 적합한 정밀한 고정 소수점 데이터 형식입니다. 부동 소수점(단일 및 이중) 숫자는 통화보다 유효 범위가 훨씬 크지만 작은 캐리 오류가 발생할 수 있습니다.
부동 소수점 값 은 mmmEeee 또는 mmmDeee로 표시될 수 있습니다. 여기서 mmm은 가수이고 eee는 지수(10의 거듭제곱)입니다. Single 데이터 유형의 최대 양수 값은 3.402823E 38 또는 3.4 x 10의 38제곱입니다. Double 데이터 유형의 최대 양수 값은 1.79769313486232D 308 또는 1.8 x 10의 38제곱입니다. D를 사용하여 숫자 리터럴의 가수 부분과 지수 부분을 분리하면 값이 Double 데이터 유형으로 처리됩니다. 마찬가지로 E를 이런 방식으로 사용하면 값이 Single 데이터 유형으로 처리됩니다.
바이트 데이터 유형
변수에 이진수가 포함되어 있으면 이를 바이트 데이터 유형의 배열로 선언합니다(배열은 이 장 뒷부분의 "배열"에서 설명합니다). 바이트 변수에 이진 데이터를 저장하면 형식 변환 중에 데이터가 보존됩니다. 문자열 변수가 ANSI 형식과 유니코드 형식 간에 변환되면 변수의 모든 이진 데이터가 삭제됩니다. Visual Basic은 다음 상황에서 ANSI와 유니코드 간에 자동으로 변환합니다.
파일을 읽을 때
파일을 쓸 때
DLL을 호출할 때
객체의 메소드와 속성을 호출할 때
단항 빼기를 제외하고 정수에 대해 연산을 수행할 수 있는 모든 연산자는 Byte 데이터 형식에 대해 연산을 수행할 수 있습니다. Byte는 0~255의 unsigned type이기 때문에 음수를 표현할 수 없습니다. 따라서 단항 뺄셈을 수행할 때 VisualBasic은 먼저 바이트를 부호 있는 정수로 변환합니다.
모든 숫자 변수는 서로 할당되거나 Variant 유형 변수에 할당될 수 있습니다. 부동 소수점 숫자를 정수에 할당하기 전에 Visual Basic에서는 부동 소수점 숫자를 제거하는 대신 소수 부분을 반올림합니다.
세부 정보 유니코드 및 ANSI 변환에 대한 자세한 내용은 16장, "국제화"를 참조하십시오.
문자열 데이터 유형
변수에 항상 문자열이 포함되고 숫자 값이 포함되지 않는 경우 이를 문자열 유형으로 선언할 수 있습니다.
PrivateSAsString
그런 다음 이 변수에 문자열을 할당하고 문자열 함수를 사용하여 해당 변수에 대해 작업을 수행할 수 있습니다.
S=데이터베이스
S=왼쪽(S,4)
기본적으로 문자열 변수 또는 매개변수는 가변 길이 문자열입니다. 새 데이터가 문자열에 할당되면 길이가 늘어나거나 줄어들 수 있습니다. 문자열의 길이가 고정되도록 선언하는 것도 가능합니다. 고정 길이 문자열은 다음 구문을 사용하여 선언할 수 있습니다.
문자열*크기
예를 들어 50자 문자열을 선언하려면 다음 문을 사용합니다.
DimEmpNameAsString*50
문자열에 50자 미만이 할당되면 EmpName의 누락된 부분이 공백으로 채워집니다. 문자열에 할당된 길이가 너무 길어서 고정 길이 문자열이 될 수 없는 경우 Visual Basic에서는 초과 문자를 직접 자릅니다.
고정 길이 문자열은 추가 공간의 끝 부분에 공백이 채워지기 때문에 공백을 제거하는 Trim 및 RTrim 함수는 고정 길이 문자열을 처리할 때 매우 유용할 수 있습니다. 표준 모듈의 고정 길이 문자열은 공개 또는 비공개로 선언될 수 있습니다. 양식 및 클래스 모듈에서 고정 길이 문자열은 Private로 선언되어야 합니다.
자세한 내용은 "Visual Basic 6.0 언어 참조 설명서"의 "Ltrim, RTrim 및 Trim 함수"를 참조하세요.
문자열과 숫자 바꾸기
문자열이 숫자 값을 나타내는 경우 문자열을 숫자 변수에 할당할 수 있습니다. 문자열 변수에 숫자 값을 할당할 수도 있습니다. 예를 들어 명령 단추, 텍스트 상자 및 목록 상자를 폼에 배치합니다. 명령 단추의 Click 이벤트에 다음 코드를 입력합니다. 응용 프로그램을 실행하고 명령 단추를 클릭하십시오.
PrivateSubCommand1_Click()
DimintXAs정수
DimstrYAsString
strY=100.23
intX=strY '문자열을 숫자 변수에 전달합니다.
List1.AddItemCos(strY) '문자열 값의 코사인 값을 추가합니다.
'목록 상자에 추가합니다.
strY=Cos(strY) '코사인 값을 문자열 변수로 전송합니다.
Text1.Text=strY '텍스트 상자에 문자열을 표시합니다.
EndSub
Visual Basic은 자동으로 변수를 적절한 데이터 형식으로 지정합니다. 문자열과 숫자 값을 변환할 때는 주의하세요. 전달된 문자열의 값이 숫자 값이 아닌 경우 런타임 시 오류가 발생합니다.
부울 데이터 유형
변수의 값이 "true/false", "yes/no", "on/off" 정보만 있으면 Boolean 형태로 선언할 수 있다. 부울의 기본값은 False입니다. 아래 예에서 blnRunning은 간단한 예/아니요 설정을 저장하는 부울 변수입니다.
DimblnRunningAs부울
'테이프가 회전하는지 확인하세요.
IfRecorder.Direction=1그러면
blnRunning=참
엔디프
날짜 데이터 유형
날짜 및 시간 값은 특정 날짜 데이터 유형 또는 Variant 변수에 포함될 수 있습니다. 일반 날짜 속성은 두 유형 모두에 적용됩니다.
자세한 내용 은 온라인 매뉴얼의 "고급 변수 항목"의 "변형 변수에 날짜/시간 값 저장" 섹션을 참조하세요.
다른 숫자형 데이터를 Date로 변환하는 경우 소수점 왼쪽의 값은 날짜 정보를, 소수점 오른쪽의 값은 시간을 나타냅니다. 자정은 0이고 정오는 0.5입니다. 음수는 서기 1899년 12월 31일 이전 날짜를 나타냅니다.
->