Visual Basic, C & C++
분류 Visual Basic

비주얼베이직 문법

페이지 정보

본문

■ 변수

변수란 프로그램 실행 중 수정될 수 있는 데이터를 포함할 수 있는 명명된 저장 위치를 의미합니다. 각 변수는 그것의 범위 안에서 유일하게 식별하는 이름을 가집니다. 데이터 형식은 지정될 수도 있고 안될 수도 있습니다. 변수 이름은 영문으로 시작해야 하고, 같은 범위 안에서 유일해야 하며, 255 문자보다 적어야 되며, 포함 구간이나 형식 선언 문자를 포함할 수 없습니다. 아래는 변수의 선언과 구현(사용)의 예를 보여줍니다.

Space는 변수명이고 Integer는 데이터 형식입니다. 비주얼 베이직에서는 "="을 대입연산자의 의미와 등위연산자(동등비교)의 의미를 동일하게 가지고 있습니다. 즉, 변수에 값을 대입할 때는 대입연산자의 의미로, 조건절에 쓰일 때는 같다는 등위연산자로 사용됩니다. 위에서는 Space라는 변수에 10을 대입하라는 의미를 가진 연산자이겠죠? C++을 공부하신 분을 알겠지만 대입연산자를 중심으로 좌에 오는 값을 lvalue, 우에 오는 값을 rvalue라고 하는데 lvalue는 저장공간을 가지는 변수이고 rvalue는 상수 또는 계산 후 값이 되는 것을 사용할 수 있다는 것을 반드시 기억하시기 바랍니다.

1) 변수 이름 붙이기

변수를 선언할 때는 규칙이 있습니다. 규칙은 다음과 같습니다.

  • 변수이름은 255자 이상 사용할 수 없습니다.
  • 변수 이름을 사용할 수 있는 문자는 한글, 영문자, 숫자, 밑줄(_)입니다. 특수기호는 사용할 수 없습니다.
  • 변수 이름의 첫번째 문자는 반드시 영문자나 한글만 사용해야 합니다.
  • 변수 이름은 비주얼베이직에서 사용하는 예약어를 사용할 수 없습니다.
  • 메소드, 함수, 속성과 동일한 변수 명을 사용하지 않는 것이 좋습니다.

2) 올바른 변수선언/올바르지 않은 변수선언

■ 일반 데이터 형식

데이터 형식은 일반적으로 Dim, Public, Private문으로 변수를 선언합니다. Dim 문은 변수를 선언하고 저장 공간을 할당합니다. 모듈 레벨에서 Dim으로 선언한 변수는 모듈 안에 있는 모든 프로시저에서 사용할 수 있습니다. 프로시저 레벨에서 변수는 프로시저 안에서만 사용할 수 있습니다. 모듈 레벨이란 모듈의 선언 구역에서 코드를 설명하는 것을 의미합니다. 프로시저 밖의 코드는 모듈 레벨 코드와 같이 참조합니다. 선언은 처음에 목록화되어야 하고 프로시저를 수반해야 합니다. 프로시저 레벨이란 Function, Property, Sub 프로시저에 위치한 문을 나타냅니다. 보통 선언은 맨 처음 목록화되고 다음에 할당과 다른 실행 가능 코드가 목록화 됩니다. 모듈 레벨 코드는 프로시저 블럭 밖에 상주한다는 것을 주의하십시오. Public문은 모듈 레벨에서 공용 변수를 선언하고 저장 공간을 할당하는 데 사용됩니다. Public 문으로 선언한 변수는 모든 응용 프로그램의 모듈의 프로시저에서 사용할 수 있습니다. Private문은 모듈 레벨에서 전용 변수를 선언하고 저장 공간을 할당합니다. Private 변수는 선언된 모듈에서만 사용할 수 있습니다. 변수를 선언하는 방법은 앞에서 이미 설명을 했습니다. 이 변수 선언을 다음과 같이 형식지정문자를 이용하면 더 간편하게 선언할 수 있습니다.

형식지정문자를 사용하여 변수를 선언하면 Dim isql$ 은 Dim isql As String과 동일한 의미이고 Dim Math% 는 Dim Math As Integer 와 동일한 의미를 가집니다.

1) 정수형식

Integer 변수는 -32767부터 32767까지의 범위 값을 사용할 수 있으며, 16비트(2바이트) 숫자로 저장합니다. Integer용 형식 선언 문자는 퍼센트 기호(%)를 사용합니다. Byte 변수는 0부터 255까지 값의 범위를 가지는 8비트(1 바이트) 숫자, 부호없는 single로 저장됩니다. Byte 데이터 형식은 이진 데이터를 저장할 때 사용합니다. Long(자세한 정수) 변수는 -2,147,483,648부터 2,147,483,647까지의 값을 사용할 수 있으며, 32비트(4바이트) 숫자로 저장됩니다. Long 형식 선언 문자는 앰퍼센드 기호(&)를 사용합니다. 변수는 정해진 크기대로 사용되어 져야 합니다. 만약 Integer변수에 그보다 더 큰 수를 대입하면 에러가 발생합니다. 주의하세요.

2) 부동소수점형식

Single(단정도 부동소수점) 변수는 음수인 경우 -3.402823E38부터 -1.401298E-45까지, 양수인 경우 1.401298E-45부터 3.402823E38까지 범위 값으로, IEEE 32비트(4바이트) 부동 소수점 숫자를 저장합니다. Single용 형식 선언 문자는 느낌표 기호(!)를 사용합니다. Double(배정도 부동 소수점) 변수는 IEEE 64-비트(8-바이트) 부동 소수점 숫자를 저장하며, 그 값의 범위는 음수인 경우 1.79769313486232E308부터 -4.94065645841247E-324까지이며 양수인 경우 4.94065645841247E-324부터 1.79769313486232E308까지입니다. Double용 형식 선언 문자는 숫자 기호(#)를 사용합니다. Decimal 변수는 변할 수 있는 10의 배수로 잘린 96-비트(12-바이트) 부호없는 정수를 저장합니다. 10의 배수로 자른 요소는 소수점 아래 자리 수를 확정한 후, 0부터 28까지의 범위를 결정하게 됩니다. 소수점 아래 자리가 없게 잘린 경우 가능한 가장 큰 값은 +/-79,228,162,514,264,337,593,543,950,335.이며, 소수점 아래 28자리의 경우 가장 큰 값은 +/-7.9228162514264337593543950335이고 0이 아닌 가장 작은 값은 +/-0.0000000000000000000000000001입니다. Decimal 데이터 형식은 Variant인 경우만 사용 가능합니다. 즉, 변수를 Decimal 형으로 선언하여 사용할 수 없으나, CDec 함수를 사용하면 하위 형식이 Decimal 인 Variant를 만들 수 있습니다.

3) 문자열(String)형식

문자열에는 가변 길이와 고정 길이 문자열의 두 종류가 있습니다. 가변 길이 문자열은 대략 이십억(2^31)까지의 문자를 포함하고, 고정 길이 문자열은 1부터 대략 64K(2^16)까지의 문자를 포함합니다. String 문자의 코드 범위는 0부터 255까지 이며, 0부터 127까지의 처음 128개 문자가 글자와 표준 U.S. 키보드 기호 문자에 포함됩니다. 이 처음 128개 문자는 ASCII 문자 집합에서 정의한 것과 동일하며, 128부터 255까지 두번째 128개 문자는 국제 기호, 강세, 통화 표시 및 분수 등과 같은 특수 문자를 나타냅니다. String용 형식 선언 문자는 달러 기호($)를 사용합니다.
문자열을 사용할 때에는 가변 길이를 사용하는 것보다는 고정 길이를 사용하는 것이 좋습니다. 고정길이가 약간 더 빠르게 처리하기 때문입니다.

위의 소스를 보면 어떻게 저장되고 출력되는지 알 것이라고 생각합니다. 여기서 중요한 것은 보통 우리는 한글의 경우 2byte문자라고 생각하지만 비주얼 베이직에서는 영어도 한글자, 한글도 한글자 단위로 생각한다는 점입니다. 기억하세요.

4) Currency 형식

Currency 변수는 정수 유형의 64 비트(8 바이트) 숫자로 저장됩니다. 정수 부분 15자리와 소수점 이하 4자리의 고정 소수점을 주기 위하여, 10,000 단위로 잘라서 이 값은 922,337,203,685,477.5808부터 922,337,203,685,477.5807까지 표현이 가능합니다. Currency의 형식 선언 문자의 기호는 (@)입니다. Currency 데이터 형식은 정확성이 요구되는 고정 소수점 계산과 돈 계산 등에 유용합니다.

5) Variant 형식

Variant 데이터 형식은 Dim, Private, Public, 또는 Static과 같은 문을 사용하여 다른 형식으로 선언되지 않은 모든 변수의 데이터 형식입니다. Variant 데이터 형식은 형식 선언 문자가 없습니다. Variant는 고정 길이 String과 사용자 정의 형식 이외의 모든 종류의 데이터를 처리할 수 있는 특별한 데이터 형식입니다. Variant는 Empty, Error, Nothing, Null 등의 특정한 값을 가질 수 있으며, VarType 함수와 TypeName 함수를 사용하여 Variant로 선언된 데이터가 어떻게 사용되는지 알 수 있습니다. 숫자 데이터의 경우 음수는 1.797693134862315E308부터 -4.94066E-324까지, 양수는 4.94066E-324부터 1.797693134862315E308까지 표현할 수 있습니다. 일반적으로, 숫자 Variant 데이터는 Variant 고유의 데이터 형을 계속 갖게 됩니다. 예를 들면, integer를 Variant에 할당하면, 이후 연속된 연산은 Variant를 Integer 로 처리합니다. 그러나 Byte, Integer, Long, Single 값의 산술 연산을 Variant로 실행한 결과 값이 원래의 데이터 형식의 일반적인 값보다 클 경우, 그 결과 값은 Variant에서 더 큰 데이터 형식으로 변환됩니다. Byte는 Integer로 변환되고, Integer는 Long으로, Long과 Single은 Double로 변환됩니다. 만약 Currency, Decimal 그리고 Double 값을 가진 Variant 변수가 범위를 초과하면 오류가 발생합니다. Variant 데이터 형식은 더욱 유연성 있게 데이터를 다루는 작업을 해야 하는 곳에서 사용할 수 있습니다. Variant 변수의 내용이 숫자라면, 아래의 예와 같이 구문에 따라 숫자의 문자열 표현이 될 수도 있고 혹은 실제 그 값이 될 수도 있습니다.

위의 예제에서, MyVar 변수는 실제 값이 98052인 숫자 표현을 하고 있습니다. 산술 연산자는 숫자 값이거나 혹은 숫자로 변환될 수 있는 문자열 값의 Variant 변수이어야 합니다. 만약 MyVar 변수 값의 Variant 변수 혹은 숫자 형식 변수와 "+" 연산을 한다면 그 결과 값은 산술 합계가 됩니다. Empty 값은 Variant 변수가 초기값을 할당하지 않았음을 의미합니다. Empty 값을 가진 Variant 변수는 산술적으로 사용할 때는 0을 의미하고, 문자열 의미로 사용할 때는 제로 길이 문자열("")을 의미합니다. Empty와 Null을 혼동하지 마세요. Null은 Variant 변수가 유효하지 않은 값을 가지고 있다는 것을 의미합니다.

위에서 설명하기를 Varient로 선언된 벤수가 현재 어떻게 사용되는 지를 알기 위해서는 VarType 함수와 TypeName 함수를 사용한다고 했습니다. 그럼 이제 이 두 함수에 대해서 설명하기로 하겠습니다. 아래는 이 함수에 대한 비주얼베이직의 메뉴얼을 그대로 옮겨 실은 것입니다.

6) 논리형식

Boolean 변수는, True 혹은 False 값의 16비트(2바이트) 숫자로 저장됩니다. Boolean 변수는 Print를 사용할 때는 True 또는 False로, Write #를 사용할 때는 #TRUE# 또는 #FALSE#로 표시합니다. Boolean 변수는 True와 False 중 하나의 키워드를 사용합니다. 다른 숫자 형식이 Boolean값으로 변환될 때, 0은 False로, 그 밖의 다른 값들은 True로 변환하며, Boolean값이 다른 데이터 형식으로 변환될 때, False는 0으로 True는 -1로 변환합니다.

7) Object 형식

Object 변수는 개체의 4바이트 주소를 저장합니다. 또한, 선언된 Object변수는 Set 문을 사용하여 참조하는 개체를 만들 수 있습니다. 사용예는 다음과 같습니다.

Object형으로 선언된 변수는 어떠한 개체라도 참조할 수 있습니다. 이 변수로 참조되는 개체는 속도가 항상 느립니다.

속도를 빠르게 하려면, 특정 클래스 이름으로 선언된 변수에 개체 참조를 지정합니다.

8) Date 형식

Date 변수는 IEEE 64-비트(8-바이트) 고정 소수를 저장하며, 100년 1월 1일부터 9999년 12월 31일까지의 날짜와 0:00:00부터 23:59:59까지의 시간을 표현할 수 있습니다. 인식 가능한 날짜 형식의 모든 글자는 Date 변수로 저장할 수 있습니다. 날짜 문자열은 #January 1, 1993# 또는 #1 Jan 93#등과 같이 기호(#)를 사용해야 합니다. Date 변수는 날짜의 경우 컴퓨터가 인식하는 짧은 날짜 유형에 따라 나타냅니다. 시간의 경우 12-시간 혹은 24-시간의 시간 유형으로 나타냅니다. 숫자 형식을 Date로 변환할 경우, 정수 부분의 값은 날짜 정보를 나타내고 소수점 아래의 값은 시간 정보를 나타냅니다. 자정은 0으로, 정오는 0.5로 표시하며, 음수는 1899년 12월 30일 이전의 날짜를 나타냅니다.

■ 특수자료형

1) 배열

배열은 1개 이상의 동일한 변수를 한번에 만들 때 사용합니다. C++을 공부하면 강조하는 것이 있는 데 배열은 동일한 자료형을 여러개 만드는 것, 구조체는 서로 다른 자료형을 한번에 묶어서 선언하는 것, 클래스는 구조체 + 메소드 라는 것입니다. 비주얼 베이직에서도 이 점은 동일합니다. 
배열에는 정적배열과 동적배열이 있습니다. 정적배열은 배열을 선언할 때 크기를 정해주는 것을 의미합니다. 그리고 동적배열은 선언할 때는 크기를 정해주지 않고 나중에 필요할 때 한개씩 배열의 요소를 증가시키는 경우를 의미합니다. 여기서는 먼저 정적배열을 설명하고 차후에 동적배열의 사용에 대해서 설명하도록 하겠습니다. 아래의 예문을 먼저 보시고 설명하겠습니다.


' DayArray는 0부터 50까지의 51개 구성 요소가 색인된 Variants 배열입니다. 
' 현재 모듈에 대하여 Option Base는 0(기본 값)으로 설정된 것으로 가정합니다. 

Dim DayArray(50) 

' Matrix는 정수의 2차원 배열입니다. 
Dim Matrix(3, 4) As Integer 

' MyMatrix는 명확한 제한 범위를 가진, 정수(double)의 3차원 배열입니다. 
Dim MyMatrix(1 To 5, 4 To 9, 3 To 5) As Double 

' BirthDay는 1부터 10까지의 인덱스가 있는 날짜 배열입니다. 
Dim BirthDay(1 To 10) As Date 

' MyArray는 variant의 동적 배열입니다. 
Dim MyArray()

첫번째 예를 보면 배열의 요소를 51개 선언했습니다. 이때 이 모듈의 Option Base는 0일때를 가정합니다. 어떤 책에서는 배열을 선언하면 기본적으로 1이 시작이라고 설명하고 있는 책을 볼 수 있는데 무슨 근거로 그런 말을 하는 지 모르겠지만 기본적으로 시작하는 수는 사용자가 바꿀 수 있습니다. 기본적으로는 0으로 잡혀있어서 컨트롤배열을 작성하건 어떤 타입의 배열을 작성하건 베이스는 0부터 시작합니다. 그럼 어떻게 시작하는 수를 바꿀 수 있을까요. 아래의 설명을 보시면 알 수 있을 것입니다.


Option Base 문

모듈 레벨에서 배열 첨자에 대한 기본 하위 바운드를 선언하는 데 사용됩니다.

구문

Option Base {0 | 1}

참고

기본이 0이므로 Option Base 문은 필수적인 것은 아닙니다. 
Option Base 문을 사용하면 문이 모든 프로시저 앞의 모듈에 있어야 합니다. Option Base는 모듈에 한 번만 사용하며 차원을 포함하는 배열 선언 앞에 나와야 합니다.

메모

Dim, Private, Public, ReDim, Static 문의 To 절을 사용하면 배열 첨자 범위를 보다 자유롭게 조절할 수 있습니다. 그러나, To 절로 하위 바운드를 명시적으로 설정하지 않았으면 Option Base로 기본 하위 바운드를 1로 바꿀 수 있습니다. Array 함수나 ParamArray 키워드로 만든 배열의 기본은 0이며 Option Base는 Array나 ParamArray에 영향을 미치지 않습니다. Option Base 문은 문이 있는 모듈의 하위 바운드 배열에만 영향을 미칩니다. 


Option Base 문 예제

다음은 Option Base 문으로 기본 배열 첨자 값 0을 바꾸는 예입니다. 
LBound 함수는 배열의 표시된 차원 첨자 중 최소 값을 반환합니다. Option Base 문은 모듈 레벨에서만 사용됩니다.

Option base 1 ' 기본 배열 첨자를 1로 설정합니다.

Dim Lower Dim MyArray(20), TwoDArray(3, 4) ' 배열 변수를 선언합니다. 
Dim ZeroArray(0 To 5) ' 기본 첨자를 바꿉니다. 
' LBound 함수로 배열의 하위 제한 범위를 검사합니다. 
Lower = LBound(MyArray) ' 1을 반환합니다. 
Lower = LBound(TwoDArray, 2) ' 1을 반환합니다. 
Lower = LBound(ZeroArray) ' 0을 반환합니다. 

위에서 사용한 예제를 보면 LBound함수가 나옵니다. LBound함수는 배열의 하한을 알아내는 것이고 UBound함수는 배열의 상한을 알아내는 함수입니다. 배열을 선언할 때 To를 사용해서 크기를 명확하게 정의할 수 있습니다. 즉 Option Base에 영향을 받지 않고 크기를 자유로이 정할 수 있다는 것입니다. 위의 예제를 보면 To를 이용해서 배열을 선언한 예가 나옵니다. 굳이 설명을 하지않아도... 배열에 값을 주는 방법은 아래의 예제로 설명하겠습니다. 그리고 초기값을 주는 방법이나 여러가지 함수를 이용해서 배열을 사용하는 방법을 설명하면 초급의 범위를 벗어나는 강의가 되므로 다음에 기회가 있을 때 설명을 하든지 아니면 요청이 있을 경우 게시판에 모든 내용을 정리해서 올려놓도록 하겠습니다. 그럼 배열은 아래의 예제를 끝으로 그만...


' 이 예제는 텍스트 박스에 숫자를 입력하고
' 확인 버튼을 누르면 라벨에 해당 월을 출력하는 예제입니다.

Private Sub Command1_Click()

Dim My_Mon(1 To 12) As String
Dim Mon As Integer

My_Mon(1) = "1월"
My_Mon(2) = "2월"
My_Mon(3) = "3월"
My_Mon(4) = "4월"
My_Mon(5) = "5월"
My_Mon(6) = "6월"
My_Mon(7) = "7월"
My_Mon(8) = "8월"
My_Mon(9) = "9월"
My_Mon(10) = "10월"
My_Mon(11) = "11월"
My_Mon(12) = "12월"

' 문자열을 숫자로 변환한다.
Mon = Val(Text1.Text)
Label1.Caption = My_Mon(Mon)

End Sub

2) 구조체(Type 문)

사용자 정의 형식이란 Type문을 사용해서 만든 데이터 형식을 말합니다. Type문은 C언어의 구조체와 사용 방법이 비슷합니다. 배열은 동일한 데이터형을 다중으로 처리할 수 있지만 다른 데이터형을 처리하려면 나누어서 처리해야 합니다. Type문은 동일하지 않은 데이터형을 그룹단위로 묶어서 처리할 수 있어 배열보다 향상된 처리를 할 수 있는 장점이 있습니다. 아래의 설명을 보세요.


Type 문은 모듈 레벨에서 여러 요소가 있는 사용자 정의 데이터 형식을 지정하는 데 사용합니다.


Type 문 구문은 다음과 같은 구성 요소로 되어 있습니다.


Type문 예제 

다음은 Type 문으로 사용자 정의 데이터 형식을 지정하는 예입니다. Type 문은 모듈 레벨에서만 사용됩니다. Type 문이 클래스 모듈에 쓰일 때는 키워드 Private 다음에 와야 합니다.

Type EmployeeRecord ' 사용자 정의 형식을 만듭니다.

ID As Integer ' 구성 요소의 데이터 형식을 정의합니다. 
Name As String * 20 
Address As String * 30 
Phone As Long 
HireDate As Date

End Type

Sub CreateRecord()

Dim MyRecord As EmployeeRecord '변수를 선언합니다. 
' EmployeeRecord 변수는 프로시저에서 할당해야 합니다. 
MyRecord.ID = 12003 ' 변수를 구성 요소에 할당합니다.

End Sub 

위의 예제이서 처럼 사용자 정의 데이터형(이하 구조체)를 사용하여 그 타입의 변수 MyRecord를 선언하고 그 변수의 구성요소 중 ID에 값을 할당할 수 있습니다. 다른 구성요소인 Name 또는 Address 등도 같은 방법으로 값을 할당하고 또한 값을 가져와 사용할 수 있습니다. 위에서는 EmployeeRecord 타입의 변수를 하나만 만들었지만 이를 배열로 만들면 다른 일반 타입의 변수들 처럼 사용할 수 있고 인덱스를 가지는 변수를 이용해 구조체의 요소에 값을 할당할 수 있습니다.

3) 상수형(Const)

상수는 한번 선언하면 데이터 값을 변경할 수 없고 프로시저 안에 사용할 수 없습니다. 문자열인 경우에는 [As 데이터형식]을 생략할 수 있습니다. 상수는 기본적으로 전용(Private)입니다. 프로시저에서는 언제나 전용이므로 표시 상태를 바꿀 수 없습니다. 표준 모듈에서는 모듈 레벨 상수를 Public 키워드로 바꿀 수 있습니다. 즉, Private과 Public을 모두 사용할 수 있습니다. 클래스 모듈에서는 상수는 전용으로만 쓸 수 있으므로 Public 키워드로 바꿀 수 없습니다. 같은 줄에서 여러 상수 선언을 결합하려면 각 상수 지정을 쉼표로 구분합니다. 이런 식으로 상수 선언을 결합하면 Public 키워드나 Private 키워드를 사용할 때 모두 적용됩니다. 상수에 지정된 식에서는 변수, 사용자 정의 함수 또는 기본 내장 Visual Basic 함수(예, Chr)를 사용할 수 없습니다. 상수를 사용하면 프로그램을 자체 문서화하고 수정하기 쉽게 만들 수 있습니다. 변수와는 달리 상수는 프로그램이 실행되는 동안 우연히 바뀌지는 않습니다. As type으로 상수 형식을 명확히 선언하지 않으면 주어지는 표현식에 가장 적합한 형식을 취하게 됩니다. Sub, Function, Property 프로시저에서 선언된 상수는 프로시저에 지역적입니다. 프로시저 외부에서 선언된 상수는 선언된 모듈 전체에 걸쳐 지정됩니다. 식을 사용할 수 있는 경우에는 언제든지 상수를 사용할 수 있습니다.


구문

[Public | Private] Const constname [As type] = expression

Const 문 구문은 다음과 같은 구성 요소로 되어 있습니다.


const 문 예제

다음은 Const 문으로 문자열 값 대신 사용할 상수를 선언하는 예입니다. Public 상수는 클래스 모듈이 아니라 표준 모듈 General 구역에서 선언합니다. Private 상수는 모듈 형식에 상관없이 General 구역에서 선언합니다

' 상수는 기본적으로 Private입니다. 
Const MyVar = 459 
' Public 상수를 선언합니다. 
Public Const MyString = "HELP" 
' Private Integer 상수를 선언합니다. 
Private Const MyInt As Integer = 5 
' 한 줄에 여러 상수를 선언합니다. 
Const MyStr = "Hello", MyDouble As Double = 3.4567

4) Enum형

Enum문은 나열형식, 즉 열거형 상수를 선언하는 데 사용됩니다. 개념은 C++의 열거형 상수와 아주 유사하다고 할 수 있습니다. 나열 변수는 Enum 형식으로 선언된 변수입니다. 변수와 매개 변수 모두 Enum 형식으로 선언할 수 있습니다. Enum 형식 요소는 Enum 문에서 상수 값으로 초기화할 수 있습니다. 지정된 값은 실행 모드에 수정할 수 없고 양수와 음수를 모두 포함합니다. Enum 문은 모듈 레벨에만 나타납니다. Enum 형식이 지정되면 변수, 매개 변수, 형식을 반환하는 프로시저 등을 선언할 수 있습니다. Enum 형식 이름을 모듈 이름으로 사용할 수도 있습니다. 클래스 모듈의 Public Enum 형식은 클래스 요소가 아니지만 형식 라이브러리에는 쓰여집니다. 표준 모듈에 지정된 Enum 형식은 형식 라이브러리에는 쓰여지지 않습니다. 같은 이름의 Public Enum 형식은 같은 이름 공간을 공유하므로 표준 모듈이나 클래스 모듈에서는 지정할 수 없습니다. 다른 형식 라이브러리에 있는 두 Enum 형식의 이름이 같으면 형식 변수 참조는 어떤 형식 라이브러리가 References에서 높은 우선 순위를 차지하는가에 따라 결정됩니다. With 블럭에서는 Enum 형식을 대상으로 사용할 수 없습니다. 
시작하는 값은 선언하지 않을 경우 기본적으로 0이며 1씩 증가하는 형태의 값을 가집니다.


구문

[Public | Private] Enum name

membername [= constantexpression] 
membername [= constantexpression] 
. . .

End Enum

Enum 문은 다음과 같은 구성 요소로 되어 있습니다.


Enum 문 예제

다음은 Enum 문으로 명명된 상수 컬렉션을 정의하는 예입니다. 이때 상수는 데이터베이스의 데이터 항목 폼을 구성하는 데 사용할 색입니다.

Public Enum InterfaceColors

icMistyRose = &HE1E4FF& 
icSlateGray = &H908070& 
icDodgerBlue = &HFF901E& 
icDeepSkyBlue = &HFFBF00& 
icSpringGreen = &H7FFF00& 
icForestGreen = &H228B22& 
icGoldenrod = &H20A5DA& 
icFirebrick = &H2222B2&

End Enum 

 

5) With 문

개체안에 있는 구성요소를 사용하기 위해서는 개체를 앞에 선언하고 구성요소를 사용합니다. 이런 번거로움을 없애기 위해 With문을 사용합니다. With문에 선언된 개체를 With문 안에서는 점(.)을 앞에 찍어서 개체의 구정요소를 알려준 후 점(.)다음에 구성 요소를 넣으면 됩니다. With 문을 사용하면 대상 개체의 이름을 재수식하지 않고서도 지정된 개체에 대한 일련의 문을 실행할 수 있습니다. 예를 들면, 하나의 개체 상에 있는 다수 개의 다양한 속성을 변경시키고자 하는 경우, 그 개체는 한번만 참조하고 With 제어 구조체 안에 각각의 속성 할당문을 배치하여 사용할 수 있습니다.


구문

With object

[statement]

End With

With 문은 다음과 같은 구성 요소로 되어있습니다.


With 문 예제

이 예제는 With 문을 사용하여 단일 개체에 일련의 문을 실행합니다. 개체 MyObject와 그 개체의 속성은 설명 목적으로만 사용되는 총칭입니다.

With MyObject

.Height = 100 ' MyObject.Height = 100과 동일합니다. 
.Caption = "Hello World" ' MyObject.Caption = "Hello World"와 동일합니다.

With .Font

.Color = Red ' MyObject.Font.Color = Red와 동일합니다. 
.Bold = True ' MyObject.Font.Bold = True와 동일합니다.

End With

End With 

관련자료

등록된 댓글이 없습니다.
프로그래밍
Today's proverb
쓸데없는 걱정 (어니 젤린스키)