#Const 지시문 예제

아래 예제에서는 #Const 지시문을 사용하여 #If...#Else...#End If 문에 사용할 조건부 컴파일러 상수를 선언합니다.

#Const DebugVersion = 1	' 상수 DebugVersion는 #If 블록에서 true로 평가됩니다.


#If...Then...#Else 예제
#If...Then...#Else 지시문 예제

아래 예제에서는 #If...Then...#Else 문의 조건부 컴파일러 상수를 참조하여 특정한 문의 컴파일 여부를 결정합니다.

' 만약 컴파일러가 매킨토시용(Mac)이라면 #If 다음의 문이 실행됩니다.

#If Mac Then

'. Mac 문을 여기에 입력합니다.

'.

'.

' 만약 컴파일러가 매킨토시용이 아니고 32비트 Windows 용이라면 #ElseIf 다음의 문이 실행됩니다.

#ElseIf Win32 Then

'. 32비트 Windows 문을 여기에 입력합니다.

'.

'.

' 만약 컴파일러가 매킨토시용이 아니고 32비트 Windows 용도 아니라면 #Else 다음의 문이 실행됩니다.

#Else

'. 다른 플랫폼 문을 여기에 입력합니다.

'.

'.

#End If


#Const 지시문

Visual Basic에서 조건부 컴파일러 상수를 정의할 때 사용합니다.

구문

#Const constname = expression

#Const 컴파일러 지시문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
constname	필수적인 요소. Variant(String). 상수의 이름이며 표준 변수 명명 규칙에 따릅니다.
expression	필수적인 요소. 리터럴이나 기타 다른 조건부 컴파일러 상수 또는 Is연산자를 제외한 모든 산술 연산자나 논리 연산자를 포함한 리터럴이나 상수의 결합
참고

조건부 컴파일러 상수는 해당 모듈 내에서 항상 Private으로 간주됩니다. Public 컴파일러 상수는  #Const 지시문을 사용하여 작성할 수 없으며, 오직 사용자 인터페이스 내에서만 작성할 수 있습니다.

expression에는 조건부 컴파일러 상수와 리터럴만이 사용됩니다. Const로 정의한 표준 상수를 사용하거나 정의되지 않은 상수를 사용할 때는 오류가 발생합니다. 반대로 #Const 키워드로 정의한 상수는 조건부 컴파일에만 사용됩니다.

조건부 컴파일러 상수는 코드에서의 위치와 관계없이 항상 모듈 수준으로 평가됩니다.


#If...Then...#Else 지시문

Visual Basic 코드 중 선택된 블록들만 조건부로 컴파일합니다.

구문

#If expression Then

statements

[#ElseIf expression-n Then

[elseifstatements]]

[#Else

[elsestatements]]

#End If

#If...Then...#Else 지시문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
expression	필수적인 요소. True나 False로 평가되는 하나 이상의 조건부 컴파일러 상수, 리터럴, 연산자 등이 단독으로 사용되는 식
statements	필수적인 요소. 연관된 식이 True인 경우에 수행되는 Visual Basic 프로그램 행이나 컴파일러 지시문
expression-n	선택적인 요소. True나 False로 평가되는 하나 이상의 배타적인 조건부 컴파일러 상수, 리터럴, 연산자 등으로 구성된 식
elseifstatements	선택적인 요소. expression-n이 True인 경우에 수행되는 하나 이상의 프로그램 행이나 컴파일러 지시문
elsestatements	선택적인 요소. 이전의 expression이나 expression-n이 True가 아닌 경우에 수행되는 하나 이상의 프로그램 행이나 컴파일러 지시문
참고

#If...Then...#Else 지시문은 If...Then...Else 문과 작동 방식은 같으나, #If, #Else, #ElseIf, #End If 지시문 같이 한 행으로 된 양식이 없다는 것이 다릅니다. 즉, 위의 지시문과 동일한 행에는 어떤 다른 코드도 나타나지 않는다는 것을 의미합니다. 조건부 컴파일은 동일한 프로그램을 서로 다른 플랫폼에서도 실행될 수 있도록 컴파일할 때 주로 사용합니다. 이것은 또한 실행 파일을 실행할 때 디버깅 코드가 실행 파일에 나타나는 것을 방지하기 위해서도 사용합니다. 조건부 컴파일이 수행될 때 제외된 코드는 최종 실행 파일에서 완전히 제외되기 때문에 실행 파일의 크기나 성능에 영향을 미치지 않습니다.

평가 결과와 무관하게 모든 식이 평가됩니다. 그러므로 식에 사용된 모든 상수는 반드시 정의되어야 합니다. 정의되지 않은 상수는 Empty로 평가됩니다.

메모   Option Compare 문은 #If와 #ElseIf 문에 사용된 식에 영향을 주지 않으며, 조건부 컴파일러 지시문에 사용된 식들은 항상 Option Compare Text와 함께 평가됩니다.


Visual Basic 상수

Visual Basic에서는 프로그래밍을 간단하게 하기 위해 상수들을 정의합니다. 다음 상수들은 코드의 어느 부분에서나 실제값 대신 사용할 수 있습니다.

CallType 상수

Dir, GetAttr, SetAttr 상수

DriveType 상수

IMEStatus 상수

MsgBox 상수

QueryClose 상수

SpecialFolder 상수

StrConv 상수

Tristate 상수

VarType 상수

Visual Basic 상수

기타 상수

날짜 상수

날짜 형식 상수

달력 상수

비교 상수

색 상수

셸 상수

시스템 색 상수

컴파일러 상수

키코드 상수

파일 입출력 상수

파일 특성 상수

폼 상수


QueryClose Constants
QueryClose 상수

다음 상수들은 코드의 어느 부분에서나 실제값 대신 사용할 수 있습니다.

상수	값	설명
vbFormControlMenu	0	폼의 컨트롤 메뉴에서 닫기 명령을 선택했습니다.
vbFormCode	1	Unload 문이 코드에서 호출되었습니다.
vbAppWindows	2	현재 Microsoft Windows 운영 환경 세션이 종료됩니다.
vbAppTaskManager	3	Windows 작업 관리자가 응용 프로그램을 닫습니다.


달력 상수

다음 상수들은 코드의 어느 부분에서나 실제값 대신 사용할 수 있습니다.

상수	값	설명
vbCalGreg	0	그레고리력(현행 태양력)이 사용되고 있음을 나타냅니다.
vbCalHijri	1	회교력이 사용되고 있음을 나타냅니다.


컴파일러 상수

Visual Basic에서는 #If...Then...#Else 지시문과 함께 사용할 상수를 정의할 수 있습니다. 이 상수는 #If...Then...#Else 지시문 안에서 정의된 상수와 기능적으로 동일하지만 범위에 있어서 전역적으로 사용된다는 것, 즉 프로젝트 내의 어느 부분에서나 사용할 수 있다는 점이 다릅니다.

16비트 개발 플랫폼에서 컴파일러 상수는 다음과 같이 정의되어 있습니다.

상수	값	설명
Win16	True	개발 환경이 16비트임을 나타냅니다.
Win32	False	개발 환경이 32비트가 아님을 나타냅니다.
32비트 개발 플랫폼에서 컴파일러 상수는 다음과 같은 구성 요소로 되어 있습니다.

상수	값	설명
Vba6	True	개발 환경이 Visual Basic for Applications 버전 6.0임을 나타냅니다.
Vba6	False	개발 환경이 Visual Basic for Applications 버전 6.0이 아님을 나타냅니다.
Win16	False	개발 환경이 16비트가 아님을 나타냅니다.
Win32	True	개발 환경이 32비트임을 나타냅니다.
Mac	False	개발 환경이 매킨토시가 아님을 나타냅니다.
Win16	False	개발 환경이 16비트가 아님을 나타냅니다.
Win32	False	개발 환경이 32비트 Windows가 아님을 나타냅니다.
Mac	True	개발 환경이 매킨토시임을 나타냅니다.
메모   이러한 상수들은 Visual Basic에서 기본적으로 제공되기 때문에 어떠한 수준에서든 같은 이름의 상수를 직접 정의할 수 없습니다.


날짜 상수

다음 상수들은 코드의 어느 부분에서나 실제값 대신 사용할 수 있습니다.

인수값

firstdayofweek 인수는 다음과 같은 값을 가집니다.

상수	값	설명
vbUseSystem	0	NLS API 설정값을 사용합니다.
vbSunday	1	일요일(기본값)
vbMonday	2	월요일
vbTuesday	3	화요일
vbWednesday	4	수요일
vbThursday	5	목요일
vbFriday	6	금요일
vbSaturday	7	토요일
firstdayofyear 인수는 다음과 같은 값을 가집니다.

상수	값	설명
vbUseSystem	0	NLS API 설정값을 사용합니다.
vbUseSystem DayOfWeek	0	시스템 설정에 지정된 주의 날을 주의 첫째 날로 사용합니다.
vbFirstJan1	1	1월 1일이 나타나는 주로 시작합니다(기본값).
vbFirstFourDays	2	새해에 4일 이상의 요일을 갖는 첫 주로 시작합니다.
vbFirstFullWeek	3	그 해에 7일을 모두 갖는 첫 주로 시작합니다.
반환값

상수	값	설명
vbSunday	1	일요일
vbMonday	2	월요일
vbTuesday	3	화요일
vbWednesday	4	수요일
vbThursday	5	목요일
vbFriday	6	금요일
vbSaturday	7	토요일


Dir, GetAttr, SetAttr 상수

다음 상수들은 코드의 어느 부분에서나 실제값 대신 사용할 수 있습니다.

상수	값	설명
vbNormal	0	표준(Dir과 SetAttr의 기본값)
vbReadOnly	1	읽기 전용
vbHidden	2	숨김
vbSystem	4	시스템 파일
vbVolume	8	디스크 이름
vbDirectory	16	디렉터리나 폴더
vbArchive	32	마지막 백업 이후에 파일이 변경되었습니다.
vbAlias	64	매킨토시에서 식별자는 별칭입니다.
vbNormal, vbReadOnly, vbHidden 및 vbAlias만 매킨토시에서 사용할 수 있습니다.


IMEStatus 상수

다음 상수들은 코드의 어느 부분에서나 실제값 대신 사용할 수 있습니다.

시스템 로케일이 한국어일 경우 사용할 수 있는 상수는 다음과 같습니다.

상수	값	설명
vbIMEModeNoControl	0	현재 상태 유지(기본값)
vbIMEModeAlphaFull	7	영문 전자
vbIMEModeAlpha	8	영문 반자
vbIMEModeHangulFull	9	한글 전자
vbIMEModeHangul	10	한글 반자
시스템 로케일이 일본어일 경우 사용할 수 있는 상수들은 다음과 같습니다.

상수	값	설명
vbIMEModeNoControl	0	현재 상태 유지(기본값)
vbIMEModeOn	1	일본어 입력 상태 설정
vbIMEModeOff	2	일본어 입력 상태 해제
vbIMEModeDisable	3	일본어 입력 시스템을 사용할 수 없음
vbIMEModeHiragana	4	히라가나 전자
vbIMEModeKatakana	5	가다가나 전자
vbIMEModeKatakanaHalf	6	가다가나 반자
vbIMEModeAlphaFull	7	영문 전자
vbIMEModeAlpha	8	영문 반자
시스템 로케일이 중국어일 경우 사용할 수 있는 상수들은 다음과 같습니다.

상수	값	설명
vbIMEModeNoControl	0	현재 상태 유지(기본값)
vbIMEModeOn	1	중국어 입력 상태 설정
vbIMEModeOff	2	중국어 입력 상태 해제


비교 상수

다음 상수들은 Visual Basic for Applications 형식 라이브러리에 정의되어 있으며 코드의 어느 부분에서나 실제값 대신 사용할 수 있습니다.

상수	값	설명
vbUseCompareOption	-1	Option Compare 문의 설정을 사용하여 비교를 수행합니다.
vbBinaryCompare	0	이진 비교를 수행합니다.
vbTextCompare	1	원문 비교를 수행합니다.
vbDatabaseCompare	2	Microsoft Access(Windows 전용)인 경우에는 데이터베이스에 포함된 정보에 기초하여 비교를 수행합니다.


기타 상수

다음 상수들은 Visual Basic for Applications 형식 라이브러리에 정의되어 있으며 코드의 어느 부분에서나 실제값 대신 사용할 수 있습니다.

상수	등가	설명
vbCrLf	Chr(13) + Chr(10)	캐리지 리턴 � 라인 피드 조합
vbCr	Chr(13)	캐리지 리턴 문자
vbLf	Chr(10)	라인 피드 문자
vbNewLine	Chr(13) + Chr(10)  또는 매킨토시에서는 Chr(13)	플랫폼 특정 라인 피드 문자, 즉 현재 플랫폼에서는 어떤 것이라도 적절합니다.
vbNullChar	Chr(0)	0값을 가지는 문자입니다.
vbNullString	0값을 가지는 문자열	길이가 0인 문자열("")과 같지 않습니다. 외부 프로시저를 호출하는 데 사용됩니다.
vbObjectError	-2147221504	사용자 정의 오류 번호는 이 값보다 커야 합니다. 예를 들면 다음과 같습니다.  Err.Raise Number = vbObjectError + 1000
vbTab	Chr(9)	Tab 문자
vbBack	Chr(8)	백스페이스 문자
vbFormFeed	Chr(12)	Microsoft Windows 또는 매킨토시에서는 사용할 수 없습니다.
vbVerticalTab	Chr(11)	Microsoft Windows 또는 매킨토시에서는 사용할 수 없습니다.


MsgBox 상수

다음 상수들은 코드의 어느 부분에서나 실제값 대신 사용할 수 있습니다.

MsgBox 인수

상수	값	설명
vbOKOnly	0	확인 단추 전용(기본값)
vbOKCancel	1	확인 단추와 취소 단추
vbAbortRetryIgnore	2	중지, 다시 시도, 무시 단추
vbYesNoCancel	3	예, 아니오, 취소 단추
vbYesNo	4	예 단추와 아니오 단추
vbRetryCancel	5	다시 시도 단추와 취소 단추
vbCritical	16	치명적 오류 메시지
vbQuestion	32	경고 질문
vbExclamation	48	경고 메시지
vbInformation	64	정보 메시지
vbDefaultButton1	0	첫째 단추가 기본값입니다(기본값).
vbDefaultButton2	256	둘째 단추가 기본값입니다.
vbDefaultButton3	512	셋째 단추가 기본값입니다.
vbDefaultButton4	768	넷째 단추가 기본값입니다.
vbApplicationModal	0	응용 프로그램 모달 메시지 상자(기본값)
vbSystemModal	4096	시스템 모달 메시지 상자
vbMsgBoxHelpButton	16384	메시지 상자에 도움말 단추를 추가합니다.
vbMsgBoxSetForeground	65536	메시지 상자를 전경 창으로 지정합니다.
vbMsgBoxRight	524288	텍스트가 오른쪽 맞춤되었습니다.
vbMsgBoxRtlReading	1048576	히브리어와 아랍어 시스템의 경우 텍스트의 읽기 방향이 오른쪽에서 왼쪽으로 나타나도록 지정합니다.
MsgBox 반환값

상수	값	설명
vbOK	1	확인 단추를 눌렀습니다.
vbCancel	2	취소 단추를 눌렀습니다.
vbAbort	3	중지 단추를 눌렀습니다.
vbRetry	4	다시 시도 단추를 눌렀습니다.
vbIgnore	5	무시 단추를 눌렀습니다.
vbYes	6	예 단추를 눌렀습니다.
vbNo	7	아니오 단추를 눌렀습니다.


셸 상수

다음 상수들은 코드의 어느 부분에서나 실제값 대신 사용할 수 있습니다.

상수	값	설명
vbHide	0	창이 숨겨지고 포커스가 숨겨진 창에 전달됩니다.
vbNormalFocus	1	창이 포커스되고 원래 크기와 위치로 복원됩니다.
vbMinimizedFocus	2	창이 포커스를 가진 아이콘으로 표시됩니다.
vbMaximizedFocus	3	창이 포커스를 가지고 전체 화면 표시됩니다.
vbNormalNoFocus	4	창이 가장 최근의 크기와 위치로 복원됩니다. 현재 활성 창은 활성 상태로 남습니다.
vbMinimizedNoFocus	6	창이 아이콘으로 표시됩니다. 현재 활성 창은 활성 상태로 남습니다.
매킨토시에서 vbNormalFocus, vbMinimizedFocus, vbMaximizedFocus는 모두 응용 프로그램을 전경에 두고 vbHide, vbNoFocus, vbMinimizeFocus는 모두 배경에 둡니다.


StrConv 상수

다음 상수들은 코드의 어느 부분에서나 실제값 대신 사용할 수 있습니다.

상수	값	설명
vbUpperCase	1	문자열을 대문자로 변환합니다.
vbLowerCase	2	문자열을 소문자로 변환합니다.
vbProperCase	3	문자열에서 모든 단어의 첫째 글자를 대문자로 변환합니다.
vbWide	4	문자열에서 좁은(1바이트) 글자를 넓은(2바이트) 글자로 변환합니다. 극동 로케일에 적용됩니다.
vbNarrow	8	문자열에서 넓은(2바이트) 글자를 좁은(1바이트) 글자로 변환합니다. 극동 로케일에 적용됩니다.
vbKatakana	16	문자열에서 히라가나를 가다가나로 변환합니다. 일본어에만 적용됩니다.
vbHiragana	32	문자열에서 가다가나를 히라가나로 변환합니다. 일본어에만 적용됩니다.
vbUnicode	64	시스템의 기본 코드 페이지를 사용하여 문자열을 Unicode로 변환합니다. (매킨토시에서는 사용할 수 없습니다.)
vbFromUnicode	128	문자열을 Unicode에서 시스템의 기본 코드 페이지로 변환합니다. (매킨토시에서는 사용할 수 없습니다.)


VarType 상수

다음 상수는 코드의 어느 부분에서나 실제값 대신 사용할 수 있습니다.

상수	값	설명
vbEmpty	0	초기화되지 않음(기본값)
vbNull	1	유효한 데이터 없음
vbInteger	2	정수
vbLong	3	긴 정수
vbSingle	4	단정도 부동 소수점 수
vbDouble	5	배정도 부동 소수점 수
vbCurrency	6	통화
vbDate	7	날짜
vbString	8	문자열
vbObject	9	개체
vbError	10	오류
vbBoolean	11	Boolean
vbVariant	12	Variant(변이형 배열에만 사용)
vbDataObject	13	데이터 액세스 개체
vbDecimal	14	Decimal
vbByte	17	Byte
vbUserDefinedType	36	사용자 정의 형식을 포함하는 Variant
vbArray	8192	배열


색 상수

다음 상수들은 코드의 어느 부분에서나 실제값 대신 사용할 수 있습니다.

상수	값	설명
vbBlack	0x0	검정
vbRed	0xFF	빨강
vbGreen	0xFF00	녹색
vbYellow	0xFFFF	노랑
vbBlue	0xFF0000	파랑
vbMagenta	0xFF00FF	진한 빨강
vbCyan	0xFFFF00	진한 파랑
vbWhite	0xFFFFFF	흰색


키코드 상수

다음 상수들은 코드의 어느 부분에서나 실제값 대신 사용할 수 있습니다.

상수	값	설명
vbKeyLButton	0x1	마우스 왼쪽 단추
vbKeyRButton	0x2	마우스 오른쪽 단추
vbKeyCancel	0x3	취소키
vbKeyMButton	0x4	마우스 가운데 단추
vbKeyBack	0x8	벡스페이스키
vbKeyTab	0x9	Tab키
vbKeyClear	0xC	Clear키
vbKeyReturn	0xD	Enter키
vbKeyShift	0x10	Shift키
vbKeyControl	0x11	Ctrl키
vbKeyMenu	0x12	메뉴키
vbKeyPause	0x13	Pause키
vbKeyCapital	0x14	Caps Lock키
vbKeyEscape	0x1B	Esc키
vbKeySpace	0x20	스페이스바키
vbKeyPageUp	0x21	Page Up키
vbKeyPageDown	0x22	Page Down키
vbKeyEnd	0x23	End키
vbKeyHome	0x24	Home키
vbKeyLeft	0x25	왼쪽 화살표키
vbKeyUp	0x26	위쪽 화살표키
vbKeyRight	0x27	오른쪽 화살표키
vbKeyDown	0x28	아래쪽 화살표키
vbKeySelect	0x29	선택키
vbKeyPrint	0x2A	Print Screen키
vbKeyExecute	0x2B	실행키
vbKeySnapshot	0x2C	스냅샷키
vbKeyInsert	0x2D	Insert키
vbKeyDelete	0x2E	Delete키
vbKeyHelp	0x2F	Help키
vbKeyNumlock	0x90	Num Lock키
A키에서 Z키는 ASCII의 A에서 Z와 동일합니다.

상수	값	설명
vbKeyA	65	A키
vbKeyB	66	B키
vbKeyC	67	C키
vbKeyD	68	D키
vbKeyE	69	E키
vbKeyF	70	F키
vbKeyG	71	G키
vbKeyH	72	H키
vbKeyI	73	I키
vbKeyJ	74	J키
vbKeyK	75	K키
vbKeyL	76	L키
vbKeyM	77	M키
vbKeyN	78	N키
vbKeyO	79	O키
vbKeyP	80	P키
vbKeyQ	81	Q키
vbKeyR	82	R키
vbKeyS	83	S키
vbKeyT	84	T키
vbKeyU	85	U키
vbKeyV	86	V키
vbKeyW	87	W키
vbKeyX	88	X키
vbKeyY	89	Y키
vbKeyZ	90	Z키
0키에서 9키는 ASCII의 0에서 9와 동일합니다.

상수	값	설명
vbKey0	48	0키
vbKey1	49	1키
vbKey2	50	2키
vbKey3	51	3키
vbKey4	52	4키
vbKey5	53	5키
vbKey6	54	6키
vbKey7	55	7키
vbKey8	56	8키
vbKey9	57	9키
다음 상수들은 숫자키 모음의 키들을 나타냅니다.

상수	값	설명
vbKeyNumpad0	0x60	0키
vbKeyNumpad1	0x61	1키
vbKeyNumpad2	0x62	2키
vbKeyNumpad3	0x63	3키
vbKeyNumpad4	0x64	4키
vbKeyNumpad5	0x65	5키
vbKeyNumpad6	0x66	6키
vbKeyNumpad7	0x67	7키
vbKeyNumpad8	0x68	8키
vbKeyNumpad9	0x69	9키
vbKeyMultiply	0x6A	곱하기 기호(*)키
vbKeyAdd	0x6B	더하기 기호(+)키
vbKeySeparator	0x6C	Enter키
vbKeySubtract	0x6D	빼기 기호(�)키
vbKeyDecimal	0x6E	소수점(.)키
vbKeyDivide	0x6F	나누기 기호(/)키
다음의 상수들은 기능키를 나타냅니다.

상수	값	설명
vbKeyF1	0x70	F1키
vbKeyF2	0x71	F2키
vbKeyF3	0x72	F3키
vbKeyF4	0x73	F4키
vbKeyF5	0x74	F5키
vbKeyF6	0x75	F6키
vbKeyF7	0x76	F7키
vbKeyF8	0x77	F8키
vbKeyF9	0x78	F9키
vbKeyF10	0x79	F10키
vbKeyF11	0x7A	F11키
vbKeyF12	0x7B	F12키
vbKeyF13	0x7C	F13키
vbKeyF14	0x7D	F14키
vbKeyF15	0x7E	F15키
vbKeyF16	0x7F	F16키


시스템 색 상수

다음 상수들은 코드의 어느 부분에서나 실제값 대신 사용할 수 있습니다.

상수	값	설명
vbScrollBars	0x80000000	스크롤 막대 색
vbDesktop	0x80000001	데스크톱 색
vbActiveTitleBar	0x80000002	활성 창의 제목 표시줄 색
vbInactiveTitleBar	0x80000003	비활성 창의 제목 표시줄 색
vbMenuBar	0x80000004	메뉴 배경색
vbWindowBackground	0x80000005	창 배경색
vbWindowFrame	0x80000006	창 프레임 색
vbMenuText	0x80000007	메뉴에 있는 텍스트 색
vbWindowText	0x80000008	창에 있는 텍스트 색
vbTitleBarText	0x80000009	캡션, 크기 상자, 이동 화살표에 있는 텍스트 색
vbActiveBorder	0x8000000A	활성 창의 테두리 색
vbInactiveBorder	0x8000000B	비활성 창의 테두리 색
vbApplicationWorkspace	0x8000000C	다중 문서 인터페이스(MDI) 응용 프로그램의 배경색
vbHighlight	0x8000000D	컨트롤에서 선택된 항목의 배경색
vbHighlightText	0x8000000E	컨트롤에서 선택된 항목의 텍스트 색
vbButtonFace	0x8000000F	명령 단추 앞면의 음영 색
vbButtonShadow	0x80000010	명령 단추 가장자리의 음영 색
vbGrayText	0x80000011	회색 표시된(사용 불가) 텍스트
vbButtonText	0x80000012	누른 단추의 텍스트 색
vbInactiveCaptionText	0x80000013	비활성 캡션에 있는 텍스트 색
vb3Dhighlight	0x80000014	3D 표시 요소에 대한 반전 색상
vb3DDKShadow	0x80000015	3D 표시 요소에 대한 가장 어두운 음영 색상
vb3Dlight	0x80000016	vb3Dhighlight 다음에 둘째로 밝은 3D 색상
vbInfoText	0x80000017	도구 설명의 텍스트 색
vbInfoBackground	0x80000018	도구 설명의 배경색


CallType 상수

다음 상수들은 코드의 어느 부분에서나 실제값 대신 사용할 수 있습니다.

상수	값	설명
vbMethod	1	메서드가 호출되었음을 나타냅니다.
vbGet	2	Property Get 프로시저를 나타냅니다.
vbLet	4	Property Let 프로시저를 나타냅니다.
vbSet	8	Property Set 프로시저를 나타냅니다.


폼 상수

다음 상수들은 코드의 어느 부분에서나 실제값 대신 사용할 수 있습니다.

상수	값	설명
vbModeless	0	UserForm이 모덜리스입니다.
vbModal	1	UserForm이 모달입니다(기본값).


Call 문 예제

아래 예제에서는 Call 문이 컨트롤을 Sub 프로시저, 내부 함수, 동적 연결 라이브러리(DLL) 프로시저, 매킨토시 코드 원본의 프로시저 등에 전달하는데 사용되는 방법을 설명합니다. 매킨토시에서는 DLL을 사용하지 않습니다.

' Sub 프로시저를 호출합니다.

Call PrintToDebugWindow("Hello World)

' 위 Call문은 컨트롤을 다음 Sub 프로시저에

' 전달되도록 합니다.

Sub PrintToDebugWindow(AnyString)

Debug.Print AnyString	' 직접 실행 창에 인쇄합니다.

End Sub

' 내부 함수를 호출합니다. 함수의 반환값은

' 버려집니다.

Call Shell(AppName, 1)	' AppName은 실행 파일의 경로를

' 포함합니다.

' Microsoft Windows DLL 프로시저를 호출합니다. 선언문은 클래스 모듈 안에서

' Public으로 선언되어야 하지만, 표준 모듈 안에서는 그렇지 않습니다.

Private Declare Sub MessageBeep Lib "User" (ByVal N As Integer)

Sub CallMyDll()

Call MessageBeep(0)	' Windows DLL 프로시저를 호출합니다.

MessageBeep 0	' Call 키워드를 사용하지 않고 다시 호출합니다.

End Sub


Choose 함수 예제

아래 예제에서는 Choose 함수를 사용하여 Ind 매개 변수의 프로시저에 전달되는 인덱스에 대한 응답으로 이름을 표시합니다.

Function GetChoice(Ind As Integer)

GetChoice = Choose(Ind, "Speedy", "United", "Federal")

End Function


DoEvents 함수 예제

아래 예제에서는 DoEvents 함수를 사용하여 루프가 1000번 반복 때마다 운영 체제가 한 번씩 실행되도록 합니다. DoEvents는 호스트 프로그램이 Visual Basic일 때에만 열린 Visual Basic 폼의 개수를 반환합니다.

' 로드된 Visual Basic 폼의 개수를 저장할 변수를

' 작성합니다.

Dim I, OpenForms

For I = 1 To 150000	' 루프를 시작합니다.

If I Mod 1000 = 0 Then 	' 만약 루프가 1000번 반복되었다면,

OpenForms = DoEvents	' 컨트롤을 운영 체제로 넘깁니다.

End If

Next I	' 루프 카운터 증가


Do...Loop 문 예제

아래 예제에서는 Do...Loop 문이 어떻게 사용되는지 보여줍니다. 플래그 값이 False로 설정되는 내부 Do...Loop 문이 10회 반복되며, 변수 값에 따라서 Exit Do 문을 사용하여 지정된 루프를 돌지 않고 조속히 종료합니다. 외부 루프는 조사한 변수 값에 따라 즉시 종료합니다.

Dim Check, Counter

Check = True: Counter = 0	' 변수를 초기화합니다.

Do	' 외부 루프입니다.

Do While Counter < 20	' 내부 루프입니다.

Counter = Counter + 1	' 변수 Counter 값이 1씩 증가합니다.

If Counter = 10 Then	' 만약 변수 Counter 값이 10이면

Check = False	' 변수 Check의 값을 False로 설정합니다.

Exit Do	' 내부 루프를 종료합니다.

End If

Loop

Loop Until Check = False	' 변수 Check의 값이 True이면 루프를 즉시 종료합니다.


End 문 예제

아래 예제에서는 사용자가 잘못된 암호를 입력하였을 경우 End 문을 사용하여 코드 실행을 종료합니다.

Sub Form_Load

Dim Password, Pword

PassWord = "Swordfish"

Pword = InputBox("암호를 입력하십시오.")

If Pword <> PassWord Then

MsgBox "죄송합니다. 암호가 틀렸습니다."

End

End If

End Sub


Exit 문 예제

아래 예제에서는 Exit 문을 사용하여 For...Next 루프, Do...Loop, Sub 프로시저를 종료합니다.

Sub ExitStatementDemo()

Dim I, MyNum

Do	' 무한 루프를 설정합니다.

For I = 1 To 1000	' 1000번을 반복합니다.

MyNum = Int(Rnd * 1000)	' 무작위 수를 만듭니다.

Select Case MyNum	' 무작위 수를 평가합니다.

Case 7: Exit For	' 7이면 For...Next를 종료합니다.

Case 29: Exit Do	' 29이면 Do...Loop를 종료합니다.

Case 54: Exit Sub	' 54이면 Sub 프로시저를 종료합니다.

End Select

Next I

Loop

End Sub


For Each...Next 문 예제

아래 예제에서는 For Each...Next 문을 사용하여 문자열 "Hello"의 존재를 확인하기 위해 컬렉션에 있는 모든 요소의 Text 속성을 검색합니다. 예제에서 MyObject는 텍스트 관련 개체이며 컬렉션 MyCollection의 요소입니다. 두 가지 모두 설명용으로만 사용되는 총칭입니다.

Dim Found, MyObject, MyCollection

Found = False	' 변수를 초기화합니다.

For Each MyObject In MyCollection	' 각각의 요소에 대해 반복합니다.

If MyObject.Text = "Hello" Then	' Text가 "Hello"라면.

Found = True	' Found변수를 True로 설정합니다.

Exit For	' 루프를 종료합니다.

End If

Next


For...Next 문 예제

아래 예제에서는 For...Next 문을 사용하여 숫자 0에서 9까지의 10개의 인스턴스를 포함하는 문자열을 만듭니다. 각 문자열은 빈 칸을 사용하여 다른 것과 구분됩니다. 외부 루프는 루프를 한 번 실행할 때마다 감소하는 루프 카운터 변수를 사용합니다.

Dim Words, Chars, MyString

For Words = 10 To 1 Step -1 	' 10번 반복을 설정합니다.

For Chars = 0 To 9	' 10번 반복을 설정합니다.

MyString = MyString & Chars	' 숫자를 문자열에 추가합니다.

Next Chars	' 카운터 증가

MyString = MyString & " "	' 빈 칸을 추가합니다.

Next Words


GoSub...Return 문 예제

아래 예제에서는 GoSub를 사용하여 Sub 프로시저 내의 서브루틴을 호출합니다. Return 문은 GoSub 문 바로 다음에 오는 문에서 실행이 재개되도록 합니다. Exit Sub 문은 컨트롤이 서브루틴으로 잘못 흘러 들어가는 것을 방지하는데 사용됩니다.

Sub GosubDemo()

Dim Num

' 사용자에게 숫자를 요구합니다.

Num = InputBox("양수를 2로 나눈 값을 입력하십시오.")

' 사용자가 양수를 입력하였을 경우에만 루틴을 사용합니다.

If Num > 0 Then GoSub MyRoutine

Debug.Print Num

Exit Sub	' 오류를 방지하기 위해 Exit를 사용합니다.

MyRoutine:

Num = Num/2	' 나누기를 수행합니다.

Return	' 컨트롤을 문에 반환합니다.

End Sub	' GoSub 문 바로 다음에 오는 문에서 실행이 재개됩니다.


GoTo 문 예제

아래 예제에서는 GoTo 문을 사용하여 프로시저 내의 행 이름표로 분기합니다.

Sub GotoStatementDemo()

Dim Number, MyString

Number = 1 	' 변수를 초기화합니다.

' 숫자를 평가하고 적절한 이름표로 분기합니다.

If Number = 1 Then GoTo Line1 Else GoTo Line2

Line1:

MyString = "숫자가 1입니다.

GoTo LastLine	' LastLine으로 갑니다.

Line2:

' 다음의 문은 절대 실행되지 않습니다.

MyString = "숫자가 2입니다."

LastLine:

Debug.Print MyString	' 직접 실행 창에 "숫자가 1입니다."를 인쇄합니다.

End Sub


If...Then...Else 문 예제

아래 예제에서는 If...Then...Else 문의 블록과 한 줄 폼을 모두 보여줍니다. 이것은 또한 If TypeOf...Then...Else의 사용을 설명합니다.

Dim Number, Digits, MyString

Number = 53	' 변수를 초기화합니다.

If Number < 10 Then

Digits = 1

ElseIf Number < 100 Then

' 조건이 True로 평가되면 다음 문이 실행됩니다.

Digits = 2

Else ' 조건이 False로 평가되면 다음 문이 실행됩니다.

Digits = 3

End If

' 구문의 한 줄 폼을 사용하여 값을 할당합니다.

If Digits = 1 Then MyString = "One"

Else MyString = "More than one"

If TypeOf 문을 사용하여 프로시저에 전달된 컨트롤이 입력란인지를 결정합니다.

Sub ControlProcessor(MyControl As Control)

If TypeOf MyControl Is CommandButton Then

Debug.Print "You passed in a " & TypeName(MyControl)

ElseIf TypeOf MyControl Is CheckBox Then

Debug.Print "You passed in a " & TypeName(MyControl)

ElseIf TypeOf MyControl Is TextBox Then

Debug.Print "You passed in a " & TypeName(MyControl)

End If

End Sub


IIf 함수 예제

아래 예제에서는 IIf 함수를 사용하여 CheckIt 프로시저의 TestMe 매개 변수를 평가하고 그 크기가 1000보다 크면 단어 "Large"를 반환합니다. 그렇지 않으면 단어 "Small"을 반환합니다.

Function CheckIt (TestMe As Integer)

CheckIt = IIf(TestMe > 1000, "Large", "Small")

End Function


On...GoSub, On...GoTo 문 예제

아래 예제에서는 On...GoSub와 On...GoTo 문을 사용하여 각각 서브루틴과 행 이름표로 분기합니다.

Sub OnGosubGotoDemo()

Dim Number, MyString

Number = 2	' 변수를 초기화합니다.

' Sub2로 분기합니다.

On Number GoSub Sub1, Sub2	' On...GoSub 후에

' 여기서 실행이 재개됩니다.

On Number GoTo Line1, Line2	' Line2로 분기합니다.

' On...GoTo 후에는 여기서 실행이 재개되지 않습니다.

Exit Sub

Sub1:

MyString = "In Sub1" : Return

Sub2:

MyString = "In Sub2" : Return

Line1:

MyString = "In Line1"

Line2:

MyString = "In Line2"

End Sub


Partition 함수 예제

아래 예제에서는 사용자가 Freight 필드를 포함하는 Orders 테이블을 가지고 있다고 가정합니다. 이 예제는 각 주문에 대한 운송 비용이 여러 범위로 분류되는 주문 수를 계산하는 선택 프로시저를 만듭니다. 먼저 Partition 함수를 사용하여 이러한 범위들을 정한 다음, SQL Count 함수를 사용하여 각 범위 당 주문 수를 계산합니다. 이 예제에서 Partition 함수에 대한 인수들은 start = 0, stop = 500, interval = 50 입니다. 따라서 처음 범위는 0:49이며, 이런 식으로 500 까지 이어집니다.

SELECT DISTINCTROW Partition([freight],0, 500, 50) AS Range,

Count(Orders.Freight) AS Count

FROM Orders

GROUP BY Partition([freight],0,500,50);


Select Case 문 예제

아래 예제에서는 Select Case 문을 사용하여 변수의 값을 평가합니다. 두 번째 Case 절은 평가 중인 변수의 값을 포함하고 있으며 따라서 그 변수와 관련된 문만이 실행됩니다.

Dim Number

Number = 8	' 변수를 초기화합니다.

Select Case Number	' 변수 Number를 평가합니다.

Case 1 To 5	' 1에서 5사이에 포함된 숫자.

Debug.Print "Between 1 and 5"

' 다음의 Case 절만이 True로 평가됩니다.

Case 6, 7, 8	' 6과 8사이의 숫자.

Debug.Print "Between 6 and 8"

Case 9 To 10	' 숫자가 9 또는 10입니다.

Debug.Print "Greater than 8"

Case Else	' 다른 값인 경우.

Debug.Print "Not between 1 and 10"

End Select


Shell 함수 예제

아래 예제에서는 Shell 함수를 사용하여 사용자에 의해 지정된 응용 프로그램을 실행합니다. MacIntosh에서는 기본 드라이브 이름은 "HD"이고 경로 이름 부분은 역슬래시(\) 대신 콜론(:)으로 구분합니다. 따라서 MacIntosh에서는 \Windows 대신 Macintosh 폴더를 지정합니다.

' 응용 프로그램을 보통 크기로 열고 포커스를 주기 위해

' 1을 두 번째 인수로 지정합니다.

Dim RetVal

RetVal = Shell("C:\WINDOWS\CALC.EXE", 1)	' 계산기를 실행합니다.


Stop 문 예제

아래 예제에서는 Stop 문을 사용하여 For...Next 루프를 통한 각 반복 실행을 중지합니다.

Dim I

For I = 1 To 10	' For...Next 루프를 시작합니다.

Debug.Print I	' I를 직접 실행 창에 인쇄합니다.

Stop	' 각 반복 중에 실행을 중지합니다.

Next I


Switch 함수 예제

아래 예제에서는 Switch 함수를 사용하여 도시의 이름과 일치하는 언어 이름을 반환합니다.

Function MatchUp (CityName As String)

Matchup = Switch(CityName = "London", "English", CityName _

= "Rome", "Italian", CityName = "Paris", "French")

End Function


While...Wend 문 예제

아래 예제에서는 While...Wend 문을 사용하여 카운터 변수를 증가시킵니다. 루프 내의 문들은 조건이 True로 평가되는 한 계속해서 실행됩니다.

Dim Counter

Counter = 0	' 변수를 초기화합니다.

While Counter < 20	' 변수 Counter 값을 검사합니다.

Counter = Counter + 1	' 변수 Counter 값을 1씩 증가시킵니다.

Wend	' 변수 Counter의 값이 19보다 크면 While 루프를 종료합니다.

Debug.Print Counter	' 직접 실행 창에 20을 인쇄합니다.


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


Call 문

컨트롤을 Sub 프로시저, Function 프로시저 또는 동적 연결 라이브러리(DLL) 프로시저로 전송합니다.

구문

[Call] name [argumentlist]

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

구성 요소	설명
Call	선택적인 요소. 키워드입니다. 지정하였을 경우 반드시 argumentlist를 괄호로 묶어주어야 합니다. 예를 들면 아래와 같습니다.
	Call MyProc(0)
name	필수적인 요소. 호출할 프로시저의 이름입니다.
argumentlist
참고

프로시저를 호출할 때는 Call 키워드를 사용하지 않아도 됩니다. 그러나 인수를 필요로 하는 프로시저를 호출하기 위하여 Call 키워드를 사용하는 경우에는 argumentlist를 괄호로 묶어주어야 합니다. Call 키워드를 생략할 경우는 argumentlist 주변의 괄호도 반드시 생략해야 합니다. 내부 함수나 사용자 정의 함수를 호출하기 위해 Call 구문을 사용하는 경우 그 함수의 반환값은 폐기됩니다.

프로시저에 전체 배열을 전달하려면 배열의 이름 뒤에 빈 괄호를 붙여 사용합니다.


Choose 함수

인수 목록에서 값을 선택하고 반환하는 경우 사용합니다.

구문

Choose(index, choice-1[,choice -2, ... [,choice -n]])

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

구성 요소	설명
index	필수적인 요소. 1과 사용 가능한 수 중에서 하나의 값을 갖는 필드나 수식입니다.
choice	필수적인 요소. 가능한 선택 중 하나를 포함하는 Variant 식입니다.
참고

Choose는 index 값에 따라 선택 목록에서 하나의 값을 반환합니다. 만일 index가 1인 경우 Choose는 목록의 첫 번째 선택값을 반환하고, index가 2인 경우 목록의 두 번째 값을 반환합니다.

가능한 값들의 목록에서 하나의 값을 찾을 때 Choose를 사용할 수 있습니다. 예를 들어 choice-1= "one", choice-2= "two", choice-3= "three"인 경우 index가 3이라면 Choose는 "three"를 반환합니다. 이 기능은 index가 선택 그룹 안의 값을 갖는 경우 특히 유용하게 사용할 수 있습니다.

Choose는 반환하는 값이 단 하나인 경우에도 목록의 모든 선택 항목을 평가합니다. 이러한 이유로 예상치 않은 결과가 나올 수도 있기 때문에 주의를 기울여야 합니다. 예를 들어 사용자가 전체 선택 항목 중에 식의 일부로 MsgBox 함수를 사용하는 경우 Choose가 선택 항목 중 하나의 값만을 반환하는 경우에도 평가되는 각 선택 항목마다 메시지 상자가 각각 표시됩니다.

index가 1보다 작거나 열거된 선택 항목 수보다 큰 경우 Choose 함수는 Null 값을 반환합니다.

만일 index가 정수가 아닌 경우 가까운 정수값으로 반올림한 후 계산합니다.


DoEvents 함수

운영 체제가 다른 이벤트를 처리할 수 있도록 실행을 포기합니다.

구문

DoEvents( )

참고

DoEvents 함수는 Visual Basic 전문가용과 같은 독립형 Visual Basic 버전에서 열려있는 폼의 수를 나타내는 Integer값을 반환합니다. DoEvents는 다른 모든 응용 프로그램에서는0을 반환합니다. DoEvents는 컨트롤을 운영 체제에 전달하며, 운영 체제가 대기열에 있는 이벤트를 처리하고 SendKeys 대기열에 있는 모든 키들이 보내진 후에 컨트롤이 반환됩니다.

DoEvents는 예를 들어, 파일 검색과 같은 프로세스가 시작된 후 사용자가 그 프로세스를 취소할 수 있도록 해주는 것과 같은 간단한 작업에 아주 유용합니다. 오랫동안 실행되는 프로세스의 경우 타이머를 사용하거나 ActiveX EXE 구성 요소에 그 작업을 위임함으로써 그 프로세서를 넘겨주는 작업이 더 잘 수행될 수 있습니다. ActiveX EXE 구성 요소에 위임할 경우 그 작업은 사용자의 응용 프로그램과는 별도로 완벽하게 실행될 수 있고 운영 체제가 다중 작업과 시간 분할을 담당합니다.

주의   이벤트 프로시저 내에서 프로세서를 일시적으로 넘겨줄 때는 첫째 호출이 반환되기 전에 코드의 다른 부분에서 프로시저가 다시 실행되지 않도록 주의하십시오. 이런 경우 예상치 않은 결과를 초래할 수 있습니다. 또한 컨트롤을 넘겨준 동안 다른 응용 프로그램에서 예기치 않은 방법으로 사용자의 프로시저와 상호작용할 가능성이 있을 경우에는 DoEvents를 사용하지 마십시오.


Do...Loop 문

조건이 True이거나 조건이 True가 될 때까지 한 블록의 문을 반복합니다.

구문

Do [{While | Until} condition]
[statements]
[Exit Do]
[statements]

Loop

또는 다음과 같은 구문을 사용할 수도 있습니다.

Do
[statements]
[Exit Do]
[statements]

Loop [{While | Until} condition]

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

구성 요소	설명
condition	선택적인 요소. True이거나 False인 수식이나 문자식입니다. 만약 condition이 Null이면 condition은 False로 처리됩니다.
statements	condition이 True인 동안 또는 True일 때까지 반복되는 하나 이상의 문입니다.
참고

Do...Loop를 종료하기 위한 대체 방법으로 Do...Loop의 어느 곳에서나 Exit Do 문을 얼마든지 사용할 수 있습니다. Exit Do는 If...Then과 같은 어떤 조건을 평가한 후에 사용하는 경우가 많습니다. 그럴 경우 Exit Do 문은 Loop 바로 다음에 오는 문에 컨트롤을 전송합니다.

중첩된 Do...Loop문 내에서 사용되는 경우 Exit Do는 Exit Do가 발생하는 루프보다 한 단계 위인 중첩 루프로 컨트롤을 전송합니다.


End 문

프로시저나 블록을 종료합니다.

구문

End

End Function

End If

End Property

End Select

End Sub

End Type

End With

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

문	설명
End	실행을 즉시 종료합니다. 자체적으로는 사용되지 않으며 코드 실행을 종료할 때, Open 문으로 연 파일을 닫을 때 그리고 변수를 지울 때 프로시저의 어느 곳에서나 사용할 수 있습니다.
End Function	Function 문을 종료할 때 사용합니다.
End If	If...Then...Else 문 블록을 종료할 때 사용합니다.
End Property	Property Let, Property Get 또는 Property Set 프로시저 등을 종료할 때 사용합니다.
End Select	Select Case 문을 종료할 때 사용합니다.
End Sub	Sub 문을 종료할 때 사용합니다.
End Type	사용자 정의 형식 정의(Type문)를 종료할 때 사용합니다.
End With	With 문을 종료할 때 사용합니다.
참고

End 문이 실행되면 모든 모듈에 있는 모듈 수준 변수들과 모든 정적 지역 변수들을 재설정합니다. 이 변수값들을 보존하려면 Stop 문을 대신 사용합니다. 그러면 이 변수값을 보존한 상태로 실행을 재개할 수 있습니다.

메모   End 문은 Unload, QueryUnload, Terminate 이벤트 또는 기타 Visual Basic 코드를 부르지 않고도 코드 실행을 갑자기 중지합니다. 폼과 클래스 모듈의 Unload, QueryUnload 및 Terminate 이벤트에 사용한 코드는 실행되지 않습니다. 클래스 모듈에서 만든 개체는 없어지고, Open 문을 사용하여 연 파일은 닫히며, 사용자의 프로그램이 사용한 메모리는 다른 프로그램에서 사용할 수 있게 됩니다. 다른 프로그램이 갖고 있는 개체 참조는 무효가 됩니다.

End 문은 강제로 프로그램을 중지합니다. Visual Basic 프로그램을 정상적으로 종료하려면 모든 폼을 언로드해야 합니다. 공용 클래스 모듈에서 만든 개체를 참조하는 다른 프로그램이 없거나 실행되는 코드가 없으면 그 즉시 사용자의 프로그램은 닫힙니다.


Exit 문

Do...Loop, For...Next, Function, Sub, Property 코드의 블록을 종료합니다.

구문

Exit Do

Exit For

Exit Function

Exit Property

Exit Sub

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

문	설명
Exit Do	Do...Loop 문을 종료하는 방법을 제공하며, Do...Loop문 안에서만 사용할 수 있습니다. Exit Do는 Loop문 다음의 문으로 컨트롤을 전송합니다. 중첩된 Do...Loop 문 내에서 사용될 경우 Exit Do는 Exit Do가 발생하는 루프보다 한 단계 위인 중첩 루프로 컨트롤을 전송합니다.
Exit For	For 루프를 종료하는 방법을 제공하며 For...Next나 For Each...Next 루프에서만 사용할 수 있습니다. Exit For는 Next문 다음의 문으로 컨트롤을 전송합니다. 중첩된 For 루프 내에서 사용될 경우 Exit For는 Exit For가 발생하는 루프보다 한 단계 위인 중첩 루프로 컨트롤을 전송합니다.
Exit Function	Function 프로시저를 즉시 종료할 때 사용합니다. Function을 호출한 문 다음에 오는 문에서 실행이 계속됩니다.
Exit Property	Property 프로시저를 즉시 종료할 때 사용합니다. Property 프로시저를 호출한 문 다음에 오는 문에서 실행이 계속됩니다.
Exit Sub	Sub 프로시저를 즉시 종료할 때 사용합니다. Sub 프로시저를 호출한 문 다음에 오는 문에서 실행이 계속됩니다.
참고

Exit 문과 End 문을 혼동하지 마십시오. Exit는 한 구조의 종료를 정의하는 것이 아닙니다.


For Each...Next 문

배열이나 컬렉션의 각 요소들에 대한 문의 그룹을 반복합니다.

구문

For Each element In group
[statements]
[Exit For]
[statements]

Next [element]

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

구성 요소	설명
element	필수적인 요소. 컬렉션이나 배열의 요소들을 반복 실행하는 데 사용하는 변수입니다. 컬렉션에서 element는 오직 Variant 변수나 일반 개체 변수 또는 특정한 개체 변수가 될 수 있습니다. 배열에서 element는 오직 Variant 변수만 될 수 있습니다.
group	필수적인 요소. 각 개체 컬렉션이나 배열의 이름(사용자 정의 형식 배열은 제외)입니다.
statements	선택적인 요소. group의 각 항목에서 실행되는 하나 이상의 문입니다.
참고

group 내에 적어도 하나 이상의 요소가 있는 경우 For...Each 블록을 시작합니다. 일단 그 루프가 시작되면, 루프의 모든 문들이 group의 첫째 요소에 대하여 실행됩니다. group에 요소가 더 있으면 루프의 문들은 각 요소에 대해 계속 실행됩니다. group에 더 이상 요소가 없으면 루프는 종료되고 Next문 다음에 오는 문에서 실행이 계속됩니다.

루프를 종료하기 위한 대체 방법으로는 루프 내의 어느 곳에서나 Exit For 문을 얼마든지 사용할 수 있습니다. Exit For는 예를 들면 If...Then 과 같은 조건을 평가한 후에 사용되는 것이 보통이며 Next 바로 다음에 오는 문으로 컨트롤을 전송합니다.

하나의 For...Each...Next 루프를 다른 For...Each...Next 루프 내에 중첩하여 사용할 수 있지만 각 루프의 element는 반드시 고유한 것이어야 합니다.

메모   Next 문에서 element를 생략하면 마치 element가 포함되어 있는 것처럼 실행이 계속됩니다. 대응하는 For 문이 나타나기 전에 Next 문이 나타나면 오류가 발생합니다.

Variant는 사용자 정의 형식을 포함할 수 없기 때문에 For...Each...Next 문을 사용자 정의 형식 배열과 함께 사용할 수 없습니다.


For...Next 문

문의 그룹을 지정한 횟수만큼 반복합니다.

구문

For counter= start To end [Step step]
[statements]
[Exit For]
[statements

Next [counter]

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

구성 요소	설명
counter	필수적인 요소. 루프 카운터로서 사용되는 숫자 변수. 이 변수는 Boolean 또는 배열 요소가 될 수 없습니다.
start	필수적인 요소. Counter의 시작값
end	필수적인 요소. Counter의 최종값
step	선택적인 요소. 루프를 한번 수행할 때마다 변화하는 counter의 양입니다. 지정하지 않으면 step의 기본값은 1입니다.
statements	선택적인 요소. For와 Next 사이의 있는 하나 이상의 문이며 지정한 횟수만큼 실행됩니다.
참고

step 인수는 양수 또는 음수가 될 수 있습니다. step 인수의 값은 다음과 같이 루프 처리를 결정합니다.

값	루프가 실행되는 경우
양수나 0	counter <= end
음수	counter >= end
루프 안의 모든 문을 실행하고 나면 step이 counter에 추가됩니다. 이때 루프 안의 문이 다시 실행되거나(처음에 루프를 실행시켰던 것과 같은 검사를 기준으로), 또는 그 루프가 종료되고 Next문 다음에 오는 문에서 실행이 계속됩니다.

팁   루프 안에 있는 동안 counter의 값을 변경하면 코드를 읽고 디버깅하기가 더욱 어려워집니다.

루프를 종료하기 위한 대체 방법으로서 루프의 어느 곳에서나 Exit For 문을 얼마든지 사용할 수 있습니다. Exit For는 예를 들면 If...Then과 같은 조건을 평가한 후 주로 사용되며, Next 바로 다음에 오는 문에 컨트롤을 전송합니다.

하나의 For...Next 루프에 다른 For...Next 루프를 중첩할 수 있지만, 각 루프에는 그 루프만의 counter 역할을 하는 고유 변수 이름을 주어야 합니다. 다음은 For...Next 루프의 올바른 구성을 보여주는 예제입니다.

For I = 1 To 10

For J = 1 To 10

For K = 1 To 10

...

Next K

Next J

Next I

메모   Next 문에서 counter를 생략할 경우 counter가 포함된 것처럼 실행이 계속됩니다. 대응하는 For문 이전에 어떤 Next 문이 나타나면 오류가 발생합니다.


GoSub...Return 문

프로시저 내의 서브루틴으로 분기하고 그 곳에서 반환합니다.

구문

GoSub line
...
line
...

Return

line 인수는 줄 레이블이나 행 번호가 될 수 있습니다.

참고

GoSub 문과 Return 문은 프로시저 내의 어느 곳에서나 사용할 수 있지만 GoSub 문과 그에 대응하는 Return 문은 반드시 같은 프로시저에 있어야 합니다. 하나의 서브루틴에는 둘 이상의 Return 문이 포함될 수 있지만 첫 번째 Return 문이 나타나면 가장 최근에 실행한 GoSub 문의 바로 다음 문으로 실행 흐름이 다시 분기합니다.

메모   Sub 프로시저를 GoSub...Return으로 시작하거나 종료할 수 없습니다.

팁   호출할 수 있는 별도 프로시저를 작성하면 GoSub...Return을 사용하는 것보다 훨씬 더 구조적인 방법을 얻을 수 있습니다.


GoTo 문

프로시저 내의 지정된 행으로 무조건 분기합니다.

구문

GoTo line

필수 요소인 line 인수는 줄 레이블이나 행 번호가 될 수 있습니다.

참고

GoTo는 프로시저 내의 행으로만 분기할 수 있습니다.

메모   GoTo 문을 너무 많이 사용하면 코드를 읽고 디버그하기가 어려워지기 때문에 가능하면 구조적 제어 문(Do...Loop, For...Next, If...Then...Else, Select Case)을 사용하는 것이 좋습니다.


If...Then...Else 문

식의 값에 따라 문 그룹을 조건부로 실행합니다.

구문

If condition Then [statements] [Else elsestatements]

또는 다음과 같이 블록 형태의 구문을 사용할 수 있습니다.

If condition Then
[statements]

[ElseIf condition -n Then
[elseifstatements]...]

[Else
[elsestatements]]

End If

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

구성 요소	설명
condition	필수적인 요소. 다음과 같은 두 가지 형식 중 하나 이상의 식입니다.
	True나 False로 평가되는 수식이나 문자식으로 condition이 Null이면 False로 처리됩니다.
	TypeOf objectname Is objecttype 형태로 된 식입니다. Objectname은 개체 참조이며, objecttype은 유효한 개체 형식입니다. Objectname이 objecttype에 의해 지정된 개체 형식이면 식은 True이며, 그렇지 않으면 False입니다.
statements	블록 형태에서는 선택적인 요소이고, Else절이 없는 단일 행 형태에서는 필수적인 요소입니다. 둘 이상의 문은 콜론으로 구분하며 condition이 True일 경우 실행됩니다.
condition -n	선택적인 요소. condition과 동일합니다.
elseifstatements	선택적인 요소. 연관된 condition-n이 True일 경우 실행되는 하나 이상의 문입니다.
elsestatements	선택적인 요소. 이전의 condition이나 condition-n식이 True가 아닐 경우 실행되는 하나 이상의 문입니다.
참고

간단한 테스트를 위하여 단일 행 형태(첫 번째 구문)를 사용할 수 있습니다. 그러나 블록 형태(두 번째 구문)를 사용하면 단일 행 형태보다 더 많은 구조와 유연성을 얻을 수 있으며, 일반적으로 읽기, 유지, 디버깅하기가 훨씬 용이합니다.

메모   단일 행 형태로 If...Then 결정의 결과에 따라 여러 개의 문을 실행시킬 수 있습니다. 모든 문은 아래 에제처럼 같은 선상에 위치하며 콜론으로 구분해야 합니다.

If A > 10 Then A = A + 1 : B = B + A : C = C + B

블록 형태의 If 문은 선상에서 처음에 두어야 합니다. 문의 Else, ElseIf, End If 부분들은 그 앞에 행 번호나 줄 레이블만을 가질 수 있습니다. 블록 If 문은 반드시 End If 문으로 끝나야 합니다.

문이 블록 If문인지 여부는 Then 키워드 다음에 무엇이 오는 가를 검사해 보면 알 수 있습니다. 만일 동일 선상에서 Then문 다음에 주석 외의 다른 것이 나타나면 이 문은 단일 행의 If 문으로 처리됩니다.

Else와 ElseIf 절은 모두 선택적인 요소입니다. 블록 If 문에서 원하는 만큼 ElseIf 절을 사용할 수 있으나, Else 절 다음에는 사용할 수 없습니다. 블록 If 문은 하나의 블록 If문 안에 또 다른 블록 If 문을 중첩할 수 있습니다.

블록 If 문(두 번째 구문)을 실행하면 condition이 검사됩니다. 만일 condition이 True일 경우 Then 다음의 문이 실행됩니다. condition이 False라면 각각의 ElseIf 문이 차례로 평가됩니다. True 조건이 나타날 경우 연관된 Then의 바로 다음에 오는 문들이 실행됩니다. ElseIf 조건 중 어느 것도 True가 아닌 경우(또는 더 이상의 ElseIf 절이 없는 경우) Else 다음에 오는 문이 실행됩니다. Then이나 Else 다음의 문을 실행한 후 End If 다음의 문이 계속 실행됩니다.

팁   여러 동작이 가능한 하나의 식을 평가할 때에는 Select Case 문이 더 유용할 수 있습니다. 그러나 TypeOf objectname Is objecttype 절은 Select Case 문과 함께 사용할 수 없습니다.

메모   TypeOf는 Object를 제외한 Long, Integer 등의 기본 제공된 데이터 형식과 함께 사용할 수 없습니다.


IIf 함수

식을 평가한 결과에 따라 두 개의 값 중에서 하나를 반환합니다.

구문

IIf(expr, truepart, falsepart)

IIf 함수는 다음과 같은 명명된 인수 형식으로 사용합니다.

구성요소	설명
expr	필수적인 요소. 평가하고자 하는 식
truepart	필수적인 요소. expr이 True인 경우 반환하는 값이나 식입니다.
falsepart	필수적인 요소. expr이 False인 경우 반환하는 값이나 식입니다.
참고

IIf는 truepart와 falsepart 모두 평가하지만 둘 중 하나만 반환합니다. 이러한 이유로 예상치 않은 결과값이 나올 수 있으므로 주의해야 합니다. 예를 들면 falsepart의 계산 결과가 불능이 되면 expr이 True이더라도 오류가 발생합니다.


On...GoSub, On...GoTo 문

식의 값에 따라 지정된 몇 개의 행 중 하나의 행으로 분기합니다.

구문

On expression GoSub destinationlist

On expression GoTo destinationlist

On...GoSub와 On...GoTo 문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
expression	필수적인 요소. 0과255 사이의 한 정수로 평가되는 수식으로 포괄적입니다. expression에서 정수를 제외한 모든 숫자는 반올림한 후 계산합니다.
destinationlist	필수적인 요소. 쉼표로 구분하는 행 번호나 줄 레이블입니다.
참고

expression의 값에 따라 destinationlist 안의 어느 행으로 분기할지의 여부가 결정됩니다. expression의 결과값이 1보다 작거나 목록의 항목 개수보다 클 경우 다음과 같은 결과가 발생합니다.

식	결과
0일 때	프로그램의 컨트롤이 On...GoSub나 On...GoTo 문 다음의 문으로 넘어갑니다.
목록의 항목 개수보다 클 경우	프로그램의 컨트롤이 On...GoSub나 On...GoTo 문 다음의 문으로 넘어갑니다.
음수인 경우	오류가 발생합니다.
255보다 클 경우	오류가 발생합니다.
행 번호와 줄 레이블을 동일 목록에서 혼용하여 사용할 수 있습니다. On...GoSub와 On...GoTo 문과 함께 줄 레이블과 행 번호는 여러 번 사용할 수 있으나, 단일 행 안에 더 많은 행과 레이블을 사용하려면 다음 행도 동일한 행으로 인식되도록 줄 연속 문자를 사용합니다.

팁   Select Case 문을 사용하면 다중 분기를 더 구조적이고 유연하게 처리할 수 있습니다.


Partition 함수

계산된 범위 내의 어느 곳에서 숫자가 발생했는지를 알려주는 Variant(String)를 반환합니다.

구문

Partition(number, start, stop, interval)

Partition 함수 구문은 다음과 같은 명명된 인수로 구성됩니다.

구성 요소	설명
number	필수적인 요소. 지정한 범위 안에서 평가하려는 횟수(정수)
start	필수적인 요소. 지정한 전체 범위에 대하여 처리를 시작하고자 하는 숫자(정수). 0보다 커야 합니다.
stop	필수적인 요소. 지정한 전체 범위에 대하여 처리를 종료하고자 하는 숫자(정수). start 값보다 커야 합니다.
참고

Partition 함수는 number가 들어 있는 특정한 범위를 인식하고 그 범위를 알려주는 Variant(String)를 반환합니다. Partition 함수는 쿼리에서 가장 유용하게 사용할 수 있습니다. 주어진 범위 안의 주문량을 구하기 위하여 선택 쿼리를 작성할 수도 있습니다. 예를 들면 1과1000 또는 1001과2000 사이의 주문량 등입니다.

다음 표는 start와 stop 그리고 interval 등 세 개 인수들을 사용하여 어떻게 범위를 결정하는지를 보여주는 예입니다. 시작 범위 열과 종료 범위 열의 값은 Partition이 반환하는 범위를 보여 주고 있습니다. 범위는 최저값:최대값 형식으로 표시하고, 범위의 최저값과 최대값은 콜론(:)으로 구분합니다.

start	stop	interval	시작 전	시작 범위	종료 범위	종료 후
0	99	5	"   :-1"	"      0:  4"	"     95: 99"	"   100:   "
20	199	10	"   :  19"	"    20:  29"	"   190: 199"	"   200:   "
100	1010	20	"   :   99"	"  100:  119"	" 1000: 1010"	" 1011:   "
위 표에서 세 번째 행은 interval로 start과 stop값을 나누었을 때 정수값이 나오지 않는 경우의 결과값을 보여주고 있습니다. 종료 범위값은 interval이 20일 경우에도 stop값까지만 연장됩니다.

필요한 경우 Partition 함수는 stop값에 지정된 값을 감안하여 콜론의 좌우에 같은 수의 자릿수가 놓일 수 있도록 충분한 여지의 범위값을 반환한다. 이것은 만일 사용자가 Partition 함수를 다른 숫자들과 함께 사용하는 경우 관련된 정렬 작업 동안 결과 텍스트가 적절하게 처리되도록 하기 위한 것입니다.

interval이 1인 경우 범위값은 start과 stop 인수에 관계없이 number:number가 됩니다. 예를 들면 interval이 1인 경우 start값이 100이고 stop값이 1000이라도, Partition 문은 "100: 100"을 반환하게 됩니다.

각 부분 중 어느 한 부분이라도 Null이면 Partition은 Null을 반환합니다.


Select Case 문

식의 값에 따라 몇 개 그룹의 문 중의 하나를 실행합니다.

구문

Select Case testexpression
[Case expressionlist-n
[statements-n]] ...
[Case Else
[elsestatements]]

End Select

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

구성 요소	설명
testexpression	필수적인 요소. 모든 수식이나 문자식입니다.
expression list-n	Case 문을 사용하는 경우에는 필수적인 요소입니다. expression, expression To expression, Is comparisonoperator expression과 같은 형식들 중 하나 이상의 구분된 목록으로 구성됩니다. To 키워드는 값의 범위를 지정합니다. To 키워드를 사용하는 경우에는 더 작은 값이 To문 앞에 와야 합니다. 값의 범위를 지정하려면 비교 연산자(Is 문과 Like문은 제외)와 함께 Is 키워드를 사용합니다. Is 키워드를 입력하지 않으면 자동으로 삽입됩니다.
statements-n	선택적인 요소. testexpression에 대응하는 expressionlist가 있는 경우 해당되는 하나 이상의 문이 실행됩니다.
elsestatements	선택적인 요소. testexpression에 대응하는 Case절이 없는 경우 해당되는 하나 이상의 문이 실행됩니다.
참고

testexpression이 Case expressionlist 식에 대응하면, Case절 다음에 오는 문을 다음 case절까지 또는 그 case절이 마지막 절이면 End Select문까지 실행합니다. 그러면 프로그램의 컨트롤은 End Select문의 다음 문으로 전달됩니다. 둘 이상의 Case 절에 있는 expressionlist 식이 testexpression과 대응되는 경우에는 첫 번째 대응하는 문만이 실행됩니다.

Case Else 절은 다른 Case 절의 선택 사항 중 testexpression과 expressionlist 사이에서 대응하는 조건이 하나도 없는 경우 실행되는 elsestatements 문을 나타낼 때 사용합니다. 반드시 필요한 것은 아니지만, 예상치 않은 testexpression 값을 처리하기 위하여 Select Case 문에 Case Else 문을 함께 사용하는 것이 좋습니다. 만일 Case expressionlist가 testexpression에 대응하는 것이 없고 더 이상 수행할 Case Else 문이 없는 경우에는 End Select문 다음에 나오는 문이 실행됩니다.

각 Case 절 안에서 여러 개의 식이나 범위를 사용할 수 있습니다. 예를 들면 다음과 같은 표현도 유효합니다.

Case 1 To 4, 7 To 9, 11, 13, Is > MaxNumber

메모   Is 비교 연산자는 Select Case 문에서 사용하는 Is 키워드와 다릅니다.

문자열에 대하여 범위값과 여러 식을 지정할 수 있습니다. 아래 예제에서 Case 문은 모든 문자열(everything)이거나 알파벳 순으로 nuts부터 soup사이에 해당하는 문자열이거나 TestItem와 동일한 문자열에 대응합니다.

Case "everything", "nuts" To "soup", TestItem

Select Case 문은 중첩하여 사용할 수 있습니다. 각 중첩된 Select Case 문에는 대응하는 End Select 문이 있어야 합니다.


Shell 함수

실행 프로그램을 수행하고, 성공적으로 종료되었을 경우에는 프로그램의 작업 ID를 나타내는 Variant(Double) 값을 반환하고, 비정상적으로 종료되었을 경우는 0을 반환합니다.

구문

Shell(pathname[,windowstyle])

Shell 함수 구문은 다음과 같은 명명된 인수로 구성되어 있습니다.

구성요소	설명
pathname	필수적인 요소. Variant(String). 실행할 프로그램의 이름과 그에 필요한 인수 또는 명령줄, 스위치입니다. 디렉터리나 폴더 또는 드라이브가 포함될 수 있습니다. 매킨토시에서는 MacID 함수를 사용하여 이름 대신 응용 프로그램의 서명을 지정할 수 있습니다. 아래 예제에서는 Microsoft Word용 서명을 사용하고 있습니다. Shell MacID("MSWD")
windowstyle	선택적인 요소. 프로그램이 실행될 창의 유형에 대응하는 Variant(Integer) 값입니다. windowstyle을 생략할 경우 프로그램은 포커스를 갖고 최소화된 상태로 시작합니다. 매킨토시(시스템7.0 이상)에서 windowstyle은 응용 프로그램이 실행될 때 포커스가 있는지 여부만 결정합니다.
windowstyle의 명명된 인수값은 다음과 같습니다.

상수	값	설명
vbHide	0	창이 숨겨진 상태이며 숨겨진 창으로 포커스를 전달합니다. 매킨토시 플랫폼에는 vbHide 상수를 적용할 수 없습니다.
vbNormalFocus	1	창에 포커스가 있으며 창 원래 상태의 크기와 위치로 복귀합니다.
vbMinimizedFocus	2	창을 포커스가 있는 아이콘으로 표시합니다.
vbMaximizedFocus	3	포커스가 있는 창을 전체 화면으로 표시합니다.
vbNormalNoFocus	4	창이 최근의 창 크기와 위치로 복귀합니다. 현재 활성화된 창은 계속 활성창으로 남아있게 됩니다.
vbMinimizedNoFocus	6	창을 아이콘으로 표시합니다. 현재 활성화된 창은 계속 활성창으로 남아있게 됩니다.
참고

Shell 함수가 지정된 파일을 성공적으로 실행하고 나면 시작된 프로그램의 작업 ID를 반환합니다. 작업 ID는 실행 중인 프로그램을 식별하는 고유한 숫자를 의미합니다. Shell 함수가 지정된 프로그램을 시작할 수 없을 경우에는 오류가 발생합니다.

매킨토시에서 vbNormalFocus, vbMinimizedFocus 및 vbMaximizedFocus는 모두 응용 프로그램을 전경에 배치합니다. 이와 달리 vbHide, vbNoFocus, vbMinimizeFocus는 모두 응용 프로그램을 배경에 배치합니다.메모   기본값으로 Shell 함수는 다른 프로그램을 비동기적으로 실행시킵니다. 즉 Shell 함수로 시작한 프로그램은 Shell 함수 다음의 문들이 수행되기 전까지는 실행이 종료되지 않습니다.


Stop 문

실행을 중지합니다.

구문

Stop

참고

프로그램 실행을 중지하기 위하여 프로시저 안의 어느 곳에서라도 Stop 문을 사용할 수 있습니다. Stop 문을 사용하는 것은 프로그램 코드 상에 중단점을 두는 것과 비슷합니다.

Stop 문은 프로그램의 실행을 중지시키지만, End 문과는 달리, 컴파일된 실행 파일(.EXE)에 Stop 문이 들어 있는 경우를 제외하고는 파일을 닫거나 변수를 해제시키지 않습니다.


Switch 함수

식들의 목록을 평가한 후 목록에서 True 값을 갖는 최초의 식과 관련된 Variant 값이나 식을 반환합니다.

구문

Switch(expr-1, value-1[,expr-2, value-2 _ [,expr-n,value -n]])

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

구성 요소	설명
expr	필수적인 요소. 평가할 Variant 식입니다.
value	필수적인 요소. 대응하는 식이 True인 경우 식이나 값을 반환합니다.
참고

Switch 함수의 인수 목록은 식과 값의 쌍으로 구성됩니다. 식의 왼쪽에서 오른쪽으로 계산되며, True로 평가된 첫 번째 식과 관련된 값을 반환합니다. 구성 요소들이 적절히 짝지워지지 않은 경우에는 런타임 오류가 발생합니다. 예를 들면 expr-1이 True이면 Switch 함수는 value-1을 반환하고, expr-1이 False이고 expr-2가 True인 경우 Switch 함수는 value-2를 반환합니다.

Switch 함수는 다음의 경우에 Null 값을 반환합니다.

•	True인 식이 없는 경우

•	True인 최초의 식이 Null에 대응하는 값을 갖는 경우

Switch 함수는 식 중에서 하나의 값만을 반환하지만 모든 식을 다 평가합니다. 이러한 이유 때문에 예상치 않은 결과가 발생할 수 있으므로 주의해야 합니다. 예를 들면 불능인 식의 계산은 오류가 발생합니다.


While...Wend 문

주어진 조건이 True인 동안은 일련의 문을 계속 실행합니다.

구문

While condition
[statements]

Wend

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

구성 요소	설명
condition	필수적인 요소. True나 False로 평가되는 수식 또는 문자식. 만약 condition이 Null인 경우 condition은 False로 처리됩니다.
statements	선택적인 요소. 주어진 조건이 True인 동안 하나 이상의 문을 실행합니다.
참고

condition이 True이면 Wend 문을 만날 때까지 모든 statement를 계속 실행합니다. 그런 다음 프로그램의 컨트롤이 While 문으로 반환되고, condition은 다시 평가됩니다. condition이 여전히 True인 경우 그 처리 과정이 반복되고, condition이 True가 아닌 경우 Wend문 다음에 나오는 문이 실행됩니다.

While...Wend 루프는 어느 수준에서든 중첩하여 사용할 수 있습니다. 각 Wend 문은 가장 최근의 While 문에 대응합니다.

팁   Do...Loop 문은 프로그램의 루프를 보다 더 유연하고 구조적으로 처리할 수 있습니다.


With 문

사용자 정의 형식이나 단일 개체에 대한 일련의 문을 실행합니다.

구문

With object
[statements]

End With

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

구성 요소	설명
object	필수적인 요소. 개체의 이름이나 사용자 정의 형식입니다.
statements	선택적인 요소. object에서 실행되는 하나 이상의 문입니다.
참고

With 문을 사용하면 대상 개체의 이름을 다시 참조하지 않고도 지정된 개체에 대한 일련의 문을 실행할 수 있습니다. 예를 들면 하나의 개체에 있는 여러 개의 다양한 속성을 변경하려는 경우 그 개체는 한번만 참조하고 With 제어 구조체 안에 각각의 속성 지정문을 배치하여 사용할 수 있습니다. 아래는 동일 개체에 대하여 여러 속성값을 할당하기 위해 With 문을 사용한 예입니다.

With MyLabel

.Height = 2000

.Width = 2000

.Caption = "이것은 MyLabel입니다."

End With

메모   일단 With 블록을 시작하면 object를 변경할 수 없습니다. 따라서 하나의 With 문을 사용하여 여러 개의 다른 개체를 처리할 수 없습니다.

With 블록 내에 또 다른 With 문을 중첩하여 사용할 수 있습니다. 그러나 외부 With 블록문이 내부 With 블록에 마스크되어있기 때문에 외부 With 블록 내에 있는 어떤 개체에 대하여 참조할 때는 내부 With 블록에 있는 개체에 대한 정확한 참조 정보를 넘겨주어야 합니다.

메모   일반적으로 With 블록 밖으로 나가거나 들어오지 않는 것이 좋습니다. With 블록 내의 문이 실행되었지만, With 문과 End With 문이 실행되지 않는 경우 개체에 대한 참조를 포함하는 임시 변수는 프로시저를 종료할 때까지 메모리에 남게 됩니다.


Asc 함수 예제

아래 예제에서는 Asc 함수를 사용하여 문자열의 첫 번째 문자에 해당하는 문자 코드를 반환합니다.

Dim MyNumber

MyNumber = Asc("A")	' 65를 반환합니다.

MyNumber = Asc("a")	' 97을 반환합니다.

MyNumber = Asc("Apple")	' 65를 반환합니다.


CBool 함수 예제

아래 예제에서는 CBool 함수를 사용하여 식을 Boolean으로 변환합니다. 식이 0이 아닌 값으로 평가되면 CBool은 True를 반환하고 그렇지 않으면 False를 반환합니다.

Dim A, B, Check

A = 5: B = 5	' 변수를 초기화합니다.

Check = CBool(A = B)	' Check가 True를 포함합니다.

A = 0	' Define variable.

Check = CBool(A)	' Check가 False를 포함합니다.


CByte 함수 예제

아래 예제에서는 CByte 함수를 사용하여 식을 Byte로 변환합니다.

Dim MyDouble, MyByte

MyDouble = 125.5678	' MyDouble은 Double입니다.

MyByte = CByte(MyDouble)	' MyByte가 126을 포함합니다.


CDate 함수 예제

아래 예제에서는 CDate 함수를 사용하여 문자열을 Date로 변환합니다. 일반적으로 이 예제에 나타난 것처럼 하드 코드 문자열로 된 날짜와 시간은 권장되지 않으며 대신 #2/12/1969#, #4:45:23 PM# 같은 날짜와 시간 문자를 사용합니다.

Dim MyDate, MyShortDate, MyTime, MyShortTime

MyDate = "February 12, 1969"	' 날짜를 정의합니다.

MyShortDate = CDate(MyDate)	' 날짜 데이터 형식으로 변환합니다.

MyTime = "4:35:47 PM"	' 시간을 정의합니다.

MyShortTime = CDate(MyTime)	' 날짜 데이터 형식으로 변환합니다.


CCur 함수 예제

아래 예제에서는 CCur 함수를 사용하여 식을 Currency로 변환합니다.

Dim MyDouble, MyCurr

MyDouble = 543.214588	' MyDouble은 Double입니다.

MyCurr = CCur(MyDouble * 2)	' MyDouble * 2 (1086.429176)의 결과값을 'Currency(1086.4292)로 변환합니다.


CDbl 함수 예제

아래 예제에서는 CDbl 함수를 사용하여 식을 Double로 변환합니다.

Dim MyCurr, MyDouble

MyCurr = CCur(234.456784)	' MyCurr는 Currency입니다.

MyDouble = CDbl(MyCurr * 8.2 * 0.01)	' 결과값을 Double로 변환합니다.


CInt 함수 예제

아래 예제에서는 CInt 함수를 사용하여 값을 Integer로 변환합니다.

Dim MyDouble, MyInt

MyDouble = 2345.5678	' MyDouble은 Double입니다.

MyInt = CInt(MyDouble)	' MyInt는 2346을 포함합니다.


CLng 함수 예제

아래 예제에서는 CLng 함수를 사용하여 값을 Long으로 변환합니다.

Dim MyVal1, MyVal2, MyLong1, MyLong2

MyVal1 = 25427.45: MyVal2 = 25427.55	' MyVal1, MyVal2는 Double입니다.

MyLong1 = CLng(MyVal1)	' MyLong1이 25427을 포함합니다.

MyLong2 = CLng(MyVal2)	' MyLong2이 25428을 포함합니다.


CSng 함수 예제

아래 예제에서는 CSng 함수를 사용하여 값을 Single로 변환합니다.

Dim MyDouble1, MyDouble2, MySingle1, MySingle2

' MyDouble1, MyDouble2는 Double입니다.

MyDouble1 = 75.3421115: MyDouble2 = 75.3421555

MySingle1 = CSng(MyDouble1)	' MySingle1이 75.34211을 포함합니다.

MySingle2 = CSng(MyDouble2)	' MySingle2이 75.34216을 포함합니다.


CStr 함수 예제

아래 예제에서는 CStr 함수를 사용하여 숫자 값을 String으로 변환합니다.

Dim MyDouble, MyString

MyDouble = 437.324	' MyDouble은 Double입니다.

MyString = CStr(MyDouble)	' MyString이 "437.324"을 포함합니다.


CVar 함수 예제

아래 예제에서는 CVar 함수를 사용하여 식을 Variant로 변환합니다.

Dim MyInt, MyVar

MyInt = 4534	' MyInt는 정수입니다.

MyVar = CVar(MyInt & "000")	' MyVar가 문자열 4534000을 포함합니다.


CVErr 함수 예제

아래 예제에서는 CVErr 함수를 사용하여 VarType이 vbError(10)인 Variant을 반환합니다. 사용자 정의 함수 CalculateDouble은 전달된 인수가 숫자가 아닐 경우 오류를 반환합니다. 사용자는 CVErr을 사용하여 사용자 정의 오류를 사용자 정의 프로시저로부터 반환하거나 런타임 오류의 처리를 연기할 수 있습니다. 만약 값이 오류를 나타내는지 검사하려면 IsError 함수를 사용합니다.

' 오류 발생 인수를 가진 CalculateDouble을 호출합니다.

Sub Test()

Debug.Print CalculateDouble("345.45robert")

End Sub

' CalculateDouble Function 프로시저를 정의합니다.

Function CalculateDouble(Number)

If IsNumeric(Number) Then

CalculateDouble = Number * 2	' 결과값을 반환합니다.

Else

CalculateDouble = CVErr(2001)	' 사용자 정의 오류 번호를

End If	' 반환합니다.

End Function


Val 함수 예제

아래 예제에서는 Val 함수를 사용하여 문자열에 포함된 숫자를 반환합니다.

Dim MyValue

MyValue = Val("2457")	' 2457을 반환합니다.

MyValue = Val(" 2 45 7")	' 2457을 반환합니다.

MyValue = Val("24 and 57")	' 24를 반환합니다.


CDec 함수 예제

아래 예제에서는 CDec 함수를 사용하여 숫자 값을 Decimal로 변환합니다.

Dim MyDecimal, MyCurr

MyCurr = 10000000.0587	' MyCurr은 Currency입니다.

MyDecimal = CDec(MyCurr) 	' MyDecimal은  10000000을 포함합니다.


변환 함수

Asc 함수

CBool 함수

CByte 함수

CCur 함수

CDate 함수

CDec 함수

CDbl 함수

Chr 함수

CInt 함수

CLng 함수

CSng 함수

CStr 함수

CVar 함수

CVErr 함수

Format 함수

Hex 함수

Oct 함수

Str 함수

Val 함수


Asc 함수

문자열에서 첫 글자에 해당하는 문자 코드를 나타내는 Integer 값을 반환합니다.

구문

Asc(string)

필수 요소인 string 인수는 유효한 문자식이어야 합니다. string에 해당하는 문자가 없으면 런타임 오류가 발생합니다.

참고

DBCS 계열 이외의 시스템에서는 0 � 255 값을 반환하지만 DBCS 계열의 시스템에서는 -32768 � 32767 사이의 값을 반환합니다.

메모   AscB 함수는 문자열이 가지는 바이트 데이터를 사용합니다. AscB 함수는 문자 코드의 첫 글자의 문자 코드를 반환하는 대신에 첫 번째 바이트를 반환합니다. AscW 함수는 Unicode를 지원하지 않는 플랫폼을 제외한 플랫폼에서 Unicode 문자 코드를 반환하며 Asc 함수와 동일한 작동을 합니다.

메모    매킨토시용 Visual Basic은 Unicode 문자열을 지원하지 않습니다.  따라서 Windows 환경에서와 달리 매킨토시에서는 AscW(n) 함수가 128부터 65,535까지 n 값에 대해 모든 Unicode 문자를 반환하지 않습니다.  대신 매킨토시에서 AscW(n) 함수는 127보다 큰 Unicode  값 n에 대해 적절한 가정치를 계산하려 시도합니다. 그러므로 매킨토시 환경에서 AscW 함수를 사용하지 않아야 합니다.


CVErr 함수

사용자가 지정한 오류 번호를 포함하는 Error 하위 형식의 Variant를 반환합니다.

구문

CVErr(errornumber)

필수 요소인 errornumber 인수는 유효한 오류 번호입니다.

참고

CVErr 함수는 사용자가 작성한 프로시저 안에 사용자 정의 오류를 작성하기 위해 사용합니다. 예를 들면 사용자가 몇몇 인수를 받아들이고 정상적으로 문자열을 반환하는 함수를 작성한 경우 그 함수로 입력 인수를 평가하여 허용되는 범위 안의 값인지 확인할 수 있습니다. 입력된 인수가 적절한 범위 안에 없을 경우 그 함수는 원하는 값을 반환하지 않습니다. 이러한 경우에 CVErr 함수는 프로그램 내에서 처리해야 할 내용을 알려주는 오류 번호를 반환합니다.

Error 값을 암시적으로 변환할 수는 없습니다. 예를 들어, 변수에 CVErr의 반환값을 Variant 가 아닌 변수에 직접 할당할 수 없지만 CVErr 함수에 의해 반환되는 값을 명시적으로 변환(CInt나 CDbl 등을 사용)한 후 적절한 데이터 형식의 변수로 할당하여 사용할 수는 있습니다.


Val 함수

문자열 내에 포함된 숫자를 적절한 형식의 숫자값으로 반환합니다.

구문

Val(string)

필수 요소인 string 인수는 유효한 문자식이어야 합니다.

참고

숫자값으로 인식할 수 없는 문자열을 만나는 순간 Val 함수는 해당되는 첫 문자에서부터 읽기를 중단합니다. 달러나 쉼표 같은 문자나 부호는 숫자 값으로 인식되기 때문에 제외됩니다. 그러나 &O(8진수)와 &H(16진수) 같은 문자는 인식할 수 있으며 공백, 탭, 라인 피드 같은 문자는 인수에서 제외한 후 처리합니다.

아래의 예는 1615198값을 반환합니다.

Val("     1615 198th Street N.E.")

아래의 경우에 Val 함수는 16진수 값을 십진수 값인 -1로 반환합니다.

Val("&HFFFF")

메모   Val 함수는 마침표(.)만 유효한 소수 구분 기호로 인식합니다. 다양한 소수 구분 기호를 사용할 때, 예를 들면 다국적 응용 프로그램 개발과 같은 경우 문자열을 숫자로 변환하기 위하여 CDbl 함수를 사용합니다.


형식 변환 함수

아래의 각 함수는 식을 특정한 데이터 형식으로 변환합니다.

구문

CBool(expression)

CByte(expression)

CCur(expression)

CDate(expression)

CDbl(expression)

CDec(expression)

CInt(expression)

CLng(expression)

CSng(expression)

CVar(expression)

CStr(expression)

필수 요소인 expression 인수는 모든 문자식이나 수식을 사용할 수 있습니다.

반환값

함수 이름에 따른 반환값의 형식은 아래와 같습니다.

함수	반환 형식	expression 인수의 범위
CBool	Boolean	유효한 문자식이나 수식
CByte	Byte	0 - 255
CCur	Currency	-922,337,203,685,477.5808 - 922,337,203,685,477.5807
CDate	Date	유효한 모든 날짜식
CDbl	Double	음수값인 경우: -1.79769313486232E308 -  -4.94065645841247E-324. 양수값인 경우: 4.94065645841247E-324 - 1.79769313486232E308
CDec	Decimal	소수점 이하 단위가 없는 경우: +/-79,228,162,514,264,337,593,543,950,335 소수점 이하 28자릿수의 값으로서 그 범위는  +/-7.9228162514264337593543950335. 가장 작은 표현 가능한 숫자는 0.0000000000000000000000000001
CInt	Integer	-32,768 - 32,767. 나머지는 반올림
CLng	Long	-2,147,483,648 - 2,147,483,647. 나머지는 반올림
CSng	Single	음수값인 경우: -3.402823E38 - -1.401298E-45. 양수값인 경우: 1.401298E-45 - 3.402823E38
CStr	String	CStr에 대한 반환은 expression 인수에 따라 달라집니다.
Cvar	Variant	숫자인 경우: Double과 같은 범위. 숫자가 아닌 경우: String과 같은 범위
참고

함수에 전달된 expression이 변환되는 데이터 형식 범위 밖에 있으면 오류가 발생합니다.

일반적으로 계산의 결과값을 기본 자료형이 아닌 특정 자료형으로 표현하려는 경우 데이터 형식 변환 함수를 사용합니다. 예를 들면 단정도나 배정도 또는 정수 계산 대신 통화 계산을 하려면 CCur 함수를 사용합니다.

국제적으로 인식되는 데이터 형식 변환을 위해서는 Val 함수보다는 데이터 형식 변환을 사용해야 합니다. 예를 들면 CCur 함수를 사용하면 소수 구분 기호, 천 단위 구분 기호와 다양한 통화 옵션이 사용자 컴퓨터의 로케일 환경 설정 내용에 따라 적절하게 인식됩니다.

소수점 이하 부분이 정확히 0.5일 때, CInt과 CLng 함수는 항상 가장 가까운 짝수로 반올림한 후 처리합니다. 예를 들면 0.5는 0으로 반올림하고, 1.5는 2로 반올림합니다. 반면 Fix와 Int 함수는 CInt와 CLng 함수와 달리 소수점 이하 부분을 반올림하지 않고 버립니다. 또한 Fix와 Int 함수는 전달된 값과 같은 데이터 형식의 값만 반환합니다.

IsDate 함수는 date를 날짜나 시간으로 변환할 수 있는지 검사할 때 사용합니다. CDate 함수는 허용 가능한 날짜 범위 안의 숫자 뿐만 아니라 날짜 리터럴과 시간 리터럴을 인식합니다. 숫자를 날짜로 변환할 때는 숫자 전체가 날짜로 바뀌며 숫자 중 소수점 부분은 자정을 시작점으로 하여 시간 단위로 변환합니다.

CDate 함수는 사용자의 컴퓨터 로케일 환경 설정 내용에 맞게 날짜 형식을 인식합니다. 연, 월, 일이 인식 가능한 날짜 설정 중 하나가 아닌 형식으로 주어지는 경우 해당되는 날짜 형식의 올바른 순서를 결정할 수 없습니다. 자세하게 표시 날짜 형식은 주중 요일 문자열을 포함하는 경우 인식할 수 없습니다.

CVDate 함수는 이전 Visual Basic 버전과의 호환성을 위하여 사용할 수 있습니다. CVDate 함수의 구문은 CDate 함수와 동일하지만 CVDate 함수는 실제 Date 형식 대신 하위 형식이 Date인 Variant 값을 반환하는 점이 다릅니다. 현재는 고유한 Date 형식이 있으므로 CVDate 함수를 더 이상 사용하지 않습니다. 식의 값을 Date 형식으로 변환하고 이 변환된 값을 Variant 형식에 할당할 경우 결과값은 같습니다. 이러한 방법으로 다른 모든 고유한 데이터 형식을 동일한 형식의 Variant 하위 형식으로 변환할 수 있습니다.

메모   CDec 함수는 별도의 데이터 형식을 반환하지 않고 Decimal 하위 형식으로 변환된 Variant 형식의 데이터를 반환합니다.


CStr의 반환값

expression의 형식	CStr 반환값
Boolean	True나 False를 포함하는 문자열
Date	시스템의 간단한 표시 날짜 형식으로된 날짜를 포함하는 문자열
Null	런타임 오류
Empty	길이가 0인 문자열 ("")
Error	오류 번호에 이어 Error 단어를 포함하는 문자열
다른 숫자	숫자를 포함하는 문자열


Boolean 데이터 형식

Boolean 변수는 16비트(2바이트) 숫자로 저장되지만, 오직 True 또는 False 값만 가질 수 있습니다. Boolean 변수는 Print를 사용할 때는 True또는 False로, Write #를 사용할 때는 #TRUE# 또는 #FALSE#로 표시합니다. Boolean 변수는 두 상태 중 한 가지를 지정하기 위해  True와 False 키워드를 사용합니다.

다른 숫자 형식이 Boolean값으로 변환될 때 0은 False로, 그 밖의 다른 값들은 True로 변환됩니다. Boolean값이 다른 데이터 형식으로 변환될 때 False는 0으로 True는 -1로 변환됩니다.


Byte 데이터 형식

Byte 변수는 0부터 255까지 값의 범위를 가지는 부호없는 단일한 8비트(1바이트) 숫자로 저장됩니다.

Byte 데이터 형식은 이진 데이터를 저장할 때 사용합니다.


Currency 데이터 형식

Currency 변수는 정수 부분 15자리와 소수점 이하 4자리의 고정 소수점을 주기 위하여 10,000 단위로 구분한 정수 형식의 64 비트(8바이트) 숫자로 저장됩니다. 이 값은 922,337,203,685,477.5808부터 922,337,203,685,477.5807까지 표현이 가능합니다. Currency의 형식 선언 문자는  at 기호(@)입니다.

Currency 데이터 형식은 정확성이 필요한 고정 소수점 계산과 돈 계산 등에 유용합니다.


데이터 형식 요약 정보

아래의 표는 지원되는 데이터 형식과 그 저장 용량 및 범위를 나타내고 있습니다.

데이터 형식	저장 용량	범위
Byte	1바이트	0부터 255까지
Boolean	2바이트	True 또는 False
Integer	2바이트	-32,768부터 32,767까지
Long (긴 정수)	4바이트	-2,147,483,648부터 2,147,483,647까지
Single  (단정도 부동 소수점)	4바이트	-3.402823E38부터 -1.401298E-45까지(음수값). 1.401298E-45부터 3.402823E38까지(양수값)
Double  (배정도 부동 소수점)	8바이트	-1.79769313486232E308부터  -4.94065645841247E-324까지(음수값). 4.94065645841247E-324부터 1.79769313486232E308까지(양수값)
Currency  (정수 값 잘림)	8바이트	-922,337,203,685,477.5808부터 922,337,203,685,477.5807까지
Decimal	14바이트	+/-79,228,162,514,264,337,593,543,950,335(소수점 이하 없음);  +/-7.9228162514264337593543950335(숫자의 오른쪽으로부터 28번째); +/-0.0000000000000000000000000001(0이 아닌 최소 숫자)
Date	8바이트	100년 1월 1일부터 9999년 10월 31까지
Object	4바이트	모든 개체 참조
String  (가변 길이)	10바이트 +문자열 길이	0부터 약 20억까지
String (고정 길이)	문자열 길이	1부터 약 65,400까지
Variant (숫자)	16바이트	Double형 범위 내의 모든 숫자
Variant (문자)	22바이트 + 문자열 길이	변수 길이 String과 같은 범위
사용자 정의 형식 (Type 사용)	요소가 사용하는 숫자	해당 데이터 형식의 범위값과 각 요소의 범위값이 같음
메모   모든 데이터 형식의 배열은 20바이트 + 각 차원당 4바이트 + 데이터 자체가 차지하는 바이트 만큼의 메모리를 차지하며, 각 항목의 수에 항목의 크기를 곱하면 데이터가 차지하는 메모리의 용량을 구할 수 있습니다. 예를 들면 2바이트를 차지하는 4개의 Integer 데이터 요소로 된 1차원 배열은 8바이트를 차지합니다. 데이터의 8바이트와 오버헤드 24바이트를 더하면 배열에 필요한 메모리 양은 32바이트가 됩니다.

Variant는 배열 자체보다 12바이트를 더 차지하는 배열을 가지고 있습니다.

메모   StrConv 함수는 문자열 데이터를 다른 형식의 문자열 데이터로 변환할 때 사용된다..


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일 이전의 날짜를 나타냅니다.


Decimal 데이터 형식

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를 만들 수 있습니다.


Double 데이터 형식

Double(배정도 부동 소수점) 변수는 IEEE 64비트(8바이트) 부동 소수점 숫자를 저장하며, 그 값의 범위는 음수인 경우 1.79769313486232E308부터 -4.94065645841247E-324까지이며 양수인 경우 4.94065645841247E-324부터 1.79769313486232E308까지입니다. Double용 형식 선언 문자는 숫자 기호(#)를 사용합니다.


Integer 데이터 형식

Integer 변수는 -32767부터 32767까지의 범위를 갖는16비트(2바이트) 숫자를 저장합니다. Integer용 형식 선언 문자는 백분율 기호(%)를 사용합니다.

Integer 변수는 나열된 값을 표현하는 데에도 사용할 수 있습니다. 나열된 값은 정수의 유한 집합을 포함하며, 각 값은 사용된 구문에서 유용하게 사용됩니다. 예를 들면 검은색 = 0, 흰색 = 1처럼 나열된 값은 주어진 범위값 중 하나를 선택하여 사용할 때 편리합니다. 모든 나열된 값에 대해 Const 문을 이용해서 상수로 정의하는 것이 좋습니다.


Long 데이터 형식

Long(long integer) 변수는 -2,147,483,648부터 2,147,483,647까지의 값을 사용할 수 있으며, 32비트(4바이트) 숫자로 저장됩니다. Long용 형식 선언 문자는 앰퍼샌드 기호(&)를 사용합니다.


Object 데이터 형식

Object 변수는 개체를 참조하는 32비트(4바이트) 주소를 저장하며, Object로 선언된 변수는 Set 문을 사용하여 지정된 개체를 참조할 수 있습니다.

메모   Object 형으로 선언된 변수는 어떠한 개체라도 참조할 수 있지만, 그 변수에 의해 참조되는 개체 바인딩은 런타임 바인딩이므로 속도가 항상 느립니다. 빠른 실행 모드 바인딩을 하려면 특정 클래스 이름으로 선언된 변수에 개체 참조를 지정합니다.


Single 데이터 형식

Single(단정도 부동 소수점) 변수는 음수인 경우 -3.402823E38부터 -1.401298E-45까지, 양수인 경우 1.401298E-45부터 3.402823E38까지 범위 값으로 IEEE 32비트(4바이트) 부동 소수점 숫자를 저장합니다. Single용 형식 선언 문자는 느낌표 기호(!)를 사용합니다.


String 데이터 형식

문자열에는 가변 길이와 고정 길이 문자열의 두 종류가 있습니다.

•	가변 길이 문자열은 대략 20억(2^31)개 까지의 문자를 포함합니다.

•	고정 길이 문자열은 1부터 대략 64K(2^16)개 까지의 문자를 포함합니다.

메모   Public형 고정 길이 문자열은 클래스 모듈에서는 사용할 수 없습니다.

String 문자의 코드 범위는 0부터 255까지이며, 문자 집합에서 앞의 128개 문자(0부터 127까지)가 표준 U.S. 키보드 글자와 기호 문자를 나타냅니다. 앞의 128개 문자는 ASCII 문자 집합에서 정의한 것과 동일하며, 뒤의 128개 문자(128부터 255까지)는 국제 기호, 강세, 통화 표시 및 분수 등과 같은 특수 문자를 나타냅니다. String용 형식 선언 문자는 달러 기호($)를 사용합니다.


사용자 정의 데이터 형식

사용자 정의 데이터 형식이란 Type 문을 사용해서 만든 데이터 형식을 말합니다. 사용자 정의 데이터 형식에는 하나 이상의 데이터 형식, 배열, 미리 정의한 사용자 정의 데이터 형식이 포함되며, 예를 들면 다음과 같습니다.

Type MyType

MyName As String	' 문자열 변수는 이름을 저장합니다.

MyBirthDate As Date	' 날짜 변수는 생일을 저장합니다.

MySex As Integer	' 정수 변수는 성별을 저장합니다.

End Type	' 여자는 0이고 남자는 1입니다.


Variant 데이터 형식

Variant 데이터 형식은 Dim, Private, Public 또는 Static과 같은 문을 사용하여 다른 형식으로 명시적으로 선언되지 않은 모든 변수의 데이터 형식입니다. Variant 데이터 형식은 형식 선언 문자가 없습니다.

Variant는 고정 길이 String 데이터를 제외한 모든 종류의 데이터를 처리할 수 있는 특별한 데이터 형식입니다. Variant 형식은 이제 사용자 정의 형식을 지원합니다. 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 변수의 내용이 숫자라면 아래의 예와 같이 상황에 따라 숫자를 문자열로 표현할 수도 있고 또는 실제값이 될 수도 있습니다.

Dim MyVar As Variant

MyVar = 98052

위의 예제에서 MyVar 변수는 실제 값인 98052를 숫자로 나타내고 있습니다. 산술 연산자는 Variant 변수가 숫자값 또는 숫자로 변환될 수 있는 문자열 데이터를 포함하고 있다고 가정하고 작업을 수행합니다. 만약 MyVar 변수값을 숫자를 포함하고 있는 또 다른 Variant 변수 또는 숫자 형식 변수에 더하기 위해 "+" 연산을 한다면 그 결과값은 산술 합계가 됩니다.

Empty 값은 Variant 변수가 초기화되지 않았음(초기값이 할당되지 않았음)을 의미합니다. Empty 값을 가진 Variant 변수는 산술적으로 사용할 때는 0을 의미하고, 문자열 의미로 사용할 때는 크기가 0인 문자열("")을 의미합니다.

Empty와 Null을 혼동하지 마십시오. Null은 Variant 변수가 의도적으로 유효하지 않은 값을 가지고 있다는 것을 의미합니다.

Variant에서 Error는 프로시저에서 오류가 발생한 것을 나타내는 특별한 값입니다. 그러나 다른 오류와는 달리 보통 프로그램 단위의 오류 처리는 발생하지 않으며, 발생하는 오류값에 따라 다른 방법으로 오류를 처리할 수 있게 합니다. CVErr 함수를 사용하여 실제값을 오류값으로 변환하면 Error 값이 만들어집니다.


Date 함수 예제

아래 예제에서는 Date 함수를 사용하여 현재 시스템 날짜를 반환합니다.

Dim MyDate

MyDate = Date	' MyDate에 현재 시스템 날짜가 포함되어 있습니다.


Date 함수 예제
Date 문 예제

아래 예제에서는 Date 문을 사용하여 시스템 날짜를 지정합니다. 개발 환경에서 날짜 문자는 사용자의 국가별 설정에 따라 간단한 날짜 형식으로 나타납니다.

Dim MyDate

MyDate = #February 12, 1985#	' 날짜를 지정합니다.

Date = MyDate	' 시스템 날짜를 변경합니다.


DateAdd 함수 예제

아래 예제에서는 날짜를 선택하고 DateAdd 함수를 사용하여 미래의 지정된 달에 따른 날짜를 나타냅니다.

Dim FirstDate As Date	' 변수를 선언합니다.

Dim IntervalType As String

Dim Number As Integer

Dim Msg

IntervalType = "m"	' "m"은 간격을 달로 지정합니다.

FirstDate = InputBox("날짜를 입력하십시오.")

Number = InputBox("추가할 달 수를 입력하십시오.")

Msg = "새 날짜: " & DateAdd(IntervalType, Number, FirstDate)

MsgBox Msg


DateDiff 함수 예제

아래 예제에서는 DateDiff 함수를 사용하여 주어진 날짜와 오늘 사이의 날짜 수를 나타냅니다.

Dim TheDate As Date	' 변수를 선언합니다.

Dim Msg

TheDate = InputBox("날짜를 입력하십시오.")

Msg = "오늘부터의 날짜 수: " & DateDiff("d", Now, TheDate)

MsgBox Msg


DatePart 함수 예제

아래 예제에서는 날짜를 선택하고 DatePart 함수를 사용하여 그 날짜가 속한 4분기를 나타냅니다.

Dim TheDate As Date	' 변수를 선언합니다.

Dim Msg

TheDate = InputBox("날짜를 입력하십시오.")

Msg = "4분기: " & DatePart("q", TheDate)

MsgBox Msg


DateSerial 함수 예제

아래 예제에서는 DateSerial 함수를 사용하여 지정된 년, 월, 일에 대한 날짜를 반환합니다.

Dim MyDate

' MyDate에 1969년 2월 12일에 대한 날짜가 포함되어 있습니다.

MyDate = DateSerial(1969, 2, 12)	' 날짜를 반환합니다.


DateValue 함수 예제

아래 예제에서는 DateValue 함수를 사용하여 문자열을 날짜로 변환합니다. 또한 사용자가 날짜 문자를 사용하여 날짜를 직접 Variant이나 Date 변수로 할당할 수 있습니다.(예: MyDate = #2/12/69#).

Dim MyDate

MyDate = DateValue("1969년 2월 12일")	' 날짜를 반환합니다.


Day 함수 예제

아래 예제에서는 Day 함수를 사용하여 지정된 날짜에서 그 달의 날짜수를 가져옵니다. 개발 환경에서 날짜 문자는 사용자의 국가별 설정에 따라 간단한 표시 날짜 형식으로 나타납니다.

Dim MyDate, MyDay

MyDate = #February 12, 1969#	' 날짜를 지정합니다.

MyDay = Day(MyDate)	' MyDay는 12를 포함합니다.


Hour 함수 예제

아래 예제에서는 Hour 함수를 사용하여 지정된 시간에서 시를 가져옵니다. 개발 환경에서 시간 문자는 사용자의 국가별 설정에 따라 간단한 날짜 형식으로 나타납니다.

Dim MyTime, MyHour

MyTime = #4:35:17 PM#	' 시간을 지정합니다.

MyHour = Hour(MyTime)	' MyHour는 16을 포함합니다.


Minute 함수 예제

아래 예제에서는 Minute 함수를 사용하여 지정된 시간에서 시의 분을 가져옵니다. 개발 환경에서 시간 문자는 사용자의 국가별 설정에 따라 간단한 날짜 형식으로 나타납니다.

Dim MyTime, MyMinute

MyTime = #4:35:17 PM#	' 시간을 지정합니다.

MyMinute = Minute(MyTime)	' MyMinute는 35를 포함합니다.


Month 함수 예제

아래 예제에서는 Month 함수를 사용하여 지정된 날짜에서 월을 가져옵니다. 개발 환경에서 날짜 문자는 사용자의 국가별 설정에 따라 간단한 날짜 형식으로 나타납니다.

Dim MyDate, MyMonth

MyDate = #February 12, 1969#	' 날짜를 지정합니다.

MyMonth = Month(MyDate)	' MyMonth는 2를 포함합니다.


Now 함수 예제

아래 예제에서는 Now 함수를 사용하여 현재 시스템 날짜와 시간을 반환합니다.

Dim Today

Today = Now	' 현재 시스템 날짜와 시간을 지정합니다.


Second 함수 예제

아래 예제에서는 Second 함수를 사용하여 지정된 시간에서 분의 초를 가져옵니다. 개발 환경에서 시간 문자는 사용자의 국가별 설정에 따라 간단한 날짜 형식으로 나타납니다.

Dim MyTime, MySecond

MyTime = #4:35:17 PM#	' 시간을 지정합니다.

MySecond = Second(MyTime)	' MySecond는 17을 포함합니다.


Time 함수 예제

아래 예제에서는 Time 함수를 사용하여 현재 시스템 시간을 반환합니다.

Dim MyTime

MyTime = Time	' 현재 시스템 시간을 반환합니다.


Time 문 예제

아래 예제에서는 Time 문을 사용하여 컴퓨터 시스템 시간을 사용자 정의 시간으로 지정합니다.

Dim MyTime

MyTime = #4:35:17 PM#	' 시간을 지정합니다.

Time = MyTime	' 시스템 시간을 MyTime으로 지정합니다.


Timer 함수 예제

아래 예제에서는 Timer 함수를 사용하여 응용 프로그램을 잠시 멈추게 합니다. 또한 DoEvents를 사용하여 잠시 멈추는 동안 다른 프로세스를 제공합니다.

Dim PauseTime, Start, Finish, TotalTime

If (MsgBox("예를 눌러서 5초 동안 중지합니다.", 4)) = vbYes Then

PauseTime = 5	' 기간을 지정합니다.

Start = Timer	' 시작 시간을 지정합니다.

Do While Timer < Start + PauseTime

DoEvents	' 다른 프로시저로 넘깁니다.

Loop

Finish = Timer	' 종료 시간을 지정합니다.

TotalTime = Finish - Start	' 전체 시간을 계산합니다.

MsgBox TotalTime & " 초동안 중지되었습니다."

Else

End

End If


TimeSerial 함수 예제

아래 예제에서는 TimeSerial 함수를 사용하여 지정된 시, 분, 초에 대한 시간을 반환합니다.

Dim MyTime

MyTime = TimeSerial(16, 35, 17)	' MyTime이 오후 4:35:17의 표현을 포함하고 있습니다.


TimeValue 함수 예제

아래 예제에서는 TimeValue 함수를 사용하여 문자열을 시간으로 변환합니다. 사용자는 날짜 문자를 사용하여 시간을 직접 Variant나 Date 변수로 할당할 수 있습니다.(예: MyTime = #4:35:17 PM#).

Dim MyTime

MyTime = TimeValue("4:35:17 PM")	' 시간을 반환합니다.


Weekday 함수 예제

아래 예제에서는 Weekday 함수를 사용하여 지정된 날짜에서 주를 기준으로 한 날짜를 가져옵니다.

Dim MyDate, MyWeekDay

MyDate = #February 12, 1969#	' 날짜를 지정합니다.

MyWeekDay = Weekday(MyDate)	' MyDate가 수요일을 나타내기 때문에 MyWeekDay가 4를 포함합니다.


Year 함수 예제

아래 예제에서는 Year 함수를 사용하여 지정된 날짜에서 연도를 가져옵니다. 개발 환경에서 날짜 문자는 사용자의 국가별 설정에 따라 간단한 날짜 형식으로 나타납니다.

Dim MyDate, MyYear

MyDate = #February 12, 1969#	' 날짜를 지정합니다.

MyYear = Year(MyDate)	' MyYear는 1969를 포함합니다.


Date 함수

현재 시스템 날짜를 포함한 Variant(Date) 값을 반환합니다.

구문

Date

참고

시스템 날짜를 설정할 때 Date 문을 사용합니다.

Date 함수(Calendar 속성 설정이 Gregorian(그레고리오력)인 경우는 Date$ 함수도 포함) 동작은 Calendar 속성 설정에 영향을 받지 않습니다. Calendar 속성 설정이 Hijri(회교력)일 때 Date$는 mm-dd-yyyy 형식의 10문자로 된 문자열을 반환하며 이때 mm (01-12), dd (01-30) 및 yyyy (1400-1523)는 각각 Hijri(회교력)의 월, 날짜, 및 연도입니다. 동일한 Gregorian(그레고리오력) 범위는 1980년 1월 1일부터 2099년 12월 31일까지입니다.


Date 문

현재 시스템 날짜를 설정합니다.

구문

Date = date

Microsoft Windows 95에서 실행하는 시스템의 경우 필수 요소인 date 사양의 범위는 1980년 1월 1일부터 2099년 12월 31일까지입니다. 그리고 Microsoft Windows NT에서 실행하는 시스템의 경우에 date는 1980년 1월 1일부터 2079년 12월 31일까지의 날짜여야 합니다. 매킨토시에서 date는 1904년 1월 1일부터 2040년 2월 5일까지의 날짜여야 합니다.


DateAdd 함수

특정 시간 간격을 포함한 Variant(Date) 값을 반환합니다.

구문

DateAdd(interval, number, date)

DateAdd 함수 구문은 다음과 같은 명명된 인수로 되어 있습니다.

구성 요소	설명
interval	필수적인 요소. 문자식을 사용하여 시간 간격을 표시합니다.
number	필수적인 요소 수식을 사용하여 날짜에 시간 간격을 가감합니다. 양수(이후 시간을 계산하는 경우)와 음수(이전 시간을 계산하는 경우) 모두 사용 가능합니다.
date	필수적인 요소. Variant(Date) 형의 날짜에는 시간 간격이 가감됩니다.
설정

interval 인수의 설정은 다음과 같습니다.

설정	설명
Yyyy	연도
q	분기
m	월
y	일(일년 기준)
d	일
w	요일
ww	주
h	시간
n	분
s	초
참고

날짜에 특정 시간을 더하거나 뺄 때 DateAdd 함수를 사용합니다. 예를 들어 현재 시간부터 45분 이후 시간이나 현재 일로부터 30일 이후의 날짜를 계산할 때 DateAdd 함수를 사용합니다.

date에 날짜를 더할 때 연("y"), 일("d")이나 요일("w")을 사용합니다.

DateAdd 함수는 틀린 날짜 값은 반환하지 않습니다. 다음은 95년 1월 31일에 1개월(30일)을 더한 예제입니다.

DateAdd("m", 1, "95년 1월 31일")

위의 경우 DateAdd 함수는 95년 2월 31일이 아닌 95년 2월 28일을 반환합니다. date가 96년 1월 31일인 경우는 윤년이기 때문에 96년 2월 29일을 반환합니다.

계산한 날짜가 100년을 넘어가면 오류가 발생합니다. 실제 date보다 많은 연도를 가감했기 때문입니다.

number가 Long 값이 아니면 가까운 정수값으로 반올림한 후 계산합니다.

메모   DateAdd 함수의 반환값 형식은 date 인수에 전달된 형식 대신 제어판 설정에 의해 결정됩니다.

메모    date의 경우 Calendar 속성 설정이 Gregorian(그레고리오력)이면 제공되는 데이터도 Gregorian(그레고리오력)이어야 합니다. Calendar 속성 설정이 Hijri(회교력)이면 제공되는 데이터도 Hijri(회교력)이어야 합니다. 월 값이 이름인 경우 월 이름은 현재 Calendar 속성 설정과 일관성이 있어야 합니다. 월 이름과 현재 Calendar 속성 설정 간의 충돌 가능성을 최소화하려면 숫자로 된 월 값(Short Date 형식)을 입력하십시오.


DateDiff 함수

지정된 두 날짜 간의 시간 간격을 의미하는 Variant(Long) 값을 반환합니다.

구문

DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])

DateDiff 함수 구문은 다음과 같은 명명된 인수로 되어 있습니다.

구성 요소	설명
interval	필수적인 요소. 문자식을 사용하여 date1와 date2 간의 시간 간격을 계산합니다.
date1, date2	필수적인 요소. Variant(Date) 값. 계산에 사용할 두 날짜 값입니다.
firstdayofweek	선택적인 요소. 주의 첫째 요일을 지정하는 상수입니다. 생략하면 일요일로 지정됩니다.
firstweekofyear	선택적인 요소. 년의 첫째 주를 지정하는 상수입니다. 생략하면 1월 1일이 포함된 주로 지정됩니다.
설정

interval 인수 설정은 다음과 같습니다.

설정	설명
yyyy	연도
q	분기
m	월
y	일(일년 기준)
d	일
w	요일
ww	주
h	시간
n	분
s	초
firstdayofweek 인수 설정은 다음과 같습니다.

상수	값	설명
vbUseSystem	0	NLS API 설정을 사용합니다.
vbSunday	1	일요일(기본값)
vbMonday	2	월요일
vbTuesday	3	화요일
vbWednesday	4	수요일
vbThursday	5	목요일
vbFriday	6	금요일
vbSaturday	7	토요일
상수	값	설명
vbUseSystem	0	NLS API 설정을 사용합니다.
vbFirstJan1	1	1월 1일이 포함된 주부터 시작합니다.(기본값).
vbFirstFourDays	2	새해의 적어도 처음 4일을 포함하는 주에서 시작합니다.
vbFirstFullWeek	3	새해의 완전한 처음 한 주일(7일)을 포함하는 주에서 시작합니다.
참고

DateDiff 함수는 날짜 간에 시간 간격을 계산할 때 사용합니다. 예를 들면 두 날짜 간의 날짜 계산이나 현재 날짜부터 연말 사이에 있는 주의 수를 계산할 때 DateDiff 함수를 사용합니다.

date1과 date2 간의 일자를 계산하는 경우 연("y")이나 일("d")을 사용합니다. interval이 요일("w")인 경우 DateDiff는 두 날짜 간의 주 수를 반환합니다. date1이 월요일이면 DateDiff는 date2까지의 월요일 수를 계산합니다. date1이 아닌 date2를 계산합니다. interval이 주("ww")일 경우 DateDiff 함수는 지정된 두 날짜 간의 주 수를 반환합니다. 이 경우 date1과 date2간의 일요일 수를 계산합니다. DateDiff 함수는 일요일로 나누어 떨어지는 경우 date2를 계산하고, date1인 경우는 계산하지 않습니다.

date1이 date2 이후 시간인 경우 DateDiff 함수는 음수값을 반환합니다.

firstdayofweek 인수는 시간 간격 부호 "w"와 "ww"를 사용하는 결과값에 영향을 줍니다.

date1 또는 date2가 날짜 리터럴인 경우 지정된 날짜 부분의 값은 변하지 않습니다. 그러나 date1과 date2가 큰따옴표(" ")로 묶인 경우 연도를 생략해도 프로그램에는 date1과 date2식을 처리할 때마다 항상 현재 연도가 삽입됩니다. 이런 방식을 사용하면 다른 년도에도 사용할 수 있는 프로그램을 작성할 수 있습니다.

12월 31일을 다음 해 1월 1일과 비교하면 DateDiff 함수는 일자로는 하루 차이가 나지만 연도 값("yyyy") 1을 반환합니다.

메모   date1 과 date2의 경우 Calendar 속성 설정이 Gregorian(그레고리오력)이면 제공되는 날짜도 Gregorian(그레고리오력)이어야 합니다. Calendar 속성 설정이 Hijri(회교력)이면 제공되는 날짜도 Hijri(회교력)이어야 합니다.


DatePart 함수

주어진 날짜의 지정된 부분을 포함하는 Variant(Integer) 값을 반환합니다.

구문

DatePart(interval, date[,firstdayofweek[, firstweekofyear]])

DatePart 함수 구문은 다음과 같은 명명된 인수로 되어 있습니다.

구성 요소	설명
interval	필수적인 요소. 반환할 시간 간격의 문자식입니다.
date	필수적인 요소. 계산할 Variant(Date) 값입니다.
firstdayofweek	선택적인 요소. 요일을 지정하는 상수입니다. 지정하지 않으면 일요일로 간주합니다.
firstweekofyear	선택적인 요소. 년을 기준으로 한 첫째 주를 지정하는 상수입니다. 지정하지 않으면 1월 1일을 포함하는 주를 첫째 주로 간주합니다.
설정

interval 인수 설정은 다음과 같습니다.

설정	설명
yyyy	년
q	분기
m	월
y	일(일년 기준)
d	일
w	요일
ww	주
h	시
n	분
s	초
firstdayofweek 인수 설정은 다음과 같습니다.

상수	값	설명
vbUseSystem	0	NLS API 설정을 사용합니다.
vbSunday	1	일요일(기본값)
vbMonday	2	월요일
vbTuesday	3	화요일
vbWednesday	4	수요일
vbThursday	5	목요일
vbFriday	6	금요일
vbSaturday	7	토요일
firstweekofyear 인수 설정은 다음과 같습니다.

상수	값	설명
vbUseSystem	0	NLS API 설정을 사용합니다.
vbFirstJan1	1	1월 1일을 포함하는 주에서 시작합니다(기본값).
vbFirstFourDays	2	새해의 적어도 처음 4일을 포함하는 주에서 시작합니다.
vbFirstFullWeek	3	새해의 완전한 처음 한 주일(7일)을 포함하는 주에서 시작합니다.
참고

특정한 시간 간격을 계산하거나 결과값을 반환할 때 DatePart 함수를 사용합니다. 예를 들어 DatePart 함수를 사용하여 요일이나 현재 시각을 계산할 수 있습니다.

firstdayofweek 인수는 시간 간격 부호 "w"와 "ww"를 사용하는 결과값에 영향을 줍니다.

date가 날짜 리터럴인 경우 지정된 날짜 부분의 값은 변하지 않습니다. 그러나 큰따옴표(" ")로 date를 묶고 연도를 생략할 경우에는 date 식을 계산할 때마다 사용자의 코드에 현재 연도가 삽입됩니다. 이런 방식을 사용하면 다른 년도에도 사용할 수 있는 프로그램을 작성할 수 있습니다.

메모    date 의 경우 Calendar 속성 설정이 Gregorian(그레고리오력)이면 제공되는 날짜가 Gregorian(그레고리오력)이어야 합니다. Calendar 속성 설정이 Hijri(회교력)이면 제공되는 날짜가 Hijri(회교력)이어야 합니다.

반환되는 날짜 부분은 현재 아라비아력의 시간 단위입니다. 예를 들어 현재 Calendar 속성 설정이 Hijri(회교력)이고 반환될 날짜 부분이 연도이면 Hijri(회교력) 연도 값이 반환됩니다.


DateSerial 함수

지정된 년, 월, 일의 Variant(Date) 값을 반환합니다.

구문

DateSerial(year, month, day)

DateSerial 함수 구문은 다음과 같은 명명된 인수로 되어 있습니다.

구성 요소	설명
Year	필수적인 요소. Integer. 100에서 9999 까지의 수 또는 수식
Month	필수적인 요소. Integer. 모든 수식
Day	필수적인 요소. Integer. 모든 수식
참고

예를 들어 1991년 12월 31일처럼 어떤 날짜를 지정하려면 각 DateSerial 인수의 숫자는 해당 인수의 허용 범위 안에 있어야 합니다. 즉, 일은 1 � 31이며, 월은 1 - 12입니다. 그러나 특정 날짜의 앞 뒤에 년, 월, 일 등을 나타내는 수식을 사용하여 각 인수의 상대적인 날짜를 지정할 수 있습니다.

아래는 특정 일자를 지정하지 않고 수식을 사용한 예제입니다. DateSerial 함수는 1990의 10년 전(1990-10) 8월의 2개월 전(8-2) 첫째 날에서 하루를 뺀(1-1), 즉 1980년 5월 31일을 반환합니다.

DateSerial(1990 - 10, 8 - 2, 1 - 1)

Windows 98/Windows NT 5에서 year 인수의 두 자릿수 연도는 사용자가 정의한 시스템 설정을 기준으로 해석됩니다. 0부터 29까지의 기본 설정값은 2000부터 2029년까지로 해석됩니다. 30부터 99까지의 기본 설정값은 1930부터 1999년까지로 해석됩니다. 다른 모든 year 인수는 1800년처럼4 자릿수의 완전한 연도를 사용합니다.

이전 Windows버전에서는 위에 설명한 기본값을 기준으로 두 자릿수 연도를 해석합니다. 이 함수가 적절한 값을 반환하게 하려면 4 자릿수 연도를 사용하십시오.

인수가 허용되는 범위를 넘으면 적절한 상위 단위로 변환하여 계산합니다. 예를 들어 35일을 지정하면 적용 연도에 따라 1개월 며칠로 계산합니다. 그러나 한 인수가 -32,768 - 32,767 범위를 넘는 인수이거나 세 인수를 사용하여 지정된 날짜가 허용 범위를 넘을 경우 오류가 발생합니다.

메모    year, month, 및 day 의 경우 Calendar 속성 설정이 Gregorian(그레고리오력)이면 제공되는 값을 Gregorian(그레고리오력)으로 가정합니다. Calendar 속성 설정이 Hijri(회교력)이면 제공되는 값을 Hijri(회교력)으로 가정합니다.

반환되는 날짜 부분은 현재 Visual Basic에 설정된 달력의 시간 단위입니다. 예를 들어 현재 달력 설정이 Hijri(회교력)이고 반환될 날짜 부분이 연도이면 Hijri(회교력) 연도가 반환됩니다. Year 인수가 0-99 사이의 값이면 1400부터 1499년까지로 해석됩니다. 다른 모든 year 인수는 1520년처럼4 자릿수의 완전한 연도를 사용합니다.


DateValue 함수

Variant(Date) 값을 반환합니다.

구문

DateValue(date)

필수 요소인 date 인수는 100년 1월 1일에서 9999년 12월 31일까지를 나타내는 문자식입니다. date는 또한 이 범위에 있는 날짜, 시간 또는 날짜/시간을 나타내는 식입니다.

참고

date 인수가 유효한 날짜 구분 기호로 구분되는 숫자만 있는 문자열인 경우 DateValue 함수에서는 시스템에 지정한 간단한 날짜 형식에 따른 년, 월, 일에 대한 순서로 인식하게 됩니다. 또한 DateValue 함수는 약식 또는 정식 월 이름을 포함하고 있는 명확한 날짜 형식을 인식합니다. 예를 들어 DateValue 함수는 12/30/1991과 12/30/91 뿐만 아니라 12월 30일과 1991년 12월 30일을 모두 동일한 것으로 인식합니다.

date에서 연도 부분을 생략할 경우 DateValue 함수는 컴퓨터 시스템에 설정되어 있는 현재 연도를 사용합니다.

시간 정보를 포함하는 date 인수의 경우 DateVale 함수는 시간 정보를 반환하지 않습니다. 그러나 date 인수가 "89:98"처럼 유효하지 않은 시간 정보를 포함하고 있으면 오류가 발생합니다.

메모    date의 경우 Calendar 속성 설정이 Gregorian(그레고리오력)이면 제공되는 날짜가 Gregorian(그레고리오력)이어야 합니다. Calendar 속성 설정이 Hijri(회교력)이면 제공되는 날짜가 Hijri(회교력)이어야 합니다. 제공된 날짜가 Hijri(회교력)인 경우 인수 date는 1/1/100(그레고리오력 718년 8월 2일)부터 4/3/9666(그레고리오력 9999년 12월 31일)까지 날짜를 나타내는 String입니다.


Day 함수

해당 월의 날짜를 나타내는 1에서 31까지의 정수를 지정하는 Variant(Integer) 값을 반환합니다.

구문

Day(date)

필수 요소인 date 인수는 날짜를 표현하는 Variant, 수식, 문자식 및 기타 형식 등을 사용합니다. date에 Null이 있으면 Null을 반환합니다.

메모   Calendar 속성 설정이 Gregorian(그레고리오력)인 경우 반환되는 정수는 date 인수에 대해 해당 월의 Gregorian(그레고리오력) 날짜를 나타냅니다. Calendar 속성 설정이 Hijri(회교력)인 경우 반환되는 정수는 date 인수에 대해 해당 월의 Hijri(회교력) 날짜를 나타냅니다.


Hour 함수

시간을 나타내는 0에서 23 사이의 정수를 지정하는 Variant(Integer) 값을 반환합니다.

구문

Hour(time)

필수 요소인 time 인수는 시간을 표현하는 Variant, 수식, 문자식 또는 조합형을 사용합니다. time이 Null을 포함하면 Null을 반환합니다.


Minute 함수

시간의 분을 나타내는 0에서 59까지의 정수를 지정하는 Variant(Integer) 값을 반환합니다.

구문

Minute(time)

필수 요소인 time 인수는 시간을 표현하는 Variant, 수식, 문자식 또는 조합형을 사용합니다. time이 Null을 포함하면 Null을 반환합니다.


Month 함수

연도를 기준으로 해서 월을 나타내는 1부터 12까지의 정수를 지정하는 Variant(Integer) 값을 반환합니다.

구문

Month(date)

필수 요소인 date 인수는 날짜를 표현하는 Variant, 수식, 문자식 또는 조합형을 사용합니다. date가 Null을 포함하면 Null을 반환합니다.

메모   Calendar 속성 설정이 Gregorian(그레고리오력)인 경우 반환되는 정수는 date 인수의 Gregorian(그레고리오력) 요일을 나타냅니다. Calendar 속성 설정이 Hijri(회교력)인 경우 반환되는 정수는 date 인수의 Hijri(회교력) 요일을 나타냅니다. Hijri(회교력) 날짜에서 인수는 1/1/100(그레고리오력 718년 8월 2일)부터 4/3/9666(그레고리오력 9999년 12월 31일)까지 날짜나 시간을 나타내는 모든 수식이 될 수 있습니다.


Now 함수

컴퓨터의 시스템 날짜와 시간에 따른 현재 날짜와 시간을 지정하는 Variant(Date) 값을 반환합니다.

구문

Now


Second 함수

분의 초를 나타내는 0에서 59 사이의 정수를 지정하는 Variant(Integer) 값을 반환합니다.

구문

Second(time)

필수 요소인 time 인수는 시간을 표현하는 Variant, 수식, 문자식 또는 조합형을 사용합니다. time이 Null을 포함하면 Null을 반환합니다.


Time 함수

현재 시스템 시간을 나타내는 Variant(Date) 값을 반환합니다.

구문

Time

참고

시스템 시간을 설정할 때 Time 문을 사용합니다.


Time 문

시스템 시간을 설정합니다.

구문

Time = time

필수 요소인 time 인수는 시간을 표현하는 수식, 문자식 또는 조합형을 사용합니다.

참고

time이 문자열이면 Time 문은 시스템에서 지정된 시간 구분 기호를 이용하여 문자열을 시간으로 변환합니다. 유효한 시간으로 변환할 수 없는 경우에는 오류가 발생합니다.


Timer 함수

자정 이후 경과한 초 수를 나타내는 Single 값을 반환합니다.

구문

Timer

참고

Microsoft Windows에서 Timer 함수는 초를 분수식으로 반환합니다.매킨토시에서 타이머 기록은 일 초입니다.


TimeSerial 함수

특정 시, 분, 초에 대한 시간을 나타내는 Variant (Date) 값을 반환합니다.

구문

TimeSerial(hour, minute, second)

TimeSerial 함수 구문은 다음과 같은 명명된 인수로 되어 있습니다.

구성 요소	설명
hour	필수적인 요소. Variant(Integer). 0(오전 12:00)에서 23(오후 11:00) 사이의 수(0과 23 포함) 또는 수식
minute	필수적인 요소. Variant(Integer). 모든 수식
second	필수적인 요소. Variant(Integer). 모든 수식
참고

11시 59분 59초처럼 어떤 시간을 지정하려면 각 TimeSerial 인수의 숫자는 해당 인수의 허용 범위 안에 있어야 합니다. 즉, 시간은 0 � 23이며 분과 초는 0 � 59입니다. 특정 시간 전후의 시, 분, 초를 나타내는 수식을 사용하여 각 인수의 상대적인 시간을 지정할 수도 있습니다. 다음 예제는 절대 시간 대신에 식을 사용한 것입니다. TimeSerial 함수가 정오로부터 6시간 전(12 - 6)의 15분 전(-15) 시각, 즉 오전 5시 45분 00초를 반환합니다.

TimeSerial(12 - 6, -15, 0)

인수가 해당되는 허용 범위를 넘으면 적절한 상위 단위로 변환하여 계산합니다. 예를 들어 75분을 지정하면 이 값은 1시간 15분으로 계산됩니다. 어떤 하나의 인수 값이 -32,768에서 32,767의 범위를 초과하는 경우는 오류가 발생합니다. 세 인수에 따라 지정된 날짜가 허용된 범위를 초과하는 경우에도 오류가 발생합니다.


TimeValue 함수

시간을 포함하는 Variant(Date) 값을 반환합니다.

구문

TimeValue(time)

필수 요소인 time 인수는 0:00:00(오전 12:00:00)부터 23:59:59(오후 11:59:59)까지의 시간을 표현하는 문자식입니다. 그러나 이 범위에 있는 시간을 나타내는 식도 time 인수가 될 수 있습니다. time에 Null이 포함되어 있으면 Null을 반환합니다.

참고

12 시간 표시 형식이나 24시간 표시 형식에 따라 유효한 시간을 입력할 수 있습니다. 예를 들어 "오후 2:24"과 "14:24"는 모두 유효한 time 인수입니다.

time 인수에 날짜 정보가 있는 경우 TimeValue 함수는 그 정보를 반환하지 않습니다. 그러나 time에 잘못된 날짜 정보가 있으면 오류가 발생합니다.


Weekday 함수

요일을 나타내는 정수를 포함한 Variant(Integer) 값을 반환합니다.

구문

Weekday(date, [firstdayofweek])

Weekday 함수 구문은 다음과 같은 명명된 인수 로 되어 있습니다.

구성 요소	설명
date	필수적인 요소. 날짜를 나타내는 Variant, 수식, 문자식 또는 그 조합형입니다. 만약 date에 Null이 포함되어 있으면 Null을 반환합니다.
firstdayofweek	선택적인 요소. 첫 번째 요일을 지정하는 상수입니다. 지정하지 않으면 vbSunday로 간주됩니다.
설정

firstdayofweek 인수 설정은 다음과 같습니다.

상수	값	설명
vbUseSystem	0	NLS API 설정을 사용합니다.
vbSunday	1	일요일(기본값)
vbMonday	2	월요일
vbTuesday	3	화요일
vbWednesday	4	수요일
vbThursday	5	목요일
vbFriday	6	금요일
vbSaturday	7	토요일
반환값

Weekday 함수는 아래와 같은 값을 반환합니다.

상수	값	설명
vbSunday	1	일요일
vbMonday	2	월요일
vbTuesday	3	화요일
vbWednesday	4	수요일
vbThursday	5	목요일
vbFriday	6	금요일
vbSaturday	7	토요일
참고

Calendar 속성 설정이 Gregorian(그레고리오력)인 경우 반환되는 정수는 date 인수의 Gregorian(그레고리오력) 요일을 나타냅니다. Calendar 속성 설정이 Hijri(회교력)인 경우 반환되는 정수는 date 인수의 Hijri(회교력) 요일을 나타냅니다. Hijri(회교력) 날짜에서 인수는 1/1/100(그레고리오력 718년 8월 2일)부터 4/3/9666(그레고리오력 9999년 12월 31일)까지 날짜나 시간을 나타내는 모든 수식이 될 수 있습니다.


Year 함수

연도를 나타내는 정수를 포함한 Variant(Integer) 값을 반환합니다.

구문

Year(date)

필수 요소인 date 인수는 날짜를 나타내는 Variant, 수식, 문자식 또는 조합형입니다. 만약 date에 Null이 포함되어 있으면 Null을 반환합니다.

메모   Calendar 속성 설정이 Gregorian(그레고리오력)인 경우 반환되는 정수는 date 인수의 Gregorian(그레고리오력) 연도를 나타냅니다. Calendar 속성 설정이 Hijri(회교력)인 경우 반환되는 정수는 date 인수의 Hijri(회교력) 연도를 나타냅니다. Hijri(회교력) 날짜에서 인수는 1/1/100(그레고리오력 718년 8월 2일)부터 4/3/9666(그레고리오력 9999년 12월 31일)까지 날짜나 시간을 나타내는 모든 수식이 될 수 있습니다.


Array 함수

배열을 포함한 Variant를 반환합니다.

구문

Array(arglist)

필수적인 요소인 arglist 인수는 쉼표로 구분된 값으로 구성되며, 이 값에 Variant에 포함된 배열 요소를 지정합니다. 인수를 지정하지 않은 경우 길이가 0인 배열이 만들어집니다.

참고

필요한 요소를 표시하는 인덱스 번호를 포함하고 있는 괄호 다음의 변수 이름이며 구성되는 변수 요소들을 참조할 때 사용하는 표기법입니다. 예를 들면 첫 번째 문은 Variant형식의 A라는 배열을 만듭니다. 두 번째 문은 변수 A에 배열을 지정합니다. 마지막 문은 다른 변수의 두번째 배열 요소에 포함되어 있는 값을 또 다른 변수에 지정합니다.

Dim A As Variant

A = Array(10,20,30)

B = A(2)

Array 함수의 이름이 형식 라이브러리의 이름(예: VBA.Array)으로 정해지지 않는 한, Array 함수를 사용하여 만들어진 배열의 하한값은 Option Base 문으로 지정된 하한값에 의해 결정됩니다. 형식 라이브러리로 이름을 지정되면 Array 함수는 Option Base 문의 영향을 받지 않습니다.

메모   배열로 선언하지 않은 Variant도 배열을 포함할 수 있습니다. Variant 변수는 고정 길이 문자열과 사용자 정의 형식을 제외한 모든 형식의 배열을 포함할 수 있습니다. 배열을 포함한 Variant 형식은 그 구성 요소가 Variant 형식인 배열과 개념적으로 다르지만, 해당하는 배열의 요소들은 동일한 방식으로 액세스됩니다.


CallByName 함수

개체의 메서드를 실행하거나 개체의 속성을 설정하거나 반환합니다.

구문

CallByName(object, procname, calltype,[args()])

CallByName 함수 구문은 다음과 같은 명명된 인수로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. Variant(Object) 함수가 실행되는 개체의 이름
procname	필수적인 요소. Variant(String) 속성의 이름이나 개체의 메서드가 포함된 문자식
calltype	필수적인 요소. Constant 호출할 프로시저의 형식을 나타내는 vbCallType 형식의 상수
args()	선택적인 요소. Variant(Array)
참고

CallByName 함수는 속성을 가져오거나 설정하는 데 사용되거나, 또는 문자 이름을 사용하는 실행 모드에서 메서드를 호출할 때도 쓰입니다.

다음 예제에서 첫 번째 행은 CallByName을 사용하여 확인란의 MousePointer 속성을 설정하고, 두 번째 행은 MousePointer의 속성값을 가져오며, 세 번째 행은 Move 메서드를 호출하여 확인란을 이동시킵니다.

CallByName Text1, "MousePointer", vbLet, vbCrosshair

Result = CallByName (Text1, "MousePointer", vbGet)

CallByName Text1, "Move", vbMethod, 100, 100


Const 문

상수는 문자값을 대신하기 위해 선언됩니다.

구문

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

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

구성 요소	설명
Public	선택적인 요소. 상수를 선언하기 위해 모듈 수준에서 사용된 키워드는 모든 모듈 내의 모든 프로시저에서 사용할 수 있지만 프로시저 내에서는 사용할 수 없습니다.
Private	선택적인 요소. 상수를 선언하기 위해 모듈 수준에서 사용된 키워드는 선언이 만들어진 모듈 내에서만 사용할 수 있으며, 프로시저 내에서는 사용할 수 없습니다.
constname	필수적인 요소. 상수의 이름은 표준 변수 명명 규칙에 따릅니다.
type	선택적인 요소. 상수의 데이터 형식은 다음과 같습니다.  Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal(현재 지원 안됨), Date, String, Variant.  선언된 각각의 상수에 대하여 독립적인 As type 절을 사용합니다.
expression	필수적인 요소. Is를 제외한 모든 숫자나 논리 연산자를 포함하는 문자열, 다른 상수 또는 모든 조합입니다.
참고

상수는 기본값으로 private입니다. 프로시저 내에서 상수는 항상 private이고 인식 범위는 변경할 수 없습니다. 표준 모듈에서 모듈 수준 변수의 기본 인식 범위는 Public 키워드를 사용하여 변경할 수 있습니다. 그러나 클래스 모듈의 경우 상수는 항상 private로만 사용 가능하며 Public 키워드를 사용해도 그 인식 범위를 변경할 수 없습니다.

같은 행에 있는 몇 개의 상수를 하나로 조합할 때 할당된 각 상수를 쉼표로 구분합니다. Public나 Private 키워드를 사용하여 여러 개의 상수들을 동시에 선언한 경우에는 그 Public나 Private 속성이  그 행의 모든 상수에 적용됩니다.

변수, 사용자 정의 형식 함수, 그리고 Chr와 같은 기본적인 Visual Basic 함수 등은 상수를 할당하는 식에서 사용할 수 없습니다.

메모   상수를 사용할 경우 프로그램의 분석 및 수정이 용이하며, 변수와 달리 상수는 프로그램의 실행 중에 변경되지 않습니다.

As type을 사용하여 상수 형식을 명시적으로 선언하지 않으면 상수는 expression에 가장 적당한 데이터 형식을 갖게 됩니다.

Sub, Function, Property 프로시저 등에서 선언된 상수는 프로시저 내에서 지역적으로 사용하며, 프로시저 범위 밖에서 선언된 상수는 모듈 전체에 걸쳐 사용하고, 식을 사용하는 경우에는 항상 상수를 사용할 수 있습니다.


CreateObject 함수

ActiveX 개체에 대한 참조를 작성하고 반환합니다.

구문

CreateObject(class,[servername])

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

구성 요소	설명
Class	필수적인 요소. Variant(String). 작성할 개체의 클래스와 응용 프로그램의 이름
Servername	선택적인 요소. Variant(String). 개체를 작성하는 네트워크 서버의 이름
class 인수는 appname.objecttype 구문을 사용하며, 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
Appname	필수적인 요소. Variant(String). 개체를 제공하는 응용 프로그램의 이름
Objecttype	필수적인 요소. Variant(String). 작성할 개체의 형식 또는 클래스
참고

자동화를 지원하는 모든 응용 프로그램들은 하나 이상의 개체 형식을 제공합니다. 예를 들어 워드 프로세스 응용 프로그램은 Application 개체, Document 개체, Document 개체, Toolbar 개체를 지원합니다.

ActiveX 개체를 만들려면, CreateObject가 반환하는 개체를 개체 변수에 지정합니다.

' 개체 참조를 위해 개체 변수를 선언합니다.

' Dim을 개체로 설정하면 후기 바인딩을 초래합니다.

Dim ExcelSheet As Object

Set ExcelSheet = CreateObject("Excel.Sheet")

이 경우 프로그램은 Microsoft Excel 스프레드 시트를 만드는 응용 프로그램을 시작하며, 개체가 만들어진 이후에는 프로그램 내에 사용자가 정의한 개체 변수를 참조합니다. 다음 예제에서는 개체 변수, ExcelSheet, 그리고 Application 개체와 Cells 컬렉션을 포함한 기타 Microsoft Excel 개체 등을 사용하여 새로운 개체의 속성과 메서드를 액세스합니다.

' 응용 프로그램을 통해 Excel을 볼 수 있게 합니다.

ExcelSheet.Application.Visible = True

' 시트의 첫 번째 셀에 텍스트를 놓습니다.

ExcelSheet.Cells(1, 1).Value = "이것은 1행 A열입니다."

' 시트를 C:\test.doc 디렉터리에 저장합니다.

ExcelSheet.SaveAs "C:\ TEST.DOC"

' 응용 프로그램의 Quit 메서드로 Excel을 종료합니다.

ExcelSheet.Application.Quit

' 개체 변수를 해제합니다.

Set ExcelSheet = Nothing

As Object 절로 개체 변수를 선언하면 모든 형식의 개체를 참조할 수 있는 변수가 만들어지지만, 이 변수를 통하여 개체에 액세스할 경우에는 후기 바인딩됩니다. 즉 프로그램 실행 중에 바인딩됩니다. 개체 변수를 프로그램의 컴파일 단계에서 바인딩이 일어나도록(즉, 초기 바인딩이 일어나도록) 개체 변수를 작성하려면, 특정 클래스 ID로 개체 변수를 선언합니다. 예를 들어 다음과 같이 Microsoft Excel 참조를 작성할 수 있습니다.

Dim xlApp As Excel.Application

Dim xlBook As Excel.Workbook

Dim xlSheet As Excel.WorkSheet

Set xlApp = CreateObject("Excel.Application")

Set xlBook = xlApp.Workbooks.Add

Set xlSheet = xlBook.Worksheets(1)

초기 바운드를 통한 변수 참조의 경우에 프로그램의 성능은 향상되지만 선언 내에 지정된 클래스로 참조만 포함시킬 수 있습니다.

CreateObject 함수에 의해 반환되는 개체를 다른 함수의 인수 형식으로 전달할 수도 있습니다. 예를 들어 다음의 경우는 Excel.Application 개체 참조를 작성하고 전달합니다.

Call MySub (CreateObject("Excel.Application"))

컴퓨터의 이름을 CreateObject 함수의  servername 인수에 전달하면 원격 네트워크로 연결된 컴퓨터에서 개체를 작성할 수 있습니다. 이 이름은 공유 이름 즉, "\\\\MyServer\\Public"의 Machine Name 부분과 같습니다. servername은 "MyServer"입니다.

다음 예제는 MyServer라는 원격 컴퓨터에서 작동 중인 Excel 인스턴스의 버전 번호를 반환합니다.

Dim xlApp As Object

Set xlApp = CreateObject("Excel.Application", "MyServer")

Debug.Print xlApp.Version

원격 서버가 존재하지 않거나 사용할 수 없을 때에는 런타임 오류가 발생합니다.

메모   개체의 현재 인스턴스가 없을 때 CreateObject 함수를 사용합니다. 개체의 인스턴스가 이미 실행 중인 경우에는 새로운 인스턴스가 시작되고 지정한 형식의 개체가 작성됩니다. 현재 인스턴스를 사용하거나 응용 프로그램을 시작하여 파일을 읽으려면 GetObject 함수를 사용합니다.

개체가 단일 인스턴스 개체로 등록된 경우에는 CreateObject 함수의 실행 횟수와 관계없이 오직 하나의 인스턴스만 만들어집니다.


Declare 문

모듈 수준에서 동적 연결 라이브러리(DLL)의 외부 프로시저 참조를 선언할 때 사용됩니다.

구문 1

[Public | Private] Declare Sub name Lib "libname" [Alias "aliasname"] [([arglist])]

구문 2

[Public | Private] Declare Function name Lib "libname" [Alias "aliasname"] [([arglist])] [As type]

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

구성 요소	설명
Public	선택적인 요소. 모든 모듈에 있는 다른 모든 프로시저에서 사용할 수 있는 프로시저를 선언할 때 사용합니다.
Private	선택적인 요소. 선언이 만들어진 모듈에서만 사용할 수 있는 프로시저를 선언할 때 사용합니다.
Sub	선택적인 요소(Sub나 Function이 반드시 나타나야 함). 프로시저가 반환하는 값이 없는 경우에 사용합니다.
Function	선택적인 요소(Sub나 Function이 반드시 나타나야 함). 프로시저가 식에서 사용할 수 있는 값을 반환하는 경우 사용합니다.
name	필수적인 요소. 유효한 프로시저 이름. DLL 도입부에서는 대/소문자를 구분한다는 것을 유의하기 바랍니다.
Lib	필수적인 요소. DLL이나 코드 리소스가 선언된 프로시저를 포함하고 있는 경우. Lib 절은 모든 선언문에 필수적인 요소입니다.
libname	필수적인 요소. 선언된 프로시저를 포함하는 DLL이나 코드 리소스의 이름입니다.
Alias	선택적인 요소. 호출된 프로시저가 DLL 내에서 다른 이름을 갖고 있는 경우. 외부 프로시저 이름이 키워드와 같은 경우 유용합니다. Alias는 DLL 프로시저가 공용 변수나 상수 또는 같은 범위에서 있는 다른 프로시저와 같은 이름을 가질 때 사용할 수 있습니다. 범위 내의 다른 프로시저와 이름이 중복되는 경우 유용하게 사용합니다. Alias는 DLL 명명 규칙에 따라 DLL 프로시저 이름이며 사용할 수 없는 경우 사용합니다.
aliasname	선택적인 요소. DLL이나 코드 리소스의 프로시저 이름. 첫 문자가 숫자 부호(#)가 아닌 경우 aliasname은 DLL 내 프로시저 도입부의 이름이 사용됩니다. (#)이 첫 문자로 사용되는 경우 (#) 이후의 모든 문자는 프로시저 도입부가 서수임을 표시합니다.
arglist	선택적인 요소. 호출하면 프로시저로 전달되는 인수를 나타내는 변수 목록입니다.
type	선택적인 요소. Function 프로시저가 반환하는 값의 데이터 형식은 다음과 같습니다. Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal(현재 지원 안됨), Date, String(가변 길이인 경우), Variant, 사용자 정의 형식 또는 개체 형식
arglist 인수는 다음과 같은 구문과 구성 요소로 되어 있습니다.

[Optional] [ByVal | ByRef] [ParamArray] varname[( )] [As type]

구성 요소	설명
Optional	선택적인 요소. 인수가 필수적인 요소가 아님을 표시합니다. 만약 사용된다면,  arglist에서 연속되는 인수도 선택적이어야 하며 Optional 키워드로 선언해야 합니다. Optional은 ParamArray가 사용되는 경우에는 어떤 인수에 대하여도 사용할 수 없습니다.
ByVal	선택적인 요소. 인수가 값에 의한 전달임을 표시합니다.
ByRef	인수가 참조에 의한 전달임을 표시합니다. Visual Basic에서 ByRef가 기본값입니다.
ParamArray	선택적인 요소. 마지막 인수가 Variant로 된 Optional 배열임을 표시하기 위하여 arglist에서 마지막 인수로 사용합니다. ParamArray 키워드를 사용하여 임의 개수의 인수를 제공합니다. ParamArray 키워드는 ByVal, ByRef, Optional과 함께 사용할 수 없습니다.
varname	필수적인 요소. 프로시저로 전달되는 인수를 나타내는 변수 이름은 표준 변수 명명 규칙에 따릅니다.
( )	배열 변수에 필수적인 요소. varname이 배열임을 나타냅니다.
type	선택적인 요소. 프로시저로 전달된 인수의 데이터 형식. Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal(현재 지원 안됨), Date, String(가변 길이), Object, Variant, 사용자 정의 형식, 개체 형식을 사용할 수 있습니다.
참고

Function 프로시저의 경우 프로시저의 데이터 형식에 따라 반환되는 데이터 형식이 결정되며, 함수의 반환 데이터 형식을 지정할 때는 arglist 다음에 As 절을 사용합니다. arglist 내의 As 절을 사용하여 프로시저에 전달할 모든 인수의 데이터 형식을 지정합니다. 표준 데이터 형식을 지정하는 것 외에 arglist의 As Any 문을 이용하면 형식을 확인하거나 프로시저에 모든 종류의 데이터 형식을 전달할 수 있습니다.

Sub 프로시저나 Function 프로시저가 인수를 사용하지 않을 때는 빈 괄호를 지정하며, Visual Basic에서는 전달되는 인수가 없다는 것을 확인을 해야 합니다. 다음 예제에서 First는 인수를 가지고 있지 않습니다. 따라서 First를 호출할 때 인수를 지정하면 오류가 발생합니다.

Declare Sub First Lib "MyLib" ()

인수 목록이 포함된 경우 인수의 수와 형식은 프로시저가 호출될 때마다 검사됩니다. 다음 예제에서는 First가 하나의 Long 인수를 취합니다.

Declare Sub First Lib "MyLib" (X As Long)

메모   Declare 문의 인수 목록에는 고정 길이 문자열을 사용할 수 없으며, 가변 길이 문자열만 프로시저로 전달될 수 있습니다. 프로시저 인수로 고정 길이 문자열을 지정한 경우 이 인수는 다음 프로시저로 전달되기 전에 가변 길이 문자열로 변환됩니다.

메모   vbNullString 상수는 0 값의 문자열을 갖는 외부 프로시저를 호출하는 경우에 사용하며, 이 것은 길이가 0인 문자열("")과는 다릅니다.


Deftype 문

프로시저로 전달할 변수, 인수 등의 기본값 데이터 형식을 설정할 때는 모듈 수준에서 사용하며, 지정한 문자로 시작하는 이름의 Function 프로시저와 Property Get 프로시저의 형식을 반환합니다.

구문

DefBool letterrange[, letterrange] . . .

DefByte letterrange[, letterrange] . . .

DefInt letterrange[, letterrange] . . .

DefLng letterrange[, letterrange] . . .

DefCur letterrange[, letterrange] . . .

DefSng letterrange[, letterrange] . . .

DefDbl letterrange[, letterrange] . . .

DefDec letterrange[, letterrange] . . .

DefDate letterrange[, letterrange] . . .

DefStr letterrange[, letterrange] . . .

DefObj letterrange[, letterrange] . . .

DefVar letterrange[, letterrange] . . .

필수적인 요소인 letterrange 인수는 다음과 같은 구문으로 되어 있습니다.

letter1[-letter2]

letter1과 letter2 인수는 기본 데이터 형식으로 설정할 수 있는 이름의 범위를 지정합니다. 각 인수는 변수, 인수, Function 프로시저, Property Get 프로시저 이름의 첫 번째 글자를 을 나타내며, 이 이름은 알파벳의 모든 문자를 사용할 수 있습니다. 이 경우 letterrange에 있는 글자들의 대/소문자는 중요하지 않습니다.

참고

문 이름이며 데이터 형식을 결정합니다.

문	데이터 형식
DefBool	Boolean
DefByte	Byte
DefInt	Integer
DefLng	Long
DefCur	Currency
DefSng	Single
DefDbl	Double
DefDec	Decimal(현재 지원 안됨)
DefDate	Date
DefStr	String
DefObj	Object
DefVar	Variant
예를 들어 다음 프로그램에서는 Message가 문자열 변수입니다.

DefStr A-Q

. . .

Message = "스택 공간이 부족합니다."

Deftype 문은 사용된 모듈에서만 유효합니다. 예를 들어 어떤 모듈의 DefInt 문은 오직 변수의 기본 데이터 형식, 프로시저에 전달되는 인수, 그 모듈에서 선언된 Function과 Property Get 프로시저에만 영향을 줍니다. 다른 모듈에 속한 변수, 인수, 반환 형식의 기본 데이터 형식에는 영향을 주지 않습니다. Deftype 문으로 명시적으로 선언하지 않은 경우 모든 변수, 모든 인수, 모든 Function 프로시저 그리고 모든 Property Get 프로시저의 기본 데이터 형식은 Variant가 됩니다.

문자 범위를 지정하면 그 문자 범위는 문자 집합의 첫 번째 128문자에 있는 문자로 시작하는 변수의 데이터 형식을 정의합니다. 그러나 문자 범위를 변수를 포함한 A - Z로 지정하면 확장된 문자 집합(128 - 255)에서 가져온 국제적 문자로 시작하는 변수를 포함한 모든 변수의 지정된 데이터 형식을 기본으로 설정합니다.

범위값을 A - Z로 지정하면 더 이상 Deftype 문을 사용하여 변수의 부분 범위를 재지정할 수 없습니다. 일단 범위가 지정되면 다른 Deftype 문에서 이미 지정된 문자를 포함하더라도 오류가 발생합니다. 그러나 As type 절과 함께 Dim 문을 사용하면 정의된 내용과 무관하게 모든 변수의 데이터 형식을 명시적으로 지정할 수 있습니다. 예를 들어 모듈 수준에서 다음과 같은 코드를 사용하면 기본 데이터 형식이 Integer인 경우에도 변수를 Double로 지정할 수 있습니다.

DefInt A-Z

Dim TaxRate As Double

사용자 정의 형식의 각 요소들은 명시적으로 선언되어야 하기 때문에 Deftype 문에 영향을 받지 않습니다.


Dim 문

변수를 선언하고 저장 공간을 할당합니다.

구문

Dim [WithEvents] varname[([subscripts])] [As [New] type] [, [WithEvents] varname[([subscripts])] [As [New] type]] . . .

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

구성 요소	설명
WithEvents	선택적인 요소. varname을 지정하는 키워드는 ActiveX 개체가 일으키는 이벤트에 반응할 때 사용되는 개체 변수입니다. WithEvents는 클래스 모듈에서만 유효합니다. 각 변수를 WithEvents를 사용하여 개수에 제한 없이 선언할 수 있으나 WithEvents로 배열은 선언할 수 없습니다. New와 WithEvents는 함께 사용할 수 없습니다.
varname	필수적인 요소. 변수의 이름은 표준 변수 명명 규칙에 따릅니다.
subscripts	선택적인 요소. 배열 변수의 차원으로써 60차원까지 선언할 수 있습니다. 변수의 subscripts 인수는 다음과 같은 구문으로 사용합니다.
	[lower To] upper [, [lower To] upper] . . .
	lower에서 명시적으로 언급되지 않으면 배열의 하위값은 Option Base 문에 따라 제어됩니다. Option Base 문이 없는 경우 하위값은 0입니다.
New	선택적인 요소. 개체의 암시적인 작성을 가능케하는 키워드입니다. 개체 변수를 선언할 때 New를 사용하는 경우 개체의 새 인스턴스는 처음 참조할 때 작성되기 때문에 개체 참조를 지정하기 위해 Set 문을 사용하지 않아도 됩니다. New 키워드는 기본 데이터 형식의 변수를 선언할 때와 독립적인 개체의 인스턴스의 선언 등에 사용할 수 없으며, WithEvents와도 함께 사용할 수 없습니다.
type	선택적인 요소. 변수의 데이터 형식은 다음과 같습니다. Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal(현재 지원 안됨), Date, String(가변 길이 문자열), String * length(고정 길이 문자열), Object, Variant, 사용자 정의 형식, 개체 형식. 선언한 각 변수마다 각각 별도의 As type 절을 사용합니다.
참고

변수가 모듈 수준에서 Dim으로 선언된 경우 모듈 내의 모든 프로시저에서 사용할 수 있습니다. 프로시저 수준에서 선언된 변수는 해당 프로시저에서만 사용할 수 있습니다.

Dim 문은 모듈이나 프로시저 수준에서 변수의 데이터 형식을 선언할 때 사용합니다. 다음은 변수를 Integer로 선언한 예제입니다.

Dim NumberOfEmployees As Integer

변수의 개체 형식을 선언할 때에도 Dim 문을 사용합니다. 다음은 워크시트의 새로운 인스턴스에 대한 변수를 선언한 예제입니다.

Dim X As New Worksheet

개체 변수를 선언할 때 New 키워드를 사용하지 않은 경우, 개체를 참조하는 변수는 사용 하기 전에 먼저 Set 문을 이용하여 존재하는 개체로 미리 지정되어야 합니다. 개체를 지정하기 전까지 선언된 개체 변수는 개체의 어떤 인스턴스도 참조하지 않음을 나타내는 Nothing이라는 특별한 값을 갖습니다.

빈 괄호로 된 Dim 문을 사용하여 동적 배열을 선언할 수 있습니다. 동적 배열을 선언한 다음 배열의 요소와 차원을 정의할 때 프로시저에서 ReDim 문을 사용합니다. Private, Public, Dim 문으로 배열의 크기가 명백히 지정된 배열 변수의 차원을 재선언할 때는 오류가 발생합니다.

데이터 형식 또는 개체 형식을 지정하지 않았거나 모듈의 Deftype 문을 사용하지 않은 경우 변수의 기본값은 Variant입니다.

변수를 초기화할 때 숫자 변수의 초기값은 0 이고 가변 길이 문자열의 초기값은 길이가 0인 문자열("")이며, 고정 길이 문자열은 0으로 채워진 값입니다. Variant 변수의 초기값은 Empty입니다. 사용자 정의 형식 변수의 각 요소는 각각 독립된 변수처럼 초기화됩니다.

메모   프로시저에서 Dim 문을 사용할 때 일반적으로 프로시저의 시작 부분에 Dim 문을 선언합니다.


Enum 문

Enum 형식을 선언합니다.

구문

[Public | Private] Enum name

membername [= constantexpression]

membername [= constantexpression]

. . .

End Enum

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

구성 요소	설명
Public	선택적인 요소. Enum 형식을 모든 프로젝트에서 인식할 수 있도록 지정합니다. Enum 형식의 기본값은 Public입니다.
Private	선택적인 요소. Enum 형식이 모듈에서만 인식할 수 있도록 지정합니다.
name	필수적인 요소. Enum 형식의 이름. name은 반드시 유효한 Visual Basic 식별자이어야 하며, Enum 형식의 변수나 매개변수를 선언할 때 형식으로 지정됩니다.
membername	필수적인 요소. 유효한 Visual Basic 식별자로서 Enum 형식의 구성 요소를 알려 주는 이름입니다.
constantexpression	선택적인 요소. Long으로 평가되는 요소값. constantexpression이 지정되지 않으면 할당된 값은 0이거나 membername 바로 앞에 오는 값보다 1이 더 큽니다.
참고

Enum 변수는 Enum 형식과 함께 선언된 변수입니다. 변수와 매개 변수는 모두 Enum 형식과 함께 선언될 수 있습니다. Enum 형식의 요소는 Enum 문 안에서 상수값으로 초기화됩니다. 할당된 값은 실행 모드에서 수정될 수 없으며, 양수와 음수 모두를 포함할 수 있습니다. 예를 들면 다음과 같습니다.

Enum SecurityLevel

IllegalEntry = -1

SecurityLevel1 = 0

SecurityLevel2 = 1

End Enum

Enum 문은 모듈 수준에서만 나타날 수 있습니다. Enum 형식이 정의되면 그 형식을 반환하는 프로시저나 변수, 매개 변수를 선언할 때 사용될 수 있습니다. 모듈 이름이며 Enum 형식의 이름을 식별할 수는 없습니다. 클래스 모듈에 있는 Public Enum 형식은 클래스의 구성원은 아니지만 형식 라이브러리에 수록되어 있습니다. 표준 모듈에서 정의된 Enum 형식은 형식 라이브러리에 수록되지 않습니다. 같은 이름의 Public Enum 형식은 같은 이름 공백을 공유하기 때문에 표준 모듈과 클래스 모듈 양쪽에서 함께 정의될 수는 없습니다. 서로 다른 형식 라이브러리에 있는 두 개의 Enum 형식이 이름은 같고 요소만 다르다면 이 형식에 대한 변수를 참조할 때는 References에서 우선권을 갖는 형식 라이브러리를 따릅니다.

Enum 형식은 With 블록에서 대상으로 사용할 수 없습니다.


Erase 문

고정 크기 배열의 요소를 다시 초기화하고 동적 배열 저장 공간을 해제합니다.

구문

Erase arraylist

필수적인 요소인 arraylist 인수는 지워질 배열 변수로 하나 이상의 쉼표로 구분됩니다.

참고

Erase는 보통의 고정 크기 배열이냐 동적 배열이냐에 따라 다르게 작동합니다. Erase는 고정 크기 배열에 대해서는 메모리를 회복하지 않습니다. Erase는 다음과 같이 고정 배열의 요소를 설정합니다.

배열 형식	고정 배열 요소에서 Erase의 효과
고정 수 배열	각 요소를 0으로 설정합니다.
고정 문자 배열(가변 길이)	각 요소를 길이가 0인 문자열("")로 설정합니다.
고정 문자 배열(고정 길이)	각 요소를 0으로 설정합니다.
고정 Variant 배열	각 요소를 Empty로 설정합니다.
사용자 정의 형식 배열	각 요소를 개별적인 변수인 것처럼 설정합니다.
개체 배열	각 요소를 특수값인 Nothing으로 설정합니다.
Erase는 동적 배열로 사용된 메모리를 복구합니다. 프로그램이 동적 배열을 다시 참조할 수 있으려면 먼저 ReDim 문을 사용하는 배열 변수의 차원을 다시 선언해야 합니다.


Event 문

사용자 정의 이벤트를 선언합니다.

구문

[Public] Event procedurename [(arglist)]

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

구성 요소	설명
Public	선택적인 요소. Event가 프로젝트 전체에서 인식될 수 있도록 지정합니다. Events 형식은 기본적으로 Public입니다. 이벤트는 선언되었던 모듈에서만 발생할 수 있습니다.
procedurename	필수적인 요소. 이벤트의 이름은 표준 변수 명명 규칙에 따릅니다.
arglist 인수는 다음과 같은 구문으로 구성되어 있습니다.

[ByVal | ByRef] varname[( )] [As type]

구성 요소	설명
ByVal	선택적인 요소. 인수가 값에 의한 전달임을 나타냅니다.
ByRef	선택적인 요소. 인수가 참조에 의한 전달임을 나타냅니다. Visual Basic에서는 ByRef가 기본값입니다.
varname	필수적인 요소. 프로시저에 전달되는 인수를 나타내는 변수의 이름이며 표준 변수 명명 규칙에 따릅니다.
type	선택적인 요소. 프로시저에 전달되는 인수의 데이터 형식은 다음과 같습니다. Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal(현재 지원 안됨), Date, String(가변 길이에서만), Object, Variant, 사용자 정의 형식, 개체 형식
참고

이벤트가 선언되었다면 RaiseEvent 문을 사용하여 이벤트를 발생시킵니다. Event 선언이 표준 모듈에서 나타나면 구문 오류가 일어납니다. 이벤트는 값을 반환하기 위해 선언될 수는 없습니다. 전형적인 이벤트는 다음과 같은 예제에서처럼 선언되고 발생할 수 있습니다.

' 클래스 모듈의 모듈 수준에서 이벤트를 선언합니다.

Event LogonCompleted (UserName as String)

Sub

RaiseEvent LogonCompleted("AntoineJan")

End Sub

메모    이벤트가 명명된 인수나 Optional 인수 또는 ParamArray 인수를 가질 수 없다는 것만 제외하고, 프로시저 인수를 선언하듯이 이벤트 인수를 선언할 수 있습니다. 이벤트는 반환값을 가지지 않습니다.


Function 문

Function 프로시저의 본문을 형성하는 코드, 이름, 인수를 선언합니다.

구문

[Public | Private | Friend] [Static] Function name [(arglist)] [As type]
[statements]
[name = expression]
[Exit Function]
[statements]
[name = expression]

End Function

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

구성 요소	설명
Public	선택적인 요소. Function 프로시저는 모든 모듈의 모든 프로시저에 액세스할 수 있음을 나타냅니다. 프로시저가 Option Private을 갖고 있는 모듈에서 사용되면 프로젝트 밖에서는 사용할 수 없습니다.
Private	선택적인 요소. Function 프로시저는 이 프로시저가 선언된 모듈에서만 다른 프로시저에 액세스할 수 있음을 나타냅니다.
Friend	선택적인 요소. 클래스 모듈에서만 사용됩니다. Function 프로시저가 프로젝트 전체에서 인식되지만 개체의 인스턴스 컨트롤러에서는 인식될 수 없음을 나타냅니다.
Static	선택적인 요소. Function 프로시저의 지역 변수가 호출 내에서 보존됨을 나타냅니다. Static 속성은 Function 밖에서 선언된 변수가 프로시저에서 사용된다 하더라도 이 변수에 영향을 미치지 않습니다.
name	필수적인 요소. Function의 이름이며 표준 변수 명명 규칙에 따릅니다.
arglist	선택적인 요소. 호출하면 Function 프로시저에 전달되는 인수를 나타내는 변수의 목록입니다. 변수가 여러 개인 경우에는 쉼표로 구분됩니다.
type	선택적인 요소. Function 프로시저에 의해 반환되는 값의 데이터 형식은 다음과 같습니다. Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal(현재 지원 안됨), Date, String,(가변 길이 제외), Object, Variant, 사용자 정의 형식
statements	선택적인 요소. Function 프로시저 내부에서 실행될 명령문의 그룹입니다.
expression	선택적인 요소. Function 값을 반환합니다.
arglist 인수는 다음과 같은 구문과 구성 요소를 가집니다.

[Optional] [ByVal | ByRef] [ParamArray] varname[( )] [As type] [= defaultvalue]

구성 요소	설명
Optional	선택적인 요소. 인수가 필요하지 않음을 나타냅니다. 인수가 사용되려면 arglist에 있는 모든 다음 인수들을 선택적으로 사용되며 Optional 키워드를 사용하여 선언해야 합니다. 만약 ParamArray가 사용되면 Optional은 어떤 인수에 대해서도 사용될 수 없습니다.
ByVal	선택적인 요소. 인수가 값에 의한 전달임을 나타냅니다.
ByRef	선택적인 요소. 인수가 참조에 의한 전달임을 나타냅니다. Visual Basic에서는 ByRef가 기본값입니다.
ParamArray	선택적인 요소. 마지막 인수가 Variant 요소의 Optional 배열임을 나타내도록 arglist에 있는 마지막 인수로서만 사용됩니다. ParamArray 키워드를 사용하면 임의 개수의 인수를 사용할 수 있으며, 이 키워드는 ByVal, ByRef, Optional과 함께 사용될 수 없습니다.
varname	필수적인 요소. 인수를 나타내는 변수의 이름이며 표준 변수 명명 규칙에 따릅니다.
type	선택적인 요소. 프로시저에 전달되는 인수의 데이터 형식은 Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal(현재 지원 안됨) Date, String (가변 길이의 경우), Object, Variant, 특정한 개체 형식 등이 됩니다. 매개 변수가 Optional이 아니라면 사용자 정의 형식도 지정할 수 있습니다.
defaultvalue	선택적인 요소. 상수나 상수식이며 Optional 매개 변수에 대해서만 유효합니다. 형식이 Object면 명시적 기본값은 Nothing으로만 됩니다.
참고

Public, Private, Friend 등을 사용하여 명시적으로 지정하지 않은 경우, Function 프로시저의 기본값은 public입니다. Static으로 변수를 선언 하지 않은 경우에는 프로그램간 호출 시 지역 변수값은 보전되지 않습니다. Friend 키워드는 클래스 모듈에서만 사용될 수 있지만, 프로젝트의 모든 모듈에 있는 모든 프로시저에 의해 액세스될 수 있습니다. Friend 프로시저는 그 상위 클래스의 형식 라이브러리에서도 인식되지 않으며, Friend 프로시저가 마지막 범위값이 될 수도 없습니다.

주의   Function 프로시저는 순환할 수 있습니다. 즉, 주어진 업무를 수행하기 위하여 자신을 호출하는 것을 말하는데, 이 경우 스택 오버 플로우가 발생할 수 있습니다. 일반적으로 Static 키워드는 순환적인 Function 프로시저와는 함께 사용하지 않습니다.

모든 실행 가능한 코드는 프로시저에 있어야 합니다. Function 프로시저를 다른 Function 프로시저나 Sub 프로시저, Property 프로시저에서 정의할 수 없습니다.

Exit Function 문은 현재의 Function 프로시저로부터 바로 빠져나갈 때 사용하며, 프로그램은 Function 프로시저를 호출한 바로 다음의 문을 실행하게 됩니다. Exit Function 문은 Function 프로시저의 모든 곳에서 횟수에 상관없이 사용할 수 있습니다.

Sub 프로시저처럼 Function 프로시저도 인수를 사용하거나 일련의 문을 수행하거나 인수의 값을 변경시킬 수 있습니다. 그러나 Sub 프로시저와 달리 함수에 의해 반환된 값을 사용하려고 할 때는 본래 함수, 예를 들면 Sqr, Cos,Chr와 같은 함수를 사용할 때와 마찬가지로 식의 오른쪽에 Function 프로시저를 사용할 수 있습니다.

뒤에 괄호로 묶은 인수 목록을 가진 함수 이름을 사용하여 Function 프로시저를 호출할 수 있습니다. Function 프로시저를 호출하는 방법에 대한 정보는 Call 문을 참조하시기 바랍니다.

함수로부터 값을 반환할 때는 함수 이름에 값을 지정합니다. 이러한 지정문은 프로시저의 모든 곳에서 몇 번이고 사용할 수 있습니다. name에 값이 지정되지 않은 경우 프로시저는 기본값을 반환합니다. 이 경우 숫자 함수인 경우 0을 반환하고, 문자열 함수인 경우 길이가 0인 문자열("")을 반환하며, Variant 함수인 경우는 Empty를 반환합니다. Function의 name(Set을 사용한 경우)에 개체 참조를 지정하지 않은 경우 개체 참조를 반환한 함수는 Nothing을 반환합니다.

다음 예제는 BinarySearch라는 함수에 반환값을 지정하는 방법을 보여주고 있습니다. 이 경우 해당하는 값을 찾지 못했음을 나타내기 위하여 이름에 False가 지정됩니다.

Function BinarySearch(. . .) As Boolean

. . .

' 값을 찾을 수 없습니다. False 값을 반환합니다.

If lower > upper Then

BinarySearch = False

Exit Function

End If

. . .

End Function

Function 프로시저에 사용하는 변수는 프로시저에서 명시적으로 선언하는 변수와 선언하지 않은 변수로 구분됩니다. 프로시저에서 Dim 문을 사용하여 명시적으로 선언하는 변수는 항상 프로시저에서 지역적으로 사용됩니다. 프로시저에서 사용하지만 명시적으로 선언하지 않는 변수는 프로시저 밖의 상위 수준에서 선언하지 않은 경우에만 지역적으로 사용됩니다.

주의   프로시저에 명시적으로 선언하지 않은 변수는 프로시저에서 사용할 수 있으나, 모듈 수준에서 정의한 것과 이름이 동일한 경우 충돌할 수도 있습니다. 프로시저가 또 다른 프로시저나 상수, 변수와 이름이 같으며 명시적으로 선언되지 않은 변수를 참조하는 경우 해당 프로시저의 모듈 수준 이름을 참조하는 것으로 간주합니다. 변수를 명시적으로 선언할 때에는 Option Explicit 문을 사용합니다.

주의   Visual Basic에서는 내부 효율을 높이기 위해 산술식을 재정리해서 사용할 수 있습니다. 함수가 같은 식에서 변수값을 변경할 때 산술식에서는 Function 프로시저 문 사용을 피하시기 바랍니다.


GetObject 함수

ActiveX 구성 요소가 제공하는 개체에 대한 참조를 반환합니다.

구문

GetObject([pathname] [, class])

GetObject 함수 구문은 다음과 같은 명명된 인수로 되어 있습니다.

구성 요소	설명
pathname	선택적인 요소. Variant(String). 검색할 개체를 포함하는 파일의 완전한 경로와 이름. Pathname을 생략하는 경우 class를 필요로 합니다.
class	선택적인 요소. Variant(String). 개체의 클래스를 나타내는 문자열입니다.
class 인수는 appname.objecttype 문을 사용하며 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
appname	필수적인 요소. Variant(String). 개체를 제공하는 응용 프로그램의 이름입니다.
objecttype	필수적인 요소. Variant(String). 작성할 개체의 클래스나 데이터 형식입니다.
참고

파일에서 ActiveX 개체에 액세스하고 개체 변수에 개체를 지정할 때 GetObject 함수를 사용합니다. 다음 예제와 같이 GetObject 함수가 반환한 개체를 개체 변수에 지정할 때 Set 문을 사용합니다.

Dim CADObject As Object

Set CADObject = GetObject("C:\CAD\SCHEMA.CAD")

프로그램이 실행될 때 지정한 pathname과 결합된 프로그램이 시작되고 지정된 파일의 개체가 활성화 됩니다.

pathname이 길이가 0인 문자열("")인 경우 GetObject 함수는 지정된 형식의 새로운 개체 인스턴스를 반환합니다. pathname 인수를 생략한 경우 GetObject 함수는 지정된 형식의 현재 활성화된 개체를 반환합니다. 지정된 데이터 형식의 개체가 없는 경우 오류가 발생합니다.

일부 응용 프로그램에서는 파일의 일정 부분만 활성화시킬 수 있습니다. 파일 이름 끝에 느낌표(!)를 추가하고 활성화할 파일의 일부를 나타내는 문자열과 함께 따라가 봅니다. 문자열을 작성시키는 방법에 대한 정보는 작성된 개체의 응용 프로그램에 관한 문서를 참조합니다.

예를 들면 그리기 응용 프로그램에서 파일에 저장된 그리기에 대한 여러 단계를 갖고 있을 것입니다. SCHEMA.CAD라고 그림 내의 단계를 활성화하기 위하여 다음과 같이 프로그램을 사용할 수 있습니다.

Set LayerObject = GetObject("C:\CAD\SCHEMA.CAD!Layer3")

개체의 class를 지정하지 않은 경우 자동화는 제공된 파일 이름에 따라 응용 프로그램의 시작과 개체의 활성화 여부를 결정합니다. 그렇지만, 일부 파일들은 하나 이상의 개체를 지원하기도 합니다. 예를 들면 그리기 응용 프로그램은 Application 개체, Drawing 개체, Toolbar 개체 등 서로 다른 3가지의 개체 형식을 지원하며, 이것은 모두 동일한 파일의 일부분들입니다. 파일에서 활성화시키고자 하는 개체를 지정할 때에는 선택적인 요소인 class 인수를 다음과 같이 사용합니다.

Dim MyObject As Object

Set MyObject = GetObject("C:\DRAWINGS\SAMPLE.DRW", "FIGMENT.DRAWING")

위의 예에서 처럼, FIGMENT는 그리기 응용 프로그램의 이름이며, DRAWING은 그리기 응용 프로그램이 지원하는 개체 형식 중의 하나입니다.

개체가 활성화되면 프로그램에서 정의한 개체 변수를 사용하여 이것을 참조하게 됩니다. 다음의 예에서는 개체 변수 MyObject를 사용하여 새로운 개체의 속성과 메서드를 참조합니다.

MyObject.Line 9, 90

MyObject.InsertText 9, 100, "Hello, world."

MyObject.SaveAs "C:\DRAWINGS\SAMPLE.DRW"

메모   개체의 현재 인스턴스가 있는 경우나 이미 로드된 파일과 함꼐 개체를 만들 때 GetObject 함수를 사용합니다. 개체에 현재 인스턴스가 없고 로드된 파일과 함께 개체를 시작하지 않을 경우에는 CreateObject 함수를 사용합니다.

개체 자신이 단일 인스턴스 개체로 등록된 경우 CreateObject 함수의 사용 횟수에 관계없이 개체의 인스턴스가 하나만 작성됩니다. 단일 인스턴스 개체와 함께 GetObject 함수는 길이가 0인 문자열("")을 호출할 때 항상 같은 인스턴스만을 반환하며 pathname 인수를 생략한 경우 오류가 발생합니다. Visual Basic으로 작성된 클래스를 참조할 때 GetObject 함수를 사용할 수 없습니다.


Implements 문

클래스 모듈에서 구현될 인터페이스나 클래스를 지정합니다.

구문

Implements [InterfaceName | Class]

필수적인 요소인 InterfaceName이나 Class는 메서드가 해당 Visual Basic 클래스의 메서드에 의하여 구현되는 형식 라이브러리의 인터페이스나 클래스의 이름입니다.

참고

인터페이스는 그 인터페이스가 포함하는 요소(메서드와 속성)를 나타내는 원형들의 모음입니다. 즉, 요소 프로시저에 대한 선언만 포함합니다. 클래스는 여러 인터페이스의 모든 메서드와 속성의 구현을 제공합니다. 클래스는 클래스의 컨트롤러가 각 함수를 호출할 때 사용되는 코드를 제공합니다. 모든 클래스는 적어도 한 가지 이상의 인터페이스를 구현하며, 그것이 클래스의 기본 인터페이스로 간주됩니다. Visual Basic에서는 구현된 인터페이스의 명시적인 요소가 아니면 기본 인터페이스의 요소로 취급됩니다.

Visual Basic 클래스가 인터페이스를 구현하면 Visual Basic 클래스는 인터페이스의 형식 라이브러리에 지정된 모든 Public 프로시저들의 자체 버전을 제공합니다. 인터페이스 원형과 프로시저 사이의 연결을 제공하는 외에도 Implements 문은 클래스가 지정된 인터페이스 ID에 대한 COM QueryInterface 호출을 받아들이도록 합니다.

참고   Visual Basic에서는 파생된 클래스나 인터페이스를 구현하지 않습니다.

인터페이스나 클래스를 구현할 때는 관련 Public 프로시저를 모두 포함시켜야 합니다. 그중 하나라도 인터페이스나 클래스에 구현되지 않으면 오류가 일어납니다. 구현하는 클래스의 프로시저에 코드를 작성하지 않으면 해당 오류가 일어나(Const E_NOTIMPL = &H80004001) 사용자에게 요소가 구현되지 않았다는 것을 알립니다.

Implements 문은 표준 모듈에서는 사용할 수 없습니다.


LBound 함수

지정한 배열의 차원에서 사용 가능한 아래 첨자 값을 포함하는 Long을 반환합니다.

구문

LBound(arrayname[, dimension])

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

구성 요소	설명
arrayname	필수적인 요소. 배열 변수의 이름이며 표준 변수 명명 규칙에 따릅니다.
dimension	선택적인 요소. Variant (Long). 반환된 배열 차원의 최소 범위값을 나타내는 모든 수입니다. 첫 번째 차원에는 1을 사용하고, 두 번째는 2의 순으로 사용하며, dimension을 생략한 경우 1로 간주합니다.
참고

LBound 함수는 배열의 크기를 결정할 때 UBound 함수와 함께 사용합니다. UBound 함수는 배열의 최대 차원 범위값을 찾을 때 사용합니다.

다음 예제에서 LBound 함수는 차원의 배열에 대하여 다음 표와 같은 값을 반환합니다.

Dim A(1 To 100, 0 To 3, -3 To 4)

문	반환값
LBound(A, 1)	1
LBound(A, 2)	0
LBound(A, 3)	-3
모든 차원의 기본 하한값은 Option Base 문의 설정에 따라 0이나 1의 값을 갖습니다. Array 함수가 작성한 배열의 기본값은 0이며, Option Base 문에 의해 영향을 받지 않습니다.

Dim, Private, Public, ReDim, Static 문의 To 절을 사용하여 설정되는 배열의 차원은 하위값으로 어떤 정수값이라도 가질 수 있습니다.


Let 문

식의 값을 변수 또는 속성에 지정합니다.

구문

[Let] varname = expression

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

구성 요소	설명
Let	선택적인 요소. Let 키워드의 명시적인 사용은 형식의 문제이지만, 보통 생략합니다.
varname	필수적인 요소. 변수나 속성의 이름. 표준 변수 명명 규칙을 따릅니다.
expression	필수적인 요소. 변수나 속성에 지정된 값입니다.
참고

데이터 형식이 변수와 호환될 때에만 변수나 속성에 식을 지정할 수 있습니다. 숫자 변수에는 문자식을 지정할 수 없고, 또한 문자열 변수에도 수식을 지정할 수 없습니다. 이 경우 컴파일 시간 오류가 발생합니다.

Variant 변수는 문자식과 수식 모두에 지정할 수 있지만, 반대의 경우 항상 가능한 것은 아닙니다. Null을 제외한 모든 Variant를 문자열 변수에 지정할 수 있으나, 숫자 변수의 경우 숫자로 변환 가능한 값을 가진 Variant만을 지정할 수 있습니다. Variant가 숫자로 변환 가능한지를 알아 보려면 IsNumeric 함수를 사용합니다.

주의   숫자 형식의 식을 다른 숫자 형식의 변수에 지정할 경우 이 식의 값을 결과 변수값으로 강제 전환시킵니다.

Let 문은 두 변수가 같은 사용자 정의 형식인 경우 하나의 레코드 변수를 다른 변수에 지정할 때 사용합니다. LSet 문은 서로 다른 사용자 정의 형식의 레코드 변수를 지정할 때 사용하며, Set 문은 변수에 개체 참조를 할당할 때 사용합니다.


Option Base 문

배열 아래 첨자의 기본 하한값을 선언하기 위해 모듈 수준에서 사용됩니다.

구문

Option Base {0 | 1}

참고

기본값은 0이기 때문에 Option Base 문은 선택 요소이며, 문을 사용할 때는 모든 프로시저 앞의 모듈에 선언해야 합니다. Option Base 문은 모듈 내에서 한 번만 선언할 수 있으며, 반드시 차원을 포함한 배열 선언 앞에 두어야 합니다.

메모   Dim , Private, Public, ReDim, Static 문에서의 To 절은 배열 인수의 범위를 더 융통성 있게 사용할 수 있습니다. 그러나 To 절에 최소 범위값을 지정하지 않은 경우 Option Base 문을 사용하여 기본값 최소 범위값을 1로 변경할 수 있습니다. ParamArray 키워드로 작성한 배열의 기본값은 0입니다. Option Base 문은 Array 함수 또는 ParamArray 키워드에 영향을 주지 않습니다.

Option Base 문은 사용한 모듈의 배열의 최소 범위값에만 영향을 줍니다.


Option Compare 문

문자열 데이터가 비교될 때 사용하는 기본 비교 메서드를 선언하기 위해 모듈 수준에서 사용됩니다.

구문

Option Compare {Binary | Text | Database}

참고

Option Compare 문을 사용할 경우 모든 프로시저 앞의 모듈에 두어야 합니다.

Option Compare 문은 모듈에 대한 문자열 비교 메서드(Binary, Text, Database등)를 지정합니다. Option Compare 문을 포함하지 않는 모듈의 기본값 텍스트 비교 메서드는 Binary입니다.

Option Compare Binary는 문자의 내부 이진 표현 방식에 의한 정렬 순서에 따른 문자열 비교값을 갖습니다. Microsoft Windows에서는 코드 페이지에 따라 정렬 순서가 결정되며, 일반적인 이진 정렬 순서는 다음과 같습니다.

A < B < E < Z < a < b < e < z < � < � < � < � < � < �

Option Compare Text는 사용자의 시스템 로케일에 따른 대/소문자 구분 텍스트 정렬 순서에 따른 문자열 비교값을 갖습니다. Option Compare Text를 사용하여 동일한 문자를 정렬할 경우 다음과 같은 텍스트 정렬 순서를 따릅니다.

(A=a) < ( �=�) < (B=b) < (E=e) < (�=�) < (Z=z) < (�=�)

Option Compare Database는 Microsoft Access에서만 사용할 수 있습니다. 정렬 순서에 따른 문자열 비교값은 문자열 비교가 일어난 데이터베이스의 현지 ID(로케일 ID)가 결정합니다.


Option Explicit 문

모듈 수준에서 해당하는 모듈의 모든 변수를 명시적으로 선언할 때 사용합니다.

구문

Option Explicit

참고

Option Explicit 문은 모듈의 모든 프로시저 앞에 선언해야 합니다.

Option Explicit를 모듈에 선언할 때는 모든 변수들을 Dim, Private, Public, ReDim, Static 문을 사용하여 명시적으로 선언해야 합니다. 선언하지 않은 변수 이름을 사용한 경우 컴파일 시간 오류가 발생합니다.

Option Explicit 문을 사용하지 않은 경우, 선언되지 않은 변수들은 기본값 데이터 형식을 Deftype 문으로 지정한 경우를 제외하고 모두 Variant입니다.

메모   변수 이름을 잘못 지정하거나, 프로그램에서 변수의 범위가 불분명할 경우 혼동을 피하기 위해 Option Explicit 문을 사용하시기 바랍니다.


Option Private 문

다중 프로젝트간에 상호 참조를 허용하는 호스트 프로그램에서 사용하며, Option Private Module은 특정 모듈의 내용을 해당 프로젝트 밖에서 참조하지 못하게 할 때 사용합니다. Visual Basic의 단독(standalone) 버전처럼 외부 참조를 허용하지 않는 호스트 프로그램의 경우 Option Private 문은 효력이 없습니다.

구문

Option Private Module

참고

Option Private 문을 사용할 경우 모듈 수준에서 모든 프로시저 앞에 선언해야 합니다.

모듈에 Option Private Module이 포함된 경우, 모듈에서 정의한 변수, 개체, 사용자 정의 형식은 해당된 프로젝트에서 사용 가능하나, 다른 응용 프로그램이나 프로젝트에서는 사용할 수 없습니다.

메모   Option Private 문은 다수의 프로젝트를 동시에 적재하거나 적재된 프로그램 간에 상호 참조가 가능하게 지원하는 호스트 프로그램에서만 유용하게 사용됩니다. 예를 들어 Microsoft Excel은 다수의 프로젝트 적재가 가능하므로, 상호 프로젝트간의 식별 범위을 제한하기 위해 Option Private Module을 사용할 수 있습니다. Visual Basic에서는 다수의 프로젝트를 적재할 수 있으나, 프로젝트 간의 상호 참조는 허용하지 않습니다.


Private 문

모듈 수준에서 private 변수를 선언하고 저장 공간을 할당할 때 사용합니다.

구문

Private [WithEvents] varname[([subscripts])] [WithEvents] type] [,[WithEvents] varname[([subscripts])] [As [New] type]] . . .

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

구성 요소	설명
WithEvents	선택적인 요소. varname이 ActiveX 개체가 일으키는 이벤트를 처리하기 위해 사용하는 개체 변수임을 지정하는 키워드이며 클래스 모듈에서만 유효합니다. WithEvents를 사용하는 개별적인 변수는 얼마든지 선언할 수 있지만, WithEvents와 함께 배열은 작성할 수 없습니다. WithEvents를 New와 함께 사용할 수 없습니다.
varname	필수적인 요소. 변수의 이름이며 표준 변수 명명 규칙을 따릅니다.
subscripts	선택적인 요소. 배열 변수의 차원으로 60차원까지 선언할 수 있으며 subscripts 인수는 다음과 같은 구문을 사용합니다.
	[lower To] upper [,[lower To] upper] . . .
	lower에 명시적으로 선언하지 않은 경우 배열의 최소 범위는 Option Base 문에 따르며 Option Base 문을 지정하지 않은 경우 최소 범위값은 0입니다.
New	선택적인 요소. 개체를 암시적로 선언할 때 사용하는 키워드. 개체 변수를 선언할 때 New를 사용하면, 처음 참조할 때 개체의 새로운 인스턴스가 작성되므로 개체 참조를 위해 Set 문을 별도로 지정하지 않아도 됩니다. New 키워드는 모든 기본 데이터 형식의 변수를 선언할 때에나, 개체 의존적인 인스턴스를 선언할 때나 WithEvents 문과 함께 사용할 수 없습니다.
type	선택적인 요소. 변수의 데이터 형식은 다음과 같습니다. Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal(현재 지원 안됨), Date, String(가변 길이 문자열의 경우), String * length (고정 길이 문자열의 경우), Object, Variant, 사용자 정의 형식, 개체 형식. 선언되는 변수마다 각각 별도의 As type 절을 사용합니다.
참고

Private 변수는 선언된 모듈에서만 유효합니다.

다음 예에서 변수를 Integer로 선언한 것처럼 Private 문은 변수의 데이터 형식을 선언할 때 사용됩니다.

Private NumberOfEmployees As Integer

변수의 개체 형식을 선언할 때도 Private 문을 사용할 수 있습니다. 다음은 워크시트의 새로운 인스턴스에 대해 Private 문을 사용하여 변수를 선언한 예제입니다.

Private X As New Worksheet

개체 변수를 선언할 때 New 키워드를 사용하지 않은 경우, Set 문을 사용하여 개체 참조 변수를 기존 개체에 미리 지정해 두어야 합니다. 선언된 개체 변수는 개체를 지정하기 전까지 개체의 어느 인스턴스도 참조하지 않음을 나타내는 Nothing이라는 값을 갖습니다.

데이터 형식이나 개체 형식을 지정하지 않거나 모듈의 Deftype 문을 지정하지 않은 경우 변수의 기본값은 Variant입니다.

동적 배열을 선언할 때 빈 괄호와 함께 Private 문을 사용하며, 선언한 뒤에는 배열의 요소와 차원의 수를 정의하는 프로시저 안에 ReDim 문을 사용합니다. Private이나 Public, Dim 문에 그 크기가 명시적으로 지정된 배열 변수의 차원을 재선언할 경우 오류가 발생합니다.

변수를 초기화할 경우 숫자값은 0 으로, 가변 길이 문자열은 길이가 0인 문자열("")로 초기화되며 고정 길이 문자열은 0으로 채워집니다. Variant 변수는 Empty 값으로 초기화합니다. 사용자 정의 형식 변수의 요소는 각각 독립된 변수인 것처럼 초기화됩니다.

메모   Private 문은 프로시저 내에서 사용할 때 프로시저의 시작 부분에 둡니다.


Property Get 문

속성값을 갖고 Property 프로시저를 이루는 프로그램이나, 인수의 이름을 선언합니다.

구문

[Public | Private] [Static] Property Get name [(arglist)] [As type]
[statements]
[name = expression]
[Exit Property]
[statements]
[name = expression]

End Property

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

구성 요소	설명
Public	선택적인 요소. 모든 모듈의 다른 모든 프로시저가 Property Get 프로시저를 액세스할 수 있음을 나타냅니다. Option Private 문을 포함하는 모듈에서 사용한 경우 프로시저 밖에서 그 프로시저를 사용할 수 없습니다.
Private	선택적인 요소.선언된 모듈 내에 있는 다른 프로시저들만 Property Get 프로시저에 접근할 수 있습니다.
Static	선택적인 요소. 프로그램간의 호출 시에도 Property Get 프로시저의 지역 변수 값이 보존됩니다. Static 속성은 프로시저에서 변수를 사용할 경우에도 Property Get 프로시저 밖에서 선언한 변수에는 영향을 주지 않습니다.
name	필수적인 요소. Property Get 프로시저의 이름이며, 동일한 모듈에서 Property Let이나 Property Set 프로시저와 이름이 같은 경우를 제외하고 모두 표준 변수 명명 규칙을 따릅니다.
arglist	선택적인 요소. 호출되었을 때 Property Get Procedure로 전달되는 인수를 나타내는 변수들의 목록입니다. 각각의 인수는 쉼표로 구분되며, Property Get Procedure 내에서 각 인수의 이름과 데이터 형식은 Property Let Procedure 내의 대응하는 인수가 있을 경우 이와 동일해야 합니다.
type	선택적인 요소. Property Get 프로시저가 반환하는 값의 데이터 형식은 다음과 같습니다. Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal(현재 지원 안됨), Date, String(고정 길이 제외), Object, Variant, 사용자 정의 형식, 배열 Property Get 프로시저가 반환하는 type은 대응하는 Property Let 프로시저의 마지막 인수와 데이터 형식이 일치해야 하며, 이 인수는 식의 오른쪽 속성으로 할당되는 값을 정의합니다.
statements	선택적인 요소. Property Get Procedure의 본문 내에서 실행되는 모든 문들의 그룹입니다.
expression	선택적인 요소. Property Get 문에서 정의한 프로시저가 반환하는 속성값입니다.
arglist 인수는 다음과 같은 구문과 구성 요소로 되어 있습니다.

[Optional] [ByVal | ByRef] [ParamArray] varname[( )] [As type] [= defaultvalue]

구성 요소	설명
Optional	선택적인 요소. 인수가 필수적인 것이 아니라는 것을 의미하며, 만약 사용되는 경우 arglist에 있는 모든 관련된 인수들이 선택적이어야 하며 Optional 키워드를 사용하여 선언되어야 합니다.
ByVal	선택적인 요소. 인수가 값에 의한 전달입니다.
ByRef	선택적인 요소. 인수가 참조에 의한 전달입니다. Visual Basic에서는 ByRef가 기본값입니다.
ParamArray	선택적인 요소. arglist에서 마지막 인수로만 사용되며 마지막 인수가 Variant 요소의 Optional 배열임을 나타냅니다. ParamArray 키워드를 사용하면 임의 개수의 인수를 사용할 수 있으며, ByVal, ByRef 또는 Optional과 함께 사용할 수 없습니다.
varname	필수적인 요소. 인수를 나타내는 변수의 이름이며 표준 변수 명명 규칙을 따릅니다.
type	선택적인 요소. 프로시저에 전달되는 인수의 데이터 형식이며 Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal(현재 지원 안함), Date, String(가변 길이 경우), Object, Variant, 또는 개체 형식을 지정합니다. 만약 매개 변수가 Optional이 아니라면 사용자 정의 형식도 지정됩니다.
defaultvalue	선택적인 요소. 모든 상수나 상수 식. Optional 매개 변수만 해당됩니다. Object 형식인 경우 명시적인 기본값은 Nothing만 가능합니다.
참고

Public, Private, Friend 등을 사용하여 명시적으로 지정하지 않은 경우, Property 프로시저의 기본값은 public입니다. Static으로 변수를 선언 하지 않은 경우에는 프로그램간 호출 시 지역 변수값은 보전되지 않습니다. Friend 키워드는 클래스 모듈에서만 사용될 수 있지만, 프로젝트의 모든 모듈에 있는 모든 프로시저에 의해 액세스될 수 있습니다. Friend 프로시저는 그 상위 클래스의 형식 라이브러리에서도 인식되지 않으며, Friend 프로시저가 마지막 범위값이 될 수도 없습니다.

모든 실행 가능한 프로시저는 프로그램에 들어 있어야 하며, 다른 Property, Sub, Function 프로시저 내에서는 Property Get 프로시저를 정의할 수 없습니다.

Property Get 프로시저를 즉시 빠져나올 때 Exit Property 문을 사용하며, 이때 프로그램은 Property Get 프로시저를 호출한 다음 문장에서 실행이 계속 됩니다. Exit Property 문은 Property Get 프로시저에서 몇 번이고 사용할 수 있습니다.

Sub 프로시저나 Property Let 프로시저와 같이 Property Get 프로시저도 인수를 취할 수 있는 독립된 프로시저로써 일련의 문을 수행하고, 인수의 값을 변경할 수 있습니다. 그러나 Sub 프로시저나 Property Let 프로시저와 달리, 속성값을 반환할 때 Function이나 속성 이름을 사용하는 것처럼 Property Get 프로시저를 식의 오른쪽에 둡니다.


Property Let 문

속성에 값을 할당하는 Property Let 프로시저의 형태를 구성하는 프로그램이나 인수, 이름을 선언합니다.

구문

[Public | Private] [Static] Property Let name ([arglist,] value)
[statements]
[Exit Property]
[statements]

End Property

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

구성 요소	설명
Public	선택적인 요소. Property Let 프로시저는 모든 모듈의 다른 모든 프로시저에서 액세스할 수 있음을 나타냅니다. Option Private 문을 포함하는 모듈에서 사용하는 경우 그 프로시저를 프로젝트 밖에서는 사용할 수 없습니다.
Private	선택적인 요소. Property Let 프로시저가 선언된 모듈에 있는 다른 프로시저에서만 액세스할 수 있음을 나타냅니다.
Friend	선택적인 요소. 클래스 모듈에서만 사용됩니다. Property Let 프로시저가 프로젝트 전체에서 인식되지만 개체의 인스턴스 컨트롤러에서는 인식될 수 없음을 나타냅니다.
Static	선택적인 요소. Property Let 프로시저의 지역 변수 값이 프로그램의 호출간에도 유지됨을 나타냅니다. Static 속성은 프로시저 내에서 사용할 때에도 Property Let 프로시저 밖에서 선언한 변수에 영향을 주지 않습니다.
name	필수적인 요소. Property Let 프로시저의 이름은 같은 모듈에서 Property Get이나 Property Set 프로시저로서 이름이 같은 경우를 제외하고 모두 표준 변수 명명 규칙을 따릅니다.
arglist	필수적인 요소. 호출할 때 Property Let 프로시저로 전달되는 인수를 나타내는 변수 목록입니다. 여러 개의 인수들은 쉼표로 구분합니다. Property Let 프로시저 내에서 각 인수의 이름과 데이터 형식은 대응하는 Property Get 프로시저에 대응되는 인수와 같아야 합니다.
value	필수적인 요소. 속성에 값을 지정하기 위한 값을 포함하는 변수. 프로시저가 호출되었을 때 이 인수는 호출 식의 오른쪽에 표시됩니다. value의 데이터 형식은 반드시 대응하는 Property Get 프로시저의 반환 형식과 동일해야 합니다.
statements	선택적인 요소. Property Let 프로시저 내에서 실행되는 모든 문들의 그룹입니다.
arglist 인수는 다음과 같은 문과 구성 요소로 되어 있습니다.

[Optional] [ByVal | ByRef] [ParamArray] varname[( )] [As type] [= defaultvalue]

구성 요소	설명
Optional	선택적인 요소. 인수가 필수 사항이 아님을 표시합니다. Arglis의 모든 해당 인수는 선택 사항이고, Optional 키워드로 선언합니다. Property Let 식의 오른쪽에 Optional을 사용할 수 없습니다.
ByVal	선택적인 요소. 인수가 값에 의한 전달임을 나타냅니다.
ByRef	선택적인 요소. 인수가 참조에 의한 전달임을 나타내냅니다. Visual Basic에서는 ByRef가 기본값입니다.
ParamArray	선택적인 요소. arglist에서 마지막 인수로 사용되며 마지막 인수가 Variant 요소의 Optional 배열임을 나타냅니다. ParamArray 키워드를 사용하면 임의 개수의 인수를 사용할 수 있으며, 이 키워드는 ByVal, ByRef, 혹은 Optional과 함께 사용할 수 없습니다.
varname	필수적인 요소. 인수를 나타내는 변수의 이름이며 표준 변수 명명 규칙에 따릅니다.
type	선택적인 요소. 프로시저에 전달하는 데이터 형식은 다음과 같습니다. Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal(현재 지원 안됨), Date, String(가변 길이), Object, Variant. 매개 변수가 Optional이 아닌 경우 사용자 정의 형식, 개체 형식을 지정합니다.
defaultvalue	선택적인 요소. 상수나 상수식이며 Optional 매개 변수에 대해서만 유효합니다. 데이터 형식이 Object인 경우 기본값은 Nothing만이 가능합니다.
메모   모든 Property Let 문은 프로시저가 정의한 하나 이상의 인수를 정의해야 합니다. 이 인수는(하나 이상의 경우 마지막 인수) Property Let 문으로 정의한 프로시저를 호출할 때 할당될 속성의 실제값을 갖습니다. 이 인수는 앞의 문의 value에 의해 참조됩니다.

참고

Public, Private, Friend 등을 사용하여 명시적으로 지정하지 않은 경우, Property 프로시저의 기본값은 public입니다. Static으로 변수를 선언 하지 않은 경우에는 프로그램간 호출 시 지역 변수값은 보전되지 않습니다. Friend 키워드는 클래스 모듈에서만 사용될 수 있지만, 프로젝트의 모든 모듈에 있는 모든 프로시저에 의해 액세스될 수 있습니다. Friend 프로시저는 그 상위 클래스의 형식 라이브러리에서도 인식되지 않으며, Friend 프로시저가 마지막 범위값이 될 수도 없습니다.

모든 실행 가능한 프로시저는 프로그램에 들어 있어야 하며, 다른 Property, Sub, Function 프로시저 내에서는 Property Get 프로시저를 정의할 수 없습니다.

Property Get 프로시저를 즉시 빠져나올 때 Exit Property 문을 사용하며, 이때 프로그램은 Property Get 프로시저를 호출한 다음 문장에서 계속 실행됩니다. Exit Property 문은 Property Get 프로시저에서 몇 번이고 사용할 수 있습니다.

Function이나 Property Get 프로시저와 같이 Property Let 프로시저도 인수를 취할 수 있는 독립된 프로시저로써 일련의 문을 수행하고, 인수의 값을 변경할 수 있습니다.그러나 Function이나 Property Get 프로시저와 달리, 양쪽 모두 값을 반환하는 경우 속성 지정문의 왼쪽에 Property Let 프로시저를 두고 사용하거나, Let 문만을 사용할 수 있습니다.


Property Set 문

개체 참조를 지정하는 Property 프로시저의 형태인 프로그램이나 인수 이름을 선언합니다.

구문

[Public | Private] [Static] Property Set name ([arglist,] reference)
[statements]
[Exit Property]
[statements]

End Property

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

구성 요소	설명
Optional	선택적인 요소. 인수가 호출될 수 있을지 없을지를 나타냅니다.
Public	선택적인 요소. Property Set 프로시저가 모든 모듈의 다른 모든 프로시저에서 액세스할 수 있음을 나타냅니다. Option Private 문을 포함하는 모듈에서 사용하는 경우 해당 프로시저를 프로젝트 밖에서 사용할 수 없습니다.
Private	선택적인 요소. Property Set 프로시저 가 선언된 모듈에 있는 다른 프로시저에서만 액세스할 수 있음을 나타냅니다.
Friend	선택적인 요소. 클래스 모듈에서만 사용됩니다. Property Set 프로시저가 프로젝트 전체에서 인식되지만 개체의 인스턴스 컨트롤러에서는 인식될 수 없음을 나타냅니다.
Static	선택적인 요소. Property Set 프로시저의 지역 변수 값이 프로그램의 호출 도중에도 보존됨을 나타냅니다. Static 속성은 프로시저에서 사용하더라도 Property Set 프로시저 밖에서 선언한 변수에 영향을 주지 않습니다.
name	필수적인 요소. Property Set 프로시저의 이름은 같은 모듈에서 Property Get이나 Property Let 프로시저로서 이름이 같은 경우를 제외하고 모두 표준 변수 명명 규칙을 따릅니다.
arglist	필수적인 요소. 호출될 때 Property Set 프로시저로 전달되는 인수를 나타내는 변수의 목록입니다. 하나 이상의 인수는 쉼표로 구분합니다.
reference	필수적인 요소. 개체 참조 할당의 오른쪽에 사용하는 개체 참조를 갖는 변수입니다.
statements	선택적인 요소. Property 프로시저 내에서 실행되는 모든 문들의 그룹입니다.
arglist 인수는 다음과 같은 구문과 구성 요소로 되어 있습니다.

[Optional] [ByVal | ByRef] [ParamArray] varname[( )] [As type] [= defaultvalue]

구성 요소	설명
Optional	선택적인 요소. 인수가 필수 사항이 아님을 표시합니다. Arglis의 모든 해당 인수는 선택 사항이고, Optional 키워드로 선언합니다. Property Set 식의 오른쪽에 Optional을 사용할 수 없습니다.
ByVal	선택적인 요소. 인수가 값에 의한 전달임을 나타냅니다.
ByRef	선택적인 요소. 인수가 참조에 의한 전달임을 나타냅니다. Visual Basic에서는 ByRef가 기본값입니다.
ParamArray	선택적인 요소. arglist에서 마지막 인수로 사용되며 마지막 인수가 Variant 요소의 Optional 배열임을 나타냅니다. ParamArray 키워드를 사용하면 임의 개수의 인수를 사용할 수 있으며, ByVal, ByRef, 혹은 Optional과 함께 사용할 수 없습니다.
varname	필수적인 요소. 인수를 나타내는 변수의 이름이며 표준 변수 명명 규칙을 따릅니다.
type	선택적인 요소. 프로시저에 전달되는 인수의 데이터 형식으로 다음과 같습니다. Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal(현재 지원 안됨), Date, String(가변 길이), Object, Variant. 매개 변수가 Optional이 아닌 경우 사용자 정의 형식, 개체 형식을 지정합니다.
defaultvalue	선택적인 요소. 모든 상수나 상수 식. Optional 매개 변수에만 사용할 수 있으며 데이터 형식이 Object인 경우 기본값은 Nothing입니다.
메모   모든 Property Set 문은 정의한 프로시저에 대하여 하나 이상의 인수를 정의해야 하며 (또는 하나 이상의 인수일 경우에는 마지막 인수), 이 인수는 Property Set 문으로 지정된 프로시저를 호출할 때 속성에 대한 개체 참조를 가지게 되며, 앞의 문의 reference에 의해 참조됩니다. 이것은 Optional이 될 수 없습니다.

참고

Public, Private, Friend 등을 사용하여 명시적으로 지정하지 않은 경우, Property 프로시저의 기본값은 public입니다. Static으로 변수를 선언 하지 않은 경우에는 프로그램간 호출 시 지역 변수값은 보전되지 않습니다. Friend 키워드는 클래스 모듈에서만 사용될 수 있지만, 프로젝트의 모든 모듈에 있는 모든 프로시저에 의해 액세스될 수 있습니다. Friend 프로시저는 그 상위 클래스의 형식 라이브러리에서도 인식되지 않으며, Friend 프로시저가 마지막 범위값이 될 수도 없습니다.

모든 실행 가능한 프로시저는 프로그램에 들어 있어야 하며, 다른 Property, Sub, Function 프로시저 내에서는 Property Set 프로시저를 정의할 수 없습니다.

Property Set 프로시저로부터 탈출하고자 하는 경우 Exit Property 문을 사용하며, 이때 프로그램은 Property Set 프로시저를 호출한 다음 문장에서 계속 실행됩니다. Property Set 프로시저 내에서는 Exit Property 문을 몇 번이고 사용할 수 있습니다.

Function 프로시저나 Property Get 프로시저 등과 같이 Property Set 프로시저도 인수를 취할 수 있고, 프로그램을 실행하고 인수의 값을 변경시킬 수 있는 독립적인 프로시저입니다. Function과 Property Get 프로시저는 모두 값을 반환하지만, Property Set 프로시저는 개체 참조 지정문의 왼쪽에 지정할 수 있습니다(Set 문).


Public 문

모듈 수준에서 public 변수를 선언하고 저장 장소를 지정하기 위해 사용합니다.

구문

Public [WithEvents] varname[([subscripts])] [As [New] type] [,[WithEvents] varname[([subscripts])] [As [New] type]] . . .

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

구성 요소	설명
WithEvents	선택적인 요소. Varname이 ActiveX 개체가 발생시킨 이벤트에 응답하는 개체 변수임을 나타내는 키워드이고, 클래스 모듈 에서만 유효합니다. WithEvents를 사용하여 다수의 개별 변수를 선언할 수 있지만, 배열을 만들 수는 없으며 New와 함께 사용할 수 없습니다.
varname	필수적인 요소. 변수의 이름이며, 표준 변수 명명 규칙을 따릅니다.
subscripts	선택적인 요소. 배열 변수의 차원을 말하며, 60 차원까지 선언할 수 있습합니다. subscripts 인수는 다음과 같은 문으로 구성되어 있습니다.
	[lower To] upper [,[lower To] upper] . . .
	lower 부분을 명시적으로 선언하지 않으면 배열의 최소 범위는 Option Base 문의 영향을 받으며, Option Base 문이 없으면 최소 범위는 0입니다.
New	선택적인 요소. 개체를 암시적으로 작성하는 키워드입니다. 개체 변수를 선언할 때 New를 사용한다면 변수를 최초 참조할 때 개체 인스턴스가 작성되므로, 다시 Set 문을 사용하여 그 개체 참조를 할당할 필요가 없습니다. New는 기본 데이터 형식이나 의존 개체 인스턴스를 선언하는 데 사용할 수 없고, WithEvents와 함께 사용할 수 없습니다.
type	선택적인 요소. 변수의 데이터 형식을 말하며, 다음과 같습니다. Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal(현재는 지원되지 않음), Date, String,(가변 길이 문자열), String * length(고정 길이 문자열), Object, Variant, 사용자 정의 형식 또는 개체 형식. 독립된 As type 절을 사용하여 각 변수를 선언합니다.
참고

Public 문을 사용하여 선언된 변수는 Option Private Module의 영향을 받지 않는 이상 모든 프로그램의 모든 모듈에 있는 모든 프로시저에서 사용이 가능합니다. Option Private Module이 선언된 경우 그 변수는 해당 프로젝트에서만 사용할 수 있습니다.

주의   Public 문은 클래스 모듈에서 고정 길이 문자열 변수를 선언하는  데 사용할 수 없습니다.

Public 문을 사용하여 변수의 데이터 형식을 선언합니다. 예를 들어 다음은 변수를 Integer로 선언하는 예입니다.

Public NumberOfEmployees As Integer

또한 Public 문을 사용하여 변수의 개체 형식을 선언할 수 있습니다. 다음은 변수를 새로운 워크시트 인스턴스로 선언하는 예입니다.

Public X As New Worksheet

만약 개체 변수를 선언할 때 New 키워드를 사용하지 않는다면 Set 문을 사용하여 존재하는 개체를 지정한 후 사용해야 합니다. 선언된 개체 변수는 개체가 지정되기 이전에는 Nothing이라는 특수한 값을 가지며, 이것은 그 개체 변수가 어떤 개체의 인스턴스도 참조하지 않음을 의미합니다.

빈 괄호와 함께 Public 문을 사용하여 동적 배열을 선언할 수 있습니다. 동적 배열을 선언한 후 프로시저에서 ReDim 문을 사용하여 차원과 배열 요소의 수를 정의합니다. 만약 Private, Public, 혹은 Dim 문과 함께 명시적으로 크기가 선언된 배열 변수의 차원을 재선언하려고 하면 오류가 발생합니다.

만약 데이터 형식이나 개체 형식을 지정하지 않거나 모듈에서 Deftype이 없다면 변수는 기본적으로 Variant입니다.

변수가 초기화될 때 숫자 변수는 0으로, 가변 길이 문자열은 길이가 0인 문자열("")로, 고정 길이 문자열은 0으로 채워져서 초기화됩니다. Variant 변수는 Empty로 초기화됩니다. 사용자 정의 형식 변수의 각 요소는 각 데이터 형식의 초기화에 따라 이루어집니다.


ReDim 문

프로시저 수준에서 동적 배열 변수의 저장 공간을 다시 할당합니다.

구문

ReDim [Preserve] varname(subscripts) [As type] [, varname(subscripts) [As type]] . . .

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

구성 요소	설명
Preserve	선택적인 요소. 배열의 마지막 차원의 길이를 변경할 때 이미 존재하는 자료를 보존도록 하는 키워드입니다.
varname	필수적인 요소. 변수 이름이며, 표준 변수 명명 규칙을 따릅니다.
subscripts	필수적인 요소. 배열 변수의 차원을 말하며, 60차원까지 선언이 가능합니다. subscripts 인수는 다음과 같은 구성 요소로 되어있습니다.
	[lower To] upper [,[lower To] upper] . . .
	lower 부분을 명시적으로 선언하지 않으면 배열의 최소 범위는 Option Base 문의 영향을 받습니다. Option Base 문이 없으면 최소 범위는 0입니다.
type	선택적인 요소. 변수의 데이터 형식을 말하며 다음과 같습니다. Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal(현재는 지원되지 않음), Date, String(가변 길이 문자열), String * length(고정 길이 문자열), Object, Variant, 사용자 정의 형식 또는 개체 형식. 독립된 As type 절을 사용하여 각 변수를 선언합니다. 배열을 포함하고 있는 Variant의 경우 type은 각 배열 요소의 형식을 말하며 Variant를 다른 데이터 형식으로 바꾸지는 않습니다.
참고

빈 괄호(차원의 아래 첨자 없음)와 함께 Private, Public 또는 Dim 문에 의해 이미 명시적으로 선언된 동적 배열의 크기를 지정 혹은 재확정하는 데 ReDim 문을 사용합니다.

배열 요소나 차원의 개수를 바꾸기 위해 ReDim을 여러 번 사용할 수 있습니다. 그러나 배열이 Variant가 아니라면 특정 데이터 형식의 배열을 ReDim을 사용하여 다른 데이터 형식으로 바꾸지 못합니다. 만약 배열이 Variant이고 어떠한 데이터 형식 변경도 허용하지 않는 Preserve 키워드를 사용하지 않는다면, 배열 요소의 형식은 As type 절을 사용하여 바꿀 수 있습니다.

Preserve 키워드를 사용하는 경우, 차원의 개수는 변경할 수 없고 배열의 마지막 차원의 크기만 변경할 수 있습니다. 예를 들어 1차원 배열일 경우 그 자체가 마지막 차원이므로 변경이 가능하지만, 2차원 또는 그 이상 차원의 배열일 경우 마지막 차원의 크기만을 변경할 수 있으며 배열의 내용을 유지할 수 있습니다. 다음 은 배열의 내용을 유지하면서 동적 배열의 마지막 차원의 크기를 증가시키는 방법을 보여주는 예입니다.

ReDim X(10, 10, 10)

. . .

ReDim Preserve X(10, 10, 15)

위와 같이, Preserve를 사용하면 배열의 최대 범위의 크기만을 바꿀 수 있으며 최소 범위를 바꿀 경우에는 오류가 발생합니다.

만약 배열을 이전 크기보다 작게 선언을 한다면 제외된 요소의 자료는 잃게 됩니다. 배열을 참조 형식으로 프로시저에 전달하면 그 프로시저 내에서는 배열의 차원을 바꿀 수 없습니다.

변수가 초기화될 때, 숫자 변수는 0으로, 가변 길이 문자열은 길이가 0인 문자열("")로, 고정 길이 문자열은 0으로 채워져서 초기화됩니다. Variant 변수는 Empty로 초기화됩니다. 사용자 정의 형식 변수의 각 요소는 각 데이터 형식의 초기화에 따라 이루어집니다. 개체를 참조하는 변수는 사용하기 전에 Set 문을 사용하여 존재하는 개체를 지정해야 합니다. 선언된 개체 변수는 개체가 지정되기 이전에는 Nothing이라는 특수한 값을 가지는데, 이것은 그 개체 변수가 어떤 개체의 인스턴스도 참조하지 않음을 의미합니다.

주의   선언한 변수가 모듈 수준이나 프로시저 수준에 없다면 ReDim 문은 선언의 역할을 합니다. 만약 같은 이름을 가진 다른 변수가 나중에 만들어지고 더 넓은 범위를 가졌더라도, ReDim은 나중에 선언된 변수를 참조합니다. 이 경우 Option Explicit의 영향을 받더라도 컴파일 오류가 발생하지 않습니다. 그런 충돌을 방지하기 위해서 ReDim을 선언문적인 구문에 사용하지 말고 단지 배열의 차원을 바꾸는 데만 사용해야 합니다.

메모   Variant 배열의 크기를 바꾸려면 먼저 변수를 명시적으로 Variant로 선언한 후 그 크기를 바꾸어야 합니다.


Rem 문

프로그램의 참고 사항을 설명하는 데 사용됩니다.

구문

Rem comment

다음과 같은 구문을 사용할 수 있습니다.

' comment

선택적인 요소인 comment 인수는 포함하고자 하는 모든 주석의 텍스트를 말합니다. Rem 키워드와 comment 사이에는 공백을 두어야 합니다.

참고

행 번호나 줄 레이블을 사용하면 GoTo나 GoSub 문에서 Rem 문이 있는 행으로 이동할 수 있고 Rem 문 이후 처음 만나는 실행 가능한 문에서 실행이 계속됩니다. Rem 문 앞에 다른 문이 있으면 : 기호를 사용하여 해당 문과 분리시킵니다.

Rem 키워드 대신 ' 기호를 사용할 수 있으며,  이 기호를 사용하면 다른 구문 뒤에 올 때 : 기호를 사용하지 않아도 됩니다.


Set 문

변수나 속성 등에 개체 참조를 지정합니다.

구문

Set objectvar = {[New] objectexpression | Nothing}

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

구성 요소	설명
objectvar	필수적인 요소. 변수나 속성의 이름이며, 표준 변수 명명 규칙을 따릅니다.
New	선택적인 요소. 암시적인 개체 작성을 가능하도록 선언하려면 New 키워드를 사용합니다. Set과 함께 사용하면 클래스의 새로운 인스턴스를 작성합니다. 이미 objectvar가 개체를 참조하고 있다면 새로운 개체가 할당되면서 그 참조는 해제됩니다. 기본 데이터 형식의 새로운 인스턴스를 만들거나 의존 개체를 만들 때는 New 키워드를 사용할 수 없습니다.
objectexpression	필수적인 요소. 개체 이름, 동일한 개체 형식으로 선언된 다른 변수 또는 동일한 개체 형식의 개체를 반환하는 함수 및 메서드로 구성된 식입니다.
Nothing	선택적인 요소. 특정 개체와 objectvar의 관계를 해제합니다. Objectvar에 Nothing을 지정하는 것은 어떤 변수도 그 개체를 참조하지 않을 때 이전에 참조된 개체에 연계된 모든 시스템과 메모리 리소스를 해제합니다.
참고

objectvar는 지정된 개체와 동일한 개체 형식이어야 유효합니다.

Dim, Private, Public, ReDim, 그리고 Static 문은 개체를 참조하는 변수를 선언할 뿐이며, Set 문으로 특정 개체를 지정한 후에야 실제 개체가 참조됩니다.

다음은 Form1 형식의 배열을 선언할 때 Dim의 사용 방법을 보여주는 예입니다. Form1의 인스턴스는 실제로 존재하지 않으며 Set 문은 myChildForms이라는 Form1의 새로운 인스턴스에게 참조를 지정합니다. 이런 종류의 코드는 MDI 응용프로그램에서 하위 폼을 만드는 데 사용됩니다.

Dim myChildForms(1 to 4) As Form1

Set myChildForms(1) = New Form1

Set myChildForms(2) = New Form1

Set myChildForms(3) = New Form1

Set myChildForms(4) = New Form1

일반적으로 Set을 사용하여 개체 참조를 변수에 할당할 때 그 변수에 개체가 복사되는 것이 아니고, 대신 개체 참조가 일어납니다. 하나 이상의 개체 변수는 같은 개체를 참조할 수 있습니다. 그러한 변수는 개체의 복사본이 아니라 참조이기 때문에 그 개체에 대한 변화는 그것을 참조하는 모든 변수에 반영이 됩니다. 그러나 New 키워드와 함께 Set 문을 사용하면 개체의 실제적인 인스턴스가 만들어집니다.


Static 문

변수를 선언하고 저장 공간을 할당하기 위해 프로시저 수준에서 사용합니다. Static 문과 함께 선언된 변수는 코드가 실행되는 동안 그 값을 유지합니다.

구문

Static varname[([subscripts])] [As [New] type] [, varname[([subscripts])] [As [New] type]] . . .

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

구성 요소	설명
varname	필수적인 요소. 변수 이름이며 표준 변수 명명 규칙을 따릅니다.
subscripts	선택적인 요소. 배열 변수의 차원을 말하며, 60차원까지 선언이 가능합니다. Subscripts 인수는 다음과 같은 구성 요소로 되어 있습니다.
	[lower To] upper [,[lower To] upper] . . .
	lower 부분을 명시적으로 선언하지 않으면, 배열의 최소 범위는 Option Base 문의 영향을 받습니다. Option Base 문이 없으면 최소 범위는 0입니다.
New	선택적인 요소. 개체가 함축적으로 작성됨을 알려주는 키워드입니다. 개체 변수를 선언할 때 New를 사용하는 경우 변수를 최초 참조할 때 개체 인스턴스가 작성되므로, 다시 Set 문을 써서 그 개체 참조를 할당할 필요가 없습니다. New는 기본 데이터 형식이나 의존 개체 인스턴스를 선언하는 데 사용할 수 없습니다.
type	선택적인 요소. 변수의 데이터 형식을 말하며, 다음과 같습니다. Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal(현재는 지원 안함), Date, String,(가변 길이 문자열), String * length(고정 길이 문자열), Object, Variant, 사용자 정의 형식이나 개체 형식입니다. 독립된 As type 절을 사용하여 각 변수를 선언합니다.
참고

일단 모듈 코드가 실행되면 Static 문과 함께 선언된 변수는 모듈이 초기화하거나 다시 시작할 때까지 그 값을 유지합니다. 비정형 프로시저에 Static 문을 사용하면 프로시저 내의 모든 변수를 그 프로시저가 정의된 모듈과 같은 수명을 갖도록 명시적으로 선언할 수 있습니다.

프로시저에서 Static 문을 사용하면 프로시저를 호출할 때 그 값을 유지하는 변수를 선언할 수 있습니다. 예를 들어 다음은 고정 길이 정수 배열을 선언하는 예입니다.

Static EmployeeNumber(200) As Integer

다음은 워크시트의 새로운 인스턴스 변수를 선언하는 예입니다.

Static X As New Worksheet

개체 변수를 선언할 때 New 키워드를 사용하지 않으면 개체를 참조하는 변수를 사용하기 전에 Set 문을 사용하여 존재하는 개체를 지정해야 합니다. 개체를 할당하지 않으면 선언된 개체 변수는 Nothing이라는 특수한 값을 가지며, 어떠한 개체 인스턴스도 참조하지 않는다는 것을 나타냅니다. 선언할 때 New 키워드를 사용한다면 개체를 처음 참조할 때 개체 인스턴스가 만들어집니다.

만약 데이터 형식이나 개체 형식을 지정하지 않고, 모듈에 Deftype 문이 없다면 변수는 기본적으로 Variant가 됩니다.

메모   Static 문과 Static 키워드는 유사하지만 다른 목적으로 사용합니다. 만약 프로시저를 Static 키워드를 사용하여 선언하면 (Static Sub CountSales ()), 프로시저 내의 모든 지역 변수의 저장 공간은 한번 할당되고 변수의 값은 프로그램이 실행되는 동안 유지됩니다. 비정적 프로시저의 경우 변수의 저장 공간은 프로시저가 호출될 때마다 할당되고 프로시저가 종료될 때 해제됩니다. Static 문은 비정적 프로시저 내의 특정 변수를 선언할 때 사용하며 변수의 값은 프로그램이 실행되는 동안 유지됩니다.

변수가 초기화될 때, 숫자 변수는 0으로, 가변 길이 문자열은 길이가 0인 문자열("")로, 고정 길이 문자열은 0으로 채워져서 초기화됩니다. Variant 변수는 Empty로 초기화됩니다. 사용자 정의 형식 변수의 각 요소는 각 데이터 형식의 초기화에 따라 이루어집니다.

메모   프로시저에서 Static 문을 사용할 때에는 프로시저의 앞부분에 위치시켜 다른 선언 문(Dim)보다 먼저 사용해야 합니다.


Sub 문

이름, 인수, 그리고 코드를 선언하여 Sub 프로시저의 형태를 형성합니다.

구문

[Private | Public | Friend] [Static] Sub name [(arglist)]
[statements]
[Exit Sub]
[statements]

End Sub

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

구성 요소	설명
Public	선택적인 요소. 모듈내의 모든 프로시저에서 해당 Sub 프로시저를 호출할 수 있음을 나타냅니다. 만약 Option Private 문이 있는 모듈에서 사용한다면 그 프로시저를 프로젝트 외부에서 호출할 수 없습니다.
Private	선택적인 요소. Sub 프로시저는 선언된 모듈 내의 다른 프로시저에서만 호출할 수 있음을 나타냅니다.
Friend	선택적인 요소. 클래스 모듈에서만 사용됩니다. Sub 프로시저가 프로젝트 전체에서 인식되지만 개체의 인스턴스 컨트롤러에서는 인식될 수 없음을 나타냅니다.
Static	선택적인 요소. Sub 프로시저의 지역 변수가 함수 호출마다 유지됨을 나타냅니다. 프로시저에서 사용되어도 Sub 밖에서 선언된 변수는 Static 속성을 갖지 못합니다.
name	필수적인 요소. Sub 이름이며, 표준 변수 명명 규칙을 따릅니다.
arglist	선택적인 요소. 호출될 때 Sub 프로시저에게 전달되는 인수를 나타내는 변수 목록입니다. 다수의 변수일 경우 콤마(,) 기호로 분리합니다.
statements	선택적인 요소. Sub 프로시저에서 실행되는 문의 집합입니다.
arglist 인수는 다음과 같은 구성 요소로 되어 있습니다.

[Optional] [ByVal | ByRef] [ParamArray] varname[( )] [As type] [= defaultvalue]

구성 요소	설명
Optional	선택적인 요소. 인수가 필수가 아님을 나타내는 키워드입니다. Optional을 사용하면 arglist에 사용된 인수는 모두 선택 사항이며 Optional 키워드를 사용하여 선언해야 합니다. 모든 Optional 인수는 Variant이어야 하며 Optional은 ParamArray와 함께 사용할 수 없습니다.
ByVal	선택적인 요소. 인수가 값에 의한 전달임을 나타냅니다.
ByRef	선택적인 요소. 인수가 참조에 의한 전달임을 나타냅니다. Visual Basic에서는 ByRef가 기본값입니다.
ParamArray	선택적인 요소. arglist에서 마지막 인수로 사용되며 마지막 인수가 Variant 요소의 Optional 배열임을 나타냅니다. ParamArray 키워드를 사용하면 임의 개수의 인수들을 사용할 수 있으며, ByVal, ByRef 또는 Optional과 함께 사용할 수 없습니다.
varname	필수적인 요소. 인수를 나타내는 변수의 이름을 말하며 표준 변수 명명 규칙을 따릅니다.
type	선택적인 요소. 프로시저에 전달되는 인수의 데이터 형식을 말하며 다음과 같습니다. Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal(현재는 지원 안함), Date, String(가변 길이 문자열만 가능), Object, Variant매개 변수가 Optional이 아니면, 사용자 정의 형식과 개체 형식을 지정할 수도 있습니다.
defaultvalue	선택적인 요소. 상수 혹은 상수 식이며, Optional 매개 변수일 경우만 유효합니다. Object 형식일 경우 명시적인 기본값으로는 Nothing만 가능합니다.
참고

Public, Private, Friend 등을 사용하여 명시적으로 지정하지 않은 경우, Sub 프로시저의 기본값은 public입니다. Static으로 변수를 선언 하지 않은 경우에는 프로그램간 호출 시 지역 변수값은 보전되지 않습니다. Friend 키워드는 클래스 모듈에서만 사용될 수 있지만, 프로젝트의 모든 모듈에 있는 모든 프로시저에 의해 액세스될 수 있습니다. Friend 프로시저는 그 상위 클래스의 형식 라이브러리에서도 인식되지 않으며, Friend 프로시저가 마지막 범위값이 될 수도 없습니다.

주의   Sub 프로시저는 순환할 수 있습니다. 즉, 주어진 업무를 수행하기 위하여 자신을 호출하는 것을 말하는데, 이 경우 스택 오버 플로우가 발생할 수 있습니다. 일반적으로 Static 키워드는 순환적인 Sub 프로시저와는 함께 사용하지 않습니다.

모든 실행 가능한 코드는 프로시저에 있어야 하고, Sub, Function, 혹은 Property 프로시저에서 다른 Sub 프로시저를 정의할 수 없습니다.

Exit Sub 문은 현재의 Sub 프로시저로부터 바로 빠져나갈 때 사용하며, 프로그램은 Sub 프로시저를 호출한 바로 다음의 문을 실행하게 됩니다. Exit Sub 문은 Sub 프로시저의 모든 곳에서 횟수에 상관없이 사용할 수 있습니다.

Function 프로시저와 같이, Sub 프로시저도 인수를 가지는 독립된 프로시저이며, 연속된 문을 수행하고, 그 인수의 값을 변경합니다. 그러나 값을 반환하는 Function 프로시저와는 달리 Sub 프로시저를 식에서 사용할 수는 없습니다.

프로시저의 이름을 인수 목록과 함께 사용하여 Sub 프로시저를 호출합니다. Sub 프로시저 호출에 대한 자세한 방법은 Call 문을 참고하십시요.

Sub 프로시저에 사용하는 변수는 프로시저에서 명시적으로 선언하는 변수와 선언하지 않은 변수로 구분됩니다. 프로시저에서 Dim 문을 사용하여 명시적으로 선언하는 변수는 항상 프로시저에서 지역적으로 사용됩니다. 프로시저에서 사용하지만 명시적으로 선언하지 않는 변수는 프로시저 밖의 상위 수준에서 선언하지 않은 경우에만 지역적으로 사용됩니다.

주의   프로시저에 명시적으로 선언하지 않은 변수는 프로시저에서 사용할 수 있으나, 모듈 수준에서 정의한 것과 이름이 동일한 경우 충돌할 수도 있습니다. 프로시저가 또 다른 프로시저나 상수, 변수와 이름이 같으며 명시적으로 선언되지 않은 변수를 참조하는 경우 해당 프로시저의 모듈 수준 이름을 참조하는 것으로 간주합니다. 변수를 명시적으로 선언할 때에는 Option Explicit 문을 사용합니다.

메모   Sub 프로시저를 시작하거나 종료하기 위해서 GoSub, GoTo, 혹은 Return을 사용할 수 없습니다.


Type 문

모듈 수준에서 하나 혹은 그 이상의 요소를 포함한 사용자 정의 데이터 형식을 선언하는 데 사용합니다.

구문

[Private | Public] Type varname
 elementname [([subscripts])] As type
[elementname [([subscripts])] As type]
. . .

End Type

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

구성 요소	설명
Public	선택적인 요소. 사용자 정의 형식을 선언하는 데 사용하며, 모든 프로시저, 모듈, 프로젝트에서 사용할 수 있습니다.
Private	선택적인 요소. 선언한 모듈에서만 사용할 수 있는 사용자 정의 형식을 선언하는 데 사용합니다.
varname	필수적인 요소. 사용자 정의 형식의 이름이며 표준 변수 명명 규칙을 따릅니다.
elementname	필수적인 요소. 사용자 정의 형식의 각 요소 이름이며 표준 변수 명명 규칙을 따르지만, 키워드를 사용할 수 있습니다.
subscripts	lower 부분을 명시적으로 선언하지 않으면 배열의 최소 범위는 Option Base 문의 영향을 받습니다. Option Base 문이 없으면 최소 범위는 0입니다.
type	필수적인 요소. 요소의 데이터 형식을 말하며 다음과 같습니다. Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal(현재는 지원 안함), Date, String(가변 길이 문자열), String * length (고정 길이 문자열), Object, Variant, 사용자 정의 형식, 개체 형식.
참고

Type 문은 모듈 수준에서만 사용할 수 있습니다. 일단 Type 문을 사용하여 사용자 정의 형식을 선언하면 선언된 범위에서는 그 데이터 형식의 변수를 선언할 수 있습니다. 사용자 정의 형식 변수 선언은 Dim, Private, Public, ReDim, 혹은 Static을 사용합니다.

표준 모듈과 클래스 모듈에서 사용자 정의 형식은 기본적으로 public이 사용됩니다. Private 키워드를 사용하면 인식 범위를 변경할 수 있습니다.

행 번호와 줄 레이블은 Type...End Type 블럭에서는 사용할 수 없습니다.

사용자 정의 형식은 종종 데이터 레코드와 함께 사용되며, 그것은 연관된 다른 데이터 형식들로 이루어져 있습니다.

다음은 사용자 정의 형식 고정 길이 배열의 사용법을 보여주는 예입니다.

Type StateData

CityCode (1 To 100) As Integer	' 정적 배열을 선언합니다.

County As String * 30

End Type

Dim Washington(1 To 100) As StateData

위의 예제에서 StateData는 CityCode라는 정적 배열을 가지며, Washington 레코드는 StateData와 같은 구조를 가집니다.

사용자 정의 형식으로 고정 길이 배열을 선언하는 경우, 그 차원은 반드시 변수가 아닌 숫자나 상수를 사용해야 합니다.


UBound 함수

배열에서 지정된 차원의 최대 범위를 Long으로 반환합니다.

구문

UBound(arrayname[, dimension])

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

구성 요소	설명
arrayname	필수적인 요소. 배열 변수의 이름을 말하며, 표준 변수 명명 규칙을 따릅니다.
dimension	선택적인 요소. Variant(Long)가 가능합니다. 어느 차원의 최대 범위가 반환되는 지를 나타냅니다. 1은 1차원을 나타내고, 2는 2차원을 나타냅니다. Dimension을 생략하면 1차원을 의미합니다.
참고

UBound 함수와 함께 LBound 함수를 사용하면 배열의 크기를 알 수 있는데, LBound 함수는 배열 차원의 최소 범위를 반환합니다.

UBound 함수를 사용하여 다음과 같은 값을 얻을 수 있습니다.

Dim A(1 To 100, 0 To 3, -3 To 4)

문	반환값
UBound(A, 1)	100
UBound(A, 2)	3
UBound(A, 3)	4


Array 함수 예제

아래 예제에서는Array 함수를 사용하여 배열을 포함하는 Variant를 반환합니다.

Dim MyWeek, MyDay

MyWeek = Array("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")

' 하위 제한 범위가 1로 지정되었다고 가정한 값을 반환합니다.

' (Option Base 문 사용)

MyDay = MyWeek(2)	' MyDay가 "Tue"를 포함하고 있습니다.

MyDay = MyWeek(4)	' MyDay가 "Thu"를 포함하고 있습니다.


Const 문 예제

아래 예제에서는Const 문을 사용하여 문자 값 대신 사용하기 위한 상수를 선언합니다. Public 상수는 클래스 모듈보다는 표준 모듈의 일반 부분에서 선언합니다. Private 상수는 모든 형식의 일반 부분 모듈에서 선언합니다.

' 상수는 기본값으로 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


CreateObject 함수 예제

아래 예제에서는CreateObject 함수를 사용하여 Microsoft Excel에 대한 참조(xlApp)를 지정합니다. Microsoft Excel의 Visible 속성에 액세스하기 위해 이 참조를 사용하며 Microsoft Excel의 Quit 메서드를 사용하여 닫습니다. 최종적으로 참조는 해제됩니다.

Dim xlApp As Object	' 참조를 사용하기 위한 변수를 선언합니다.

Set xlApp = CreateObject("excel.application")

' 사용자가 응용 프로그램을 보길 원하는 경우,

' Visible 속성을 True로 지정할 수도 있습니다.

xlApp.Visible = True

' xlApp을 사용하여 Microsoft Excel의

' 다른 개체와 액세스합니다.

xlApp.Quit	' 사용자가 종료할 때, Quit 메서드를 사용하여

Set xlApp = Nothing	' 응용 프로그램을 종료한 후 참조를 해제합니다.


Declare 문 예제

아래 예제에서는Declare 문이 표준 모듈의 모듈 수준에서 어떻게 사용되어 동적 연결 라이브러리 (DLL)의 외부 프로시저에 참조를 선언하는지 보여줍니다. 만일 Declare 문이 Private이면 사용자는 클래스 모듈에 Declare 문을 배치할 수 있습니다.

' Microsoft Windows(16비트) 경우

Declare Sub MessageBeep Lib "User" (ByVal N As Integer)

' SomeBeep를 프로시저 이름에 대한 다른 이름으로 가정합니다.

Declare Sub MessageBeep Lib "User" Alias "SomeBeep"(ByVal N As Integer)

' 다른 이름 절에서 서수를 사용하여 GetWinFlags를 호출합니다.

Declare Function GetWinFlags Lib "Kernel" Alias "#132"() As Long

' 32비트 Microsoft Windows 시스템에서는 USER.DLL보다는 라이브러리 USER32.DLL을 지정합니다.

' 사용자는 조건부 컴파일을 사용하여

' Win32 또는 Win16 중 하나에서 실행할 수 있는 코드를 작성할 수 있습니다.

#If Win32 Then

Declare Sub MessageBeep Lib "User32" (ByVal N As Long)

#Else

Declare Sub MessageBeep Lib "User" (ByVal N As Integer)

#End If


Deftype 문 예제

아래 예제에서는 지정된 문자로 시작하는 이름을 가진 변수의 기본 데이터 형식과 함수 프로시저를 지정하기 위해 다양한 Deftype 문을 예시하고 있습니다. 기본 데이터 형식은 Dim 문을 사용하여 명시적으로 지정하는 경우에 의해서만 무효화될 수 있습니다. Deftype 문은 모듈 수준(즉, 프로시저 내에서는 사용할 수 없는)에서만 사용될 수 있습니다.

' A부터 K까지의 문자로 시작되는 변수 이름은 기본으로 정수입니다.

DefInt A-K

' L부터 Z까지의 문자로 시작하는 변수 이름은 기본으로 문자열입니다.

DefStr L-Z

CalcVar = 4	' 정수를 초기화합니다.

StringVar = "Hello there"	' 문자열을 초기화합니다.

AnyVar = "Hello" 	' "형식 불일치" 오류를 유발합니다.

Dim Calc As Double	'형식을 Double로 명확하게 지정합니다.

Calc = 2.3455	' Double을 할당합니다.

' Deftype 문 역시 함수 프로시저를 적용합니다.

CalcNum = ATestFunction(4)	' 사용자 정의 함수를 호출합니다.

' ATestFunction 함수 프로시저 정의입니다.

Function ATestFunction(INumber)

ATestFunction = INumber * 2	' 정수값을 반환합니다.

End Function


Dim 문 예제

아래 예제에서는Dim 문이 변수를 선언하는 데 사용하는 것을 보여줍니다. 또한 배열을 선언하는데 사용중인 Dim 문을 보여줍니다. 배열 아래 첨자에 대한 하위 제한 범위의 기본값은 0이며 Option Base 문을 사용하는 모듈 수준에서 무효화될 수 있습니다.

' AnyValue와 MyValue가 Empty로 지정된 기본값에 의해

' Variant로 선언됩니다.

Dim AnyValue, MyValue

' 변수 형식을 명확하게 정수로 선언합니다.

Dim Number As Integer

' 단일한 행에 대한 다중 선언입니다.

' AnotherVar는 형식이 생략되기 때문에 형식 Variant입니다.

Dim AnotherVar, Choice As Boolean, BirthDate As Date

' DayArray는 0에서 50까지의 51개 요소를 가진 Variant의 인덱스된 배열이며,

' 현재 모듈에 대해

' 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()


Enum 문 예제

아래 예제에서는 명명된 상수의 컬렉션을 정의하는데 사용하는 Enum 문을 보여줍니다. 이 경우 상수는 데이터베이스의 데이터 항목 폼을 디자인하는 색상으로 사용할 수 있습니다.

Public Enum InterfaceColors

icMistyRose = &HE1E4FF&

icSlateGray = &H908070&

icDodgerBlue = &HFF901E&

icDeepSkyBlue = &HFFBF00&

icSpringGreen = &H7FFF00&

icForestGreen = &H228B22&

icGoldenrod = &H20A5DA&

icFirebrick = &H2222B2&

End Enum


Erase 문 예제

아래 예제에서는Erase 문을 사용하여 고정 크기 배열의 요소를 다시 초기화하고 동적 배열 저장 공간을 재할당합니다.

' 배열 변수를 선언합니다.

Dim NumArray(10) As Integer	' 정수 배열입니다.

Dim StrVarArray(10) As String	' 변수 문자열 배열입니다.

Dim StrFixArray(10) As String * 10	' 고정 문자열 배열입니다.

Dim VarArray(10) As Variant	' Variant 배열입니다.

Dim DynamicArray() As Integer	' 동적 배열입니다.

ReDim DynamicArray(10)	' 저장 공간을 할당합니다.

Erase NumArray	' 0으로 지정된 각 요소입니다.

Erase StrVarArray	' 길이가 0인 문자열 ("")로 지정된 각 요소입니다.

Erase StrFixArray	' 0으로 지정된 각 요소입니다.

Erase VarArray	' Empty로 지정된 각 요소입니다.

Erase DynamicArray	' 배열에 의해 사용되는 빈 메모리입니다.


Event 문 예제

아래 예제에서는이벤트를 사용하여 100 미터 최고 기록 경주가 진행되는 동안 초 단위의 시간을 측정합니다. 아래 코드는 Event 문과 모든 이벤트 관련 메서드, 속성, 명령문을 보여줍니다.

이벤트를 발생하는 클래스는 이벤트 소스(source)이고 이벤트를 실행하는 클래스는 싱크(sink)입니다. 이벤트 소스는 이벤트가 생성하는 여러 개의 싱크들을 가질 수 있습니다. 클래스가 이벤트를 생성할 때 개체의 인스턴스를 위해 이벤트를 받도록 선택된 모든 클래스에서 이벤트가 발생합니다.

아래 예제에서는 또한 단추(Command1)가 있는 폼(Form1)과 레이블(Label1) 그리고 두 개의 입력란(Text1과 Text2)를 사용합니다. 단추를 누르면 Text1이 "시작"을 표시하고 Text2가 초 단위 시간 측정을 시작합니다. 시간이 풀 타임(9.84초)까지 경과하면 Text1이 "완료"를 표시하고 Text2가 9.84를 기록합니다.

Form1 코드는 폼의 초기와 마지막 상태를 지정합니다. 이 코드에는 이벤트가 발생할 때 실행되는 코드가 포함됩니다.

Option Explicit

Private WithEvents mText As TimerState

Private Sub Command1_Click()

Text1.Text = "시작"

    Text1.Refresh

    Text2.Text = "0"

    Text2.Refresh

Call mText.TimerTask(9.84)

End Sub

Private Sub Form_Load()

    Command1.Caption = "시작 타이머를 누르십시오"

    Text1.Text = ""

    Text2.Text = ""

    Label1.Caption = "100미터 최고 기록 경주의 경과 시간:"

    Set mText = New TimerState

    End Sub

Private Sub mText_ChangeText()

    Text1.Text = "완료"

    Text2.Text = "9.84"

End Sub

Private Sub mText_UpdateTime(ByVal dblJump As Double)

    Text2.Text = Str(Format(dblJump, "0"))

    DoEvents

End Sub

나머지 코드는 TimerState라는 클래스 모듈에 있습니다. Event 문은 이벤트가 발생할 때 초기화된 프로시저를 선언합니다.

Option Explicit

Public Event UpdateTime(ByVal dblJump As Double)

Public Event ChangeText()

Public Sub TimerTask(ByVal Duration As Double)

    Dim dblStart As Double

    Dim dblSecond As Double

    Dim dblSoFar As Double

    dblStart = Timer

    dblSoFar = dblStart

    Do While Timer < dblStart + Duration

        If Timer - dblSoFar >= 1 Then

            dblSoFar = dblSoFar + 1

            RaiseEvent UpdateTime(Timer - dblStart)

        End If

    Loop

    RaiseEvent ChangeText

End Sub


Function 문 예제

아래 예제에서는Function 문을 사용하여 Function 프로시저를 형성하는 이름, 인수, 코드를 선언합니다. 마지막 예제는 하드 형식이며 초기화된 Optional 인수를 사용합니다.

' 다음의 사용자 정의 함수는

' 전달된 인수의 제곱근을 반환합니다.

Function CalculateSquareRoot(NumberArg As Double) As Double

If NumberArg < 0 Then	' 인수를 계산합니다.

Exit Function	' 프로시저 호출을 종료합니다.

Else

CalculateSquareRoot = Sqr(NumberArg)	' 제곱근을 반환합니다.

End If

End Function

ParamArray 키워드를 사용하면 함수가 가변하는 인수값을 받아들일 수 있습니다. 아래 정의에서는 FirstArg가 값에 의해 전달됩니다.

Function CalcSum(ByVal FirstArg As Integer, ParamArray OtherArgs())

Dim ReturnValue

' 함수가 다음과 같이 호출됐을 경우

ReturnValue = CalcSum(4, 3 ,2 ,1)

' 지역 변수가 arrays = 1에 대한 기본 하위 제한 범위를 가정한 후

' 다음과 같은 값으로 지정되었습니다.

' FirstArg = 4, OtherArgs(1) = 3, OtherArgs(2) = 2, 등등

Optional 인수는 Variant과 다른 기본값과 형식을 가질 수 있습니다.

' 함수의 인수가 다음과 같이 정의되었을 경우

Function MyFunc(MyStr As String, Optional MyArg1 As _ Integer = 5, Optional MyArg2 = "Dolly")

Dim RetVal

' 함수는 다음과 같이 호출할 수 있습니다.

RetVal = MyFunc("Hello", 2, "World")	' 세개의 인수 모두가 지원됩니다.

RetVal = MyFunc("Test", , 5)	' 두번째 인수가 생략됩니다.

' 명명된 인수를 사용하는 첫번째 인수와 세번째 인수입니다.

RetVal = MyFunc(MyStr:="Hello ", MyArg1:=7)


GetObject 함수 예제

아래 예제에서는GetObject 함수를 사용하여 지정한 Microsoft Excel 워크시트 (MyXL)에 대한 참조를 보여 줍니다. 워크시트의 Application 속성을 사용하여 Microsoft Excel을 실행하거나, 종료합니다. GetObject에 대한 첫 번째 호출은 Microsoft Excel이 아직 실행 중이지 않으면 오류를 유발합니다. 예제에서, 오류는 ExcelWasNotRunning 플래그가 True로 지정되게 합니다. GetObject에 대한 두 번째 호출은 파일이 열리도록 지정합니다. Microsoft Excel이 아직 실행 중이지 않으면 이 두 번째 호출은 시작되고 지정된 파일이 나타내는 워크시트에 대한 참조를 반환합니다. 예제에서 지정된 파일인 mytest.xls는 반드시 지정된 위치에 있어야 합니다. 그렇지 않으면 Visual Basic 자동 오류가 발생합니다. 다음 예제 코드는 Microsoft Excel과 지정된 워크시트 표시를 포함하는 창을 만듭니다. 마지막으로, Microsoft Excel 실행의 이전 버전이 없다면 코드는 Application 개체의 Quit 메서드를 사용하여 Microsoft Excel을 닫습니다. 만일 응용 프로그램이 이미 수행 중이면 닫기 작업은 실패도 돌아갑니다. 자체 참조는 Nothing으로 지정되어 해제됩니다.

' 필수 API 루틴을 선언합니다.

Declare Function FindWindow Lib "user32" Alias _

"FindWindowA" (ByVal lpClassName as String, _

ByVal lpWindowName As Long) As Long

Declare Function SendMessage Lib "user32" Alias _

"SendMessageA" (ByVal hWnd as Long,ByVal wMsg as Long _

ByVal wParam as Long _

ByVal lParam As Long) As Long

Sub GetExcel()

Dim MyXL As Object	' Microsoft Excel에 대한 참조를

'위한 변수입니다.

Dim ExcelWasNotRunning As Boolean	' 최종 해제에 대한 플래그입니다.

' 이미 실행 중인 Microsoft Excel의 복사본이 있는지 알기위해 검사합니다.

On Error Resume Next	' 오류 잡기를 확인합니다.

' 첫번째 인수를 사용하지 않고 호출된 Getobject 함수가

' 응용 프로그램의 인스턴스에 대한 참조를 반환합니다.

' 만약 응용 프로그램이 실행 중이 아니면 오류가 발생합니다.

Set MyXL = Getobject(, "Excel.Application")

If Err.Number <> 0 Then ExcelWasNotRunning = True

Err.Clear	' 오류가 발생할 경우 Err 개체를 삭제합니다.

' Microsoft Excel을 조사합니다. 만약 Microsoft Excel이 실행 중이라면

' 실행 중인 개체 테이블로 들어갑니다.

DetectExcel

' 개체 변수를 지정하여 사용자가 보고자 하는 파일을 참조합니다.

Set MyXL = Getobject("c:\vb4\MYTEST.XLS")

'응용 프로그램의 속성을 통해 Microsoft Excel을 보여줍니다.

' 그 후 MyXL 개체 참조의 Windows 컬렉션을 사용하여

' 파일을 포함하는 실제창을 보여줍니다.

MyXL.Application.Visible = True

MyXL.Parent.Windows(1).Visible = True

' 여기서 사용자 파일을 수정합니다.

' ...

' 사용자가 시작하였을 때 Microsoft Excel의 이 복사본이 이미 실행 중이지 않을 경우,

' 응용 프로그램 속성의 Quit 메서드를 사용하여 닫습니다.

' 사용자가 Microsoft Excel의 종료를 시도할 때,

' Microsoft Excel 제목 표시행이 깜빡이고 사용자가 읽어들인 파일을 저장하기 원하는지 묻는

' 메시지가 화면에 나타납니다.

If ExcelWasNotRunning = True Then

MyXL.Application.Quit

End IF

Set MyXL = Nothing	' 응용 프로그램과 스프래드시트에 대한 참조를 해제합니다.

End Sub

Sub DetectExcel()

' 실행 중인 Excel을 감지하여 등록시킵니다.

Const WM_USER = 1024

Dim hWnd As Long

' 만일 Excel이 실행 중이면 API 호출은 수행을 되돌립니다.

hWnd = FindWindow("XLMAIN", 0)

If hWnd = 0 Then	' 0이면 Excel이 실행 중이 아닙니다.

Exit Sub

Else

'실행 중인 Excel SendMessage API 함수를 사용하여 실행 중인 Excel 개체에 들어갑니다.

SendMessage hWnd, WM_USER + 18, 0, 0

End If

End Sub


Implements 문 예제

아래 예제에서는Implements 문을 사용하여 다중 클래스에서 사용 가능한 선언 집합을 작성하는 방법을 보여줍니다. Implements 문으로 작성된 선언을 공유하면 어느 클래스도 그 자체로 선언을 작성할 필요가 없습니다.

다음과 같은 두 개의 폼이 있다고 가정해 봅시다. Selector 폼에는 Customer Data와 Supplier Data 두개의 단추가 있습니다. 고객과 공급자의 이름과 주소를 입력하려면 Selector 폼에 있는 Customer 단추나 Supplier 단추를 누른 후 Name 필드와 Address 필드를 가진 Data Entry 폼을 사용하여 이름과 주소를 입력합니다.

공유된 선언에 대한 아래의 코드는 PersonalData라는 클래스 모듈에 있습니다.

Public Name As String

Public Address As String

고객 데이터를 지원하는 코드는 Customer라는 클래스 모듈에 있습니다.

Implements PersonalData

Private Property Get PersonalData_Address() As String

PersonalData_Address = "CustomerAddress"

End Property

Private Property Let PersonalData_Address(ByVal RHS As String)

'

End Property

Private Property Let PersonalData_Name(ByVal RHS As String)

'

End Property

Private Property Get PersonalData_Name() As String

PersonalData_Name = "CustomerName"

End Property

공급자 데이터를 지원하는 코드는 Supplier라는 클래스 모듈에 있습니다.

Implements PersonalData

Private Property Get PersonalData_Address() As String

PersonalData_Address = "SupplierAddress"

End Property

Private Property Let PersonalData_Address(ByVal RHS As String)

'

End Property

Private Property Let PersonalData_Name(ByVal RHS As String)

'

End Property

Private Property Get PersonalData_Name() As String

PersonalData_Name = "SupplierName"

End Property

아래 코드는 Selector 폼을 지원합니다.

Private cust As New Customer

Private sup As New Supplier

Private Sub Command1_Click()

Dim frm2 As New Form2

    Set frm2.PD = cust

    frm2.Show 1

End Sub

Private Sub Command2_Click()

Dim frm2 As New Form2

    Set frm2.PD = sup

    frm2.Show 1

End Sub

아래 코드는 Data Entry 폼을 지원합니다.

Private m_pd As PersonalData

Private Sub Form_Load()

    With m_pd

        Text1 = .Name

        Text2 = .Address

    End With

End Sub

Public Property Set PD(Data As PersonalData)

    Set m_pd = Data

End Property


LBound 함수 예제

아래 예제에서는LBound 함수를 사용하여 배열의 지시된 차원에 대한 가장 작은 사용 가능한 아래 첨자를 결정합니다. Option Base 문을 사용하면 기본 기준 배열 아래 첨자 값인 0을 무효화할 수 있습니다.

Dim Lower

Dim MyArray(1 To 10, 5 To 15, 10 To 20) 	' 변수를 선언합니다.

Dim AnyArray(10)

Lower = Lbound(MyArray, 1) 	' 1을 반환합니다.

Lower = Lbound(MyArray, 3)	' 10을 반환합니다.

Lower = Lbound(AnyArray)	' 옵션 기본의 지정에 따라

' 0 또는 1을 반환합니다.


Let 문 예제

아래 예제에서는 명시적인 Let 문을 사용하는 변수에 식의 값을 할당합니다.

Dim MyStr, MyInt

' 다음의 변수 지정은 Let 문을 사용합니다.

Let MyStr = "Hello World"

Let MyInt = 5

다음은 Let 문을 사용하지 않고 동일한 할당을 하는 예입니다.

Dim MyStr, MyInt

MyStr = "Hello World"

MyInt = 5


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을 반환합니다.


Option Compare 문 예제

아래 예제에서는Option Compare 문을 사용하여 기본 문자열 비교 메서드를 지정합니다. Option Compare 문은 모듈 수준에서만 사용됩니다.

' 문자열 비교 메서드를 이진법으로 지정합니다.

Option compare Binary 	' 즉, "AAA"는 "aaa"보다 작습니다.

' 문자열 비교 메서드를 텍스트로 지정합니다.

Option compare Text	' 즉, "AAA"는 "aaa"와 같습니다.


Option Explicit 문 예제

아래 예제에서는 Option Explicit 문을 사용하여 사용자가 명시적으로 모든 변수를 선언하도록 합니다. 선언되지 않은 변수를 사용하려고 하면 컴파일시에 오류가 발생합니다. Option Explicit 문은 모듈 수준에서만 사용됩니다.

Option explicit	' 강제로 explicit 변수 선언을 합니다.

Dim MyVar	' 변수를 선언합니다.

MyInt = 10	' 선언되지 않은 변수는 오류를 유발합니다.

MyVar = 10	' 선언된 변수는 오류를 유발하지 않습니다.


Option Private 문 예제

아래 예제에서는 모듈 수준에서 사용되어 전체 모듈이 전용이라는 것을 지시하는 Option Private 문을 설명합니다. Option Private Module이 사용되면 Private으로 선언되지 않은 모듈 수준 부분은 프로젝트 내의 다른 모듈에 사용 가능합니다. 그러나 다른 프로젝트나 응용 프로그램에는 사용하지 못합니다.

Option private Module	' 모듈이 전용임을 지시합니다.


Private 문 예제

아래 예제에서는 모듈 수준에서 사용 중인 Private 문이 변수를 전용으로 선언하는 것을 보여줍니다. 즉, 선언되는 모듈에서만 사용 가능합니다.

Private Number As Integer	' Private Integer 변수입니다.

Private NameArray(1 To 5) As String	' 전용 배열 변수입니다.

' 다중 선언, 두개의 Variant와 한개의 정수, 모두 전용입니다.

Private MyVar, YourVar, ThisVar As Integer


Property Get 문 예제

아래 예제에서는Property Get 문을 사용하여 속성 값을 가져오는 속성 프로시저를 정의합니다. 이 속성은 현재 펜의 색을 문자열로 지정합니다.

Dim CurrentColor As Integer

Const BLACK = 0, RED = 1, GREEN = 2, BLUE = 3

' 펜의 현재 색을 문자열로 반환합니다.

Property Get PenColor() As String

Select Case CurrentColor

Case RED

PenColor = "Red"

Case GREEN

PenColor = "Green"

Case BLUE

PenColor = "Blue"

End Select

End Property

' 다음 코드는 Property Get 프로시저를 호출하는

' 펜의 색을 받습니다.

ColorName = PenColor


Property Let 문 예제

아래 예제에서는Property Let 문을 사용하여 값을 속성에 할당하는 프로시저를 정의합니다. 속성은 그리기 패키지에 대한 펜 색을 지정합니다.

Dim CurrentColor As Integer

Const BLACK = 0, RED = 1, GREEN = 2, BLUE = 3

' Drawing 페키지에 대한 펜 색 속성을 지정합니다.

' 모듈 수준 변수 CurrentColor가

' 그리기에 사용되는 색을 식별하는 숫자값으로 지정됩니다.

Property Let PenColor(ColorName As String)

Select Case ColorName	' 색 이름 문자열을 검사합니다.

Case "Red"

CurrentColor = RED	' 빨강에 대한 값을 지정합니다.

Case "Green"

CurrentColor = GREEN	' 녹색에 대한 값을 지정합니다.

Case "Blue"

CurrentColor = BLUE	' 파랑에 대한 값을 지정합니다.

Case Else

CurrentColor = BLACK	' 기본값을 지정합니다.

End Select

End Property

' 다음 코드는 let 프로시저를 호출하여

' 그리기 패키지에 대한 PenColor 속성을 지정합니다.

PenColor = "Red"


Property Set 문 예제

아래 예제에서는Property Set 문을 사용하여 개체에 대한 참조를 지정하는 속성 프로시저를 정의합니다.

' 펜 속성은 다른 펜 실행으로 지정될 수도 있습니다.

Property Set Pen(P As Object)

Set CurrentPen = P	' 펜을 개체에 지정합니다.

End Property


Public 문 예제

아래 예제에서는표준 모듈의 모듈 수준(일반 구역)에서 Public 문을 사용하여 변수를 명시적으로 공용으로 선언합니다. 다시 말해서 Option Private Module이 효과를 나타내지 않으면 응용 프로그램의 모든 프로시저에 사용 가능합니다.

Public Number As Integer	' Public Integer 변수입니다.

Public NameArray(1 To 5) As String	' Public 배열 변수입니다.

' 다중 선언, 두개의 Variant와 하나의 Integer, 모두 Public입니다.

Public MyVar, YourVar, ThisVar As Integer


ReDim 문 예제

아래 예제에서는ReDim 문을 사용하여 동적 배열 변수에 대한 저장 공간을 할당하거나 재할당합니다. Option Base는 1이라고 간주됩니다.

Dim MyArray() As Integer	' 동적 배열을 선언합니다.

Redim MyArray(5)	' 5개의 요소를 할당합니다.

For I = 1 To 5	' 5번 반복합니다.

MyArray(I) = I	' 배열을 초기화합니다.

Next I

다음 문은 배열의 크기를 바꾸고 그 요소들을 삭제합니다.

Redim MyArray(10)	' 10개의 요소로 크기를 변경합니다.

For I = 1 To 10	' 10번 반복합니다.

MyArray(I) = I	' 배열을 초기화합니다.

Next I

다음 문은 배열의 크기를 바꾸지만 그 요소들을 삭제하지 않습니다.

Redim Preserve MyArray(15)	' 15개의 요소로 크기를 변경합니다.


Rem 문 예제

아래 예제에서는 프로그램에 참고 설명을 포함하는데 사용되는 Rem 문의 여러 가지 형태를 예시합니다.

Rem This is the first form of the syntax.

Dim MyStr1, MyStr2

MyStr1 = "Hello": Rem Comment after a statement separated by a colon.

MyStr2 = "Goodbye" 	' 이것 역시 주석문이므로 콜론이 필요없습니다.


Set 문 예제

아래 예제에서는Set 문을 사용하여 개체 참조를 변수에 할당합니다. YourObject는 Text 속성을 가진 유효 개체로 가정됩니다.

Dim YourObject, MyObject, MyStr

Set MyObject = YourObject	' 개체 참조를 지정합니다.

' MyObject와 YourObject 같은 개체를 참조합니다.

YourObject.Text = "Hello World"	' 속성을 초기화합니다.

MyStr = MyObject.Text	' Returns "Hello World".

' 연결을 끊습니다. MyObject는 더이상 YourObject을 참조하지 않습니다.

Set MyObject = Nothing	' 개체를 해제합니다.


Static 문 예제

아래 예제에서는Static 문을 사용하여 모듈 코드가 실행되는 동안 변수값을 유지합니다.

' 함수 정의입니다.

Function KeepTotal(Number)

' 변수 Accumulate만이 호출 도중에 그 값을 유지합니다.

Static Accumulate

Accumulate = Accumulate + Number

KeepTotal = Accumulate

End Function

' Static 함수 정의입니다.

Static Function MyFunction(Arg1, Arg2, Arg3)

' 모든 지역 변수가 함수 호출간의 값을 저장합니다.

Accumulate = Arg1 + Arg2 + Arg3

Half = Accumulate / 2

MyFunction = Half

End Function


Sub 문 예제

아래 예제에서는Sub 문을 사용하여 Sub 프로시저의 형태를 형성하는 이름, 인수, 코드를 정의합니다.

' 하위 프로시저 정의입니다.

' 두개의 인수를 가진 하위 프로시저입니다.

Sub SubComputeArea(Length, TheWidth)

Dim Area As Double	' 지역 변수를 선언합니다.

If Length = 0 Or TheWidth = 0 Then

' 만약 두 인수가 모두 0이면,

Exit Sub	' Sub를 즉시 종료합니다.

End If

Area = Length * TheWidth	' 사각형의 면적을 계산합니다.

Debug.Print Area	' 지역을 디버그 창에 인쇄합니다.

End Sub


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


UBound 함수 예제

아래 예제에서는UBound 함수를 사용하여 배열의 지정된 차원에 대한 가장 큰 사용 가능한 아래 첨자를 결정합니다.

Dim Upper

Dim MyArray(1 To 10, 5 To 15, 10 To 20)	' 배열 변수를 선언합니다.

Dim AnyArray(10)

Upper = UBound(MyArray, 1)	' 10을 반환합니다.

Upper = UBound(MyArray, 3)	' 20을 반환합니다.

Upper = UBound(AnyArray)	' 10을 반환합니다.


CallByName 함수 예제

아래 예제에서는CallByName 함수를 사용하여 명령 단추의 Move 메서드를 호출합니다.

아래 예제는 단추(Command1)가 있는 폼(Form1)과 레이블(Label1)을 사용합니다. 폼이 로드되면 레이블의 Caption 속성이 호출할 메서드 이름인 "Move"로 설정됩니다. 단추를 누르고 있으면 CallByName 함수는 메서드를 호출하여 단추의 위치를 변경합니다.

Option Explicit

Private Sub Form_Load()

Label1.Caption = "Move"	' Move 메서드 이름

End Sub

Private Sub Command1_Click()

If Command1.Left <> 0 Then

CallByName Command1, Label1.Caption, vbMethod, 0, 0

Else

CallByName Command1, Label1.Caption, vbMethod, 500, 500

End If


As <키워드>
As

As 키워드는 다음과 같은 컨텍스트에서 사용합니다.

Const 문

Declare 문

Dim 문

Function 문

Name 문

Open 문Private 문

Property Get 문

Property Let 문

Property Set 문

Public 문

ReDim 문

Static 문

Sub 문

Type 문


Binary <키워드>
Binary

Binary 키워드는 다음과 같은 컨텍스트에서 사용합니다.

Open 문

Option Compare 문


ByRef <키워드>
ByRef

ByRef 키워드는 다음과 같은 컨텍스트에서 사용합니다.

Call 문

Declare 문

Function 문

Property Get 문

Property Let 문

Property Set 문

Sub 문


ByVal <키워드>
ByVal

ByVal 키워드는 다음과 같은 컨텍스트에서 사용합니다.

Call 문

Declare 문

Function 문

Property Get 문

Property Let 문

Property Set 문

Sub 문


Date <키워드>
Date

Date 키워드는 다음과 같은 컨텍스트에서 사용합니다.

Date 데이터 형식

Date 함수

Date 문


Else <키워드>
Else

Else 키워드는 다음과 같은 컨텍스트에서 사용합니다.

If...Then...Else 문

Select Case 문


Error <키워드>
Error

Error 키워드는 다음과 같은 컨텍스트에서 사용합니다.

Error 함수

Error 문

On Error 문


For <키워드>
For

For 키워드는 다음과 같은 컨텍스트에서 사용합니다.

For...Next 문

For Each...Next 문

Open 문


Get <키워드>
Get

Get 키워드는 다음과 같은 컨텍스트에서 사용합니다.

Get 문

Property Get 문


Input <키워드>
Input

Input 키워드는 다음과 같은 컨텍스트에서 사용합니다.

Input 함수

Input # 문

Line Input # 문

Open 문


Is <키워드>
Is

Is 키워드는 다음과 같은 컨텍스트에서 사용합니다.

If...Then...Else 문

Is 연산자

Select Case 문


Len <키워드>
Len

Len 키워드는 다음과 같은 컨텍스트에서 사용합니다.

Len 함수

Open 문


Let <키워드>
Let

Let 키워드는 다음과 같은 컨텍스트에서 사용합니다.

Let 문

Property Let 문


Lock <키워드>
Lock

Lock 키워드는 다음과 같은 컨텍스트에서 사용합니다.

Lock, Unlock 문

Open 문


Mid

Mid 키워드는 다음과 같은 컨텍스트에서 사용합니다.

Mid 함수

Mid 문


New <키워드>
New

New 키워드는 다음과 같은 컨텍스트에서 사용합니다.

Dim 문

Private 문

Public 문

Set 문

Static 문


Next <키워드>
Next

Next 키워드는 다음과 같은 컨텍스트에서 사용합니다.

For...Next 문

For Each...Next 문

On Error 문

Resume 문


On <키워드>
On

On 키워드는 다음과 같은 컨텍스트에서 사용합니다.

On Error 문

On...GoSub 문

On...GoTo 문


Option <키워드>
Option

Option 키워드는 다음과 같은 컨텍스트에서 사용합니다.

Option Base 문

Option Compare 문

Option Explicit 문

Option Private 문


Optional <키워드>
Optional

Optional 키워드는 다음과 같은 컨텍스트에서 사용합니다.

Declare 문

Function 문

Property Get 문

Property Let 문

Property Set 문

Sub 문


ParamArray <키워드>
ParamArray

ParamArray 키워드는 다음과 같은 컨텍스트에서 사용합니다.

Declare 문

Function 문Property Get 문

Property Let 문

Property Set 문

Sub 문


Print <키워드>
Print

Print 키워드는 다음과 같은 컨텍스트에서 사용합니다.

Print 메서드

Print # 문


Private <키워드>
Private

Private 키워드는 다음과 같은 컨텍스트에서 사용합니다.

Const 문

Declare 문Enum 문

Function 문

Option Private 문

Private 문

Property Get 문

Property Let 문

Property Set 문

Sub 문

Type 문


Property <키워드>
Property

Property 키워드는 다음과 같은 컨텍스트에서 사용합니다.

Property Get 문

Property Let 문

Property Set 문


Public <키워드>
Public

Public 키워드는 다음과 같은 컨텍스트에서 사용합니다.

Const 문

Declare 문Enum 문

Event 문

Function 문

Property Get 문

Property Let 문

Property Set 문

Public 문

Sub 문

Type 문


Resume <키워드>
Resume

Resume 키워드는 다음과 같은 컨텍스트에서 사용합니다.

On Error 문

Resume 문


Seek <키워드>
Seek

Seek 키워드는 다음과 같은 컨텍스트에서 사용합니다.

Seek 함수

Seek 문


Set <키워드>
Set

Set 키워드는 다음과 같은 컨텍스트에서 사용합니다.

Set 문

Property Set 문


Static <키워드>
Static

Static 키워드는 다음과 같은 컨텍스트에서 사용합니다.

Function 문

Property Get 문

Property Let 문

Property Set 문

Static 문

Sub 문


Step <키워드>
Step

Step 키워드는 다음과 같은 컨텍스트에서 사용합니다.

For...Next 문

For Each...Next 문


String <키워드>
String

String 키워드는 다음과 같은 컨텍스트에서 사용합니다.

String 데이터 형식

String 함수


Then <키워드>
Then

Then 키워드는 다음과 같은 컨텍스트에서 사용합니다.

#If...Then...#Else 지시문

If...Then...Else 문


Time <키워드>
Time

Time 키워드는 다음과 같은 컨텍스트에서 사용합니다.

Time 함수

Time 문


To<키워드>
To

To 키워드는 다음과 같은 컨텍스트에서 사용합니다.

Dim 문

For...Next 문

Lock, Unlock 문

Private 문

Public 문

ReDim 문

Select Case 문

Static 문

Type 문


WithEvents <키워드>
WithEvents

WithEvents 키워드는 다음과 같은 컨텍스트에서 사용합니다.

Dim 문

Private 문

Public 문


문서 규칙

Visual Basic 문서는 다음과 같은 인쇄 규칙을 사용합니다.

규칙	설명
Sub, If, ChDir, Print, True, Debug	첫째 문자가 굵은 대문자인 단어는 언어 특정 키워드를 나타냅니다.
Setup	입력을 지시하는 단어는 굵게 나타납니다.
object, varname, arglist	기울임꼴의 소문자는 사용자가 제공하는 정보의 자리 표시자를 나타냅니다.
pathname, filenumber	굵은 기울임꼴의 소문자는 위치나 명명된 인수 구문 어디에나 사용할 수 있는 인수의 자리 표시자를 나타냅니다.
[expressionlist]	구문에서 괄호 안의 항목은 선택적인 요소임을 나타냅니다.
{While | Until}	구문에서 괄호와 수직 막대는 둘 이상의 항목에서 선택할 수 있음을 나타냅니다. 모든 항목이 괄호로 묶여 있지 않는 한 항목 중에서 반드시 하나를 선택해야 합니다. 예를 들면 아래와 같습니다.
	[{This | OrThat}]
Esc, Enter	대문자 단어는 키 이름과 키 연속을 나타냅니다.
Alt+F1, Ctrl+R	키 이름 사이의 더하기 기호 (+)는 키의 조합을 나타냅니다. 예를 들어, Alt+F1은 Alt키를 누른 채 F1키를 누르는 것을 의미합니다.
코드 규칙

다음과 같은 코드 규칙이 사용됩니다.

예제 코드	설명
MyString = "Hello, world!"	이 글꼴은 코드, 변수 및 오류 메시지 텍스트에 사용됩니다.
' This is a comment.	작은 따옴표(')는 코드에 대한 주석이 시작됨을 나타냅니다.
MyVar = "This is an " _ & "example" _ & " of how to continue code."	하나의 공백과 하나의 밑줄 조합( _)은 현재 행의 코드와 다음 행의 코드가 이어져 있다는 것을 의미합니다.


Error 함수 예제0
Error 함수 예제

아래 예제에서는 Error 함수를 사용하여 지정된 오류 번호와 일치하는 오류 메시지를 인쇄합니다.

Dim ErrorNumber

For ErrorNumber = 61 To 64	' 61에서 64까지의 값을 반복합니다.

Debug.Print Error(ErrorNumber)	' 직접 실행 창에 오류를 인쇄합니다.

Next ErrorNumber


Error 문 예제

아래 예제에서는 Error 문을 사용하여 오류 번호 11을 확인합니다.

On Error Resume Next	' 오류 처리를 지연합니다.

Error 11	' "0으로 나누었습니다" 오류를 기록합니다.


On Error 문 예제

아래 예제에서는 먼저 On Error GoTo 문을 사용하여 프로시저에 있는 오류 처리 루틴의 위치를 지정합니다. 이 예제에서 열린 파일을 지우려고 하면 오류 번호 55가 발생합니다. 오류는 오류 처리 루틴에서 다루어지며, 컨트롤은 오류가 발생한 문으로 반환됩니다. On Error GoTo 0 문은 오류 잡기를 중지시킵니다. 그러면 On Error Resume Next 문이 사용되어 오류 잡기를 지연하게 되므로 다음 문에 의해 발생된 오류가 무엇인지 확실히 알 수 있습니다. 오류가 처리된 후 Err 개체의 속성을 삭제하는 데에는 Err.Clear가 사용된다는 것도 참고하기 바랍니다.

Sub OnErrorStatementDemo()

On Error GoTo ErrorHandler	' 오류 처리 루틴을 가능하게 합니다.

Open "TESTFILE" For Output As #1	' 출력을 위한 파일을 엽니다.

Kill "TESTFILE"	' 열린 파일의 삭제를 시도합니다.

On Error Goto 0	' 오류 잡기를 끝냅니다.

On Error Resume Next	' 오류 잡기를 연기시킵니다.

ObjectRef = GetObject("MyWord.Basic")	' 존재하지 않는 개체를 시작하려 시도한 후,

' 알맞은 자동화 오류에 관한 검사에 대해 시험합니다.

If Err.Number = 440 Or Err.Number = 432 Then

' 사용자에게 어떤 일이 발생하였는지 알려줍니다. 그리고 나서 Err 개체를 삭제합니다.

Msg = "자동화 개체를 열려고 했습니다!"

MsgBox Msg, , "오류 검사가 연기됨"

Err.Clear	' Err 개체 필드를 삭제합니다.

End If

Exit Sub	' 오류 처리 루틴을 피하기 위해 종료합니다.

ErrorHandler:	' 오류 처리 루틴입니다.

Select Case Err.Number	' 오류 번호를 계산합니다.

Case 55	' "파일이 이미 열려 있습니다" 오류입니다.

Close #1	' 열린 파일을 닫습니다.

Case Else

' 여기서 다른 상황을 다룹니다.

End Select

Resume	' 오류를 유발한 행과 동일한 행에서

' 실행을 재개합니다.

End Sub


Resume 문 예제

아래 예제에서는 Resume 문을 사용하여 프로시저에서의 오류 처리를 종결하고 오류를 발생시킨 문을 재실행합니다. Resume 문 사용을 설명하기 위해 오류 번호 55가 만들어졌습니다.

Sub ResumeStatementDemo()

On Error GoTo ErrorHandler	' 오류 처리 루틴을 가능하게 합니다.

Open "TESTFILE" For Output As #1	' 출력을 위한 파일을 엽니다.

Kill "TESTFILE"	' 열린 파일의 삭제를 시도합니다.

Exit Sub	' 오류 처리 루틴을 피하기 위해 Sub를 종료합니다.

ErrorHandler:	' 오류 처리 루틴입니다.

Select Case Err.Number	' 오류 번호를 계산합니다.

Case 55	' "파일이 이미 열려있습니다" 오류입니다.

Close #1	' 열린 파일을 닫습니다.

Case Else

' 여기서 다른 상황을 다룹니다.

End Select

Resume	' 오류를 유발한 행과 동일한 행에서

' 실행을 재개합니다.

End Sub


Error 함수

주어진 오류 번호에 해당하는 오류 메시지를 반환합니다.

구문

Error[(errornumber)]

모든 오류 번호는 선택 요소인 errornumber 인수가 될 수 있습니다. errornumber가 유효한 오류 번호지만 정의가 되지 않은 경우 Error 함수는 "응용 프로그램 정의 오류 또는 개체 정의 오류"라는 문자열을 반환합니다. errornumber가 유효하지 않은 경우 오류가 발생합니다. errornumber를 생략하면 가장 최근의 런타임 오류에 해당하는 메시지를 반환합니다. 런타임 오류가 발생하지 않았거나 errornumber가 0인 경우 Error 함수는 길이가 0인 문자열("")을 반환합니다.

참고

가장 최근의 런타임 오류를 식별하려면 Err 개체 속성 설정을 검사하십시오. Error 함수의 반환값은 Err 개체의 Description 속성과 일치합니다.


Error 문

오류의 발생을 처리합니다.

구문

Error errornumber

모든 오류 번호는 필수 요소인 errornumber가 될 수 있습니다.

참고

Error 문은 하위 버전과의 호환성을 지원합니다. 특히 개체를 새로 만들 때 새 코드에서 런타임 오류를 발생시키려면 Err 개체의 Raise 메서드를 사용하십시오.

errornumber가 정의된 경우 Error 문은 Err 개체의 속성을 다음과 같은 기본값으로 할당된 후에 오류 처리기를 호출합니다.

속성	값
Number	Error 문에 인수로 지정된 값. 모든 오류 번호가 가능합니다.
Source	현재 Visual Basic 프로젝트의 이름
Description	문자열이 존재하는 경우 지정된 Number에 대한 Error 함수의 반환값에 해당하는 문자식. 문자열이 존재하지 않는 경우 Description은 길이가 0인 문자열("")을 포함합니다.
HelpFile	적합한 Visual Basic 도움말 파일의 전체 드라이브, 경로, 파일 이름
HelpContext	Number 속성에 해당하는 오류에 대한 적합한 Visual Basic 도움말 파일 제목 ID
LastDLLError	0
오류 처리기가 존재하지 않거나 사용 가능하지 않은 경우 Err 개체 속성으로부터 오류 메시지가 만들어져서 표시됩니다.

메모   모든 Visual Basic 호스트 응용 프로그램이 개체를 만들 수는 없습니다. 호스트 응용 프로그램이 클래스와 개체를 만들 수 있는지의 여부를 알아보려면 호스트 응용 프로그램의 설명서를 참조하십시오.


On Error 문

오류 처리 루틴을 사용 가능하도록 만들고 프로시저에서 루틴의 위치를 지정합니다. On Error 문은 오류 처리 루틴을 사용할 수 없도록 하는 데도 사용할 수 있습니다.

구문

On Error GoTo line

On Error Resume Next

On Error GoTo 0

On Error 문은 다음과 같은 형식을 사용합니다.

문	설명
On Error GoTo line	필수 요소인 line 인수에서 지정한 line에서 오류 처리 루틴을 시작할 수 있도록 만듭니다. line 인수는 임의의 줄 레이블 또는 행 번호입니다. 런타임 오류가 발생하는 경우, 컨트롤은 오류 처리기를 활성화시키는 line으로 이동합니다. 지정된 line은 On Error 문과 같은 프로시저에 있어야만 합니다. 그렇지 않으면, 컴파일 모드 오류가 발생합니다.
On Error Resume Next	런타임 오류가 발생할 때 오류가 발생한 문장 바로 다음에 있는 문에서 실행이 계속될 수 있도록 컨트롤이 이동되도록 지정합니다. 개체에 액세스할 때에는 On Error GoTo 문 보다는 이 폼을 사용하십시오.
On Error GoTo 0	현재 프로시저에서 사용 가능한 오류 처리기를 사용할 수 없도록 만듭니다.
참고

On Error 문을 사용하지 않는 경우 발생한 모든 실행 오류는 치명적입니다. 즉, 오류 메시지가 표시되고 실행이 멈춥니다.

"사용 가능한" 오류 처리기는 On Error 문에 의해 지정된 것이고, "활성화된" 오류 처리기는 오류 처리 과정 중에 사용 가능한 오류 처리기입니다. 오류 발생과 Resume, Exit Sub, Exit Function, 또는 Exit Property 문 사이에서 오류 처리기가 활성화되어 있는 동안 오류가 발생하는 경우, 현재 프로시저의 오류 처리기는 오류를 처리할 수 없습니다. 컨트롤은 호출한 프로시저에 반환됩니다. 호출한 프로시저에 사용 가능한 오류 처리기가 있다면 오류를 처리할 수 있도록 활성화됩니다. 호출한 프로시저의 오류 처리기 또한 활성화되어 있는 경우, 컨트롤은 이전에 호출한 프로시저들로 넘어가며 아직 사용 가능하지만 활성화되지 않은 오류 처리기를 찾을 때까지 오류 처리기를 찾습니다. 사용 가능하면서 활성화되지 않은 오류 처리기를 찾지 못한다면 오류는 실제로 발생한 그 시점에서 치명적입니다. 오류 처리기가 호출한 프로시저들에게 컨트롤을 넘길 때마다, 그 프로시저가 현재 프로시저가 됩니다. 일단 오류가 어느 프로시저에 있는 오류 처리기에 의해 처리되면, Resume 문에 의해 지정된 현재 프로시저 내의 지점에서 실행이 다시 시작됩니다.

메모   오류 처리 루틴은 Sub 프로시저나 Function 프로시저가 아닙니다. 오류 처리 루틴은 줄 레이블이나 행 번호로 표시된 코드의 한 부분입니다.

오류 처리 루틴은 오류의 원인을 규명하기 위해 Err 개체의 Number 속성값에 의존합니다. 오류 처리 루틴은 다른 오류가 발생하거나 오류를 발생시킬 수 있는 프로시저를 호출하기 전에 Err 개체에 관련된 속성값을 검사하거나 저장해야 합니다. Err 개체에 있는 속성값들은 가장 최근의 오류만을 반영합니다. Err.Number와 관련된 오류 메시지는 Err.Description에 있습니다.

On Error Resume Next는 런타임 오류를 발생시킨 문장의 바로 다음 문장이나 On Error Resume Next 문을 가진 프로시저로부터 가장 최근에 호출된 바로 다음 문장을 사용하여 계속 실행되도록 만듭니다. 이 문은 런타임 오류에도 불구하고 계속 실행되도록 만듭니다. 오류가 발생한 프로시저 내의 다른 위치로 컨트롤을 이동시키는 것보다는 오류가 발생할 곳에 오류 처리 루틴을 둘 수 있습니다. On Error Resume Next 문은 다른 프로시저가 호출되면 활성화되지 않습니다. 따라서 그 루틴 내에서 인라인 오류 처리를 하고자 한다면 각 호출 루틴에서 On Error Resume Next 문을 실행해야 합니다.

메모   다른 개체에 액세스하는 동안 발생한 오류를 처리할 때에는 On Error Resume Next 구조가 On Error GoTo보다 더 좋습니다. 매번 개체와 상호 작용 후 Err를 검사하면 코드가 액세스한 개체가 어떤 것인가를 쉽게 알 수 있습니다. Err.Source에 지정된 개체와 같이 근본적으로 오류를 발생시키는 개체뿐만 아니라 Err.Number에 있는 오류 코드에 어떤 개체가 위치되는지 확실히 할 수 있습니다.

On Error GoTo 0 문은 현재 프로시저에서 오류 처리를 사용할 수 없도록 만듭니다. 프로시저에 행 번호 0인 행이 포함되어 있더라도 오류 처리 코드의 시작점으로 행 0을 지정하지 않습니다. On Error GoTo 0 문이 없는 경우, 프로시저가 끝나면 오류 처리기는 자동으로 사용할 수 없게 됩니다.

오류가 발생하지 않을 때 오류 처리 코드가 실행되지 않도록 하기 위해서는 다음과 같이 오류 처리 루틴 바로 앞에 Exit Sub, Exit Function, Exit Property 문을 둡니다.

Sub InitializeMatrix(Var1, Var2, Var3, Var4)

On Error GoTo ErrorHandler

. . .

Exit Sub

ErrorHandler:

. . .

Resume Next

End Sub

위 예제에서는 오류 처리 코드는 프로시저 흐름으로부터 분리되도록 Exit Sub 문 다음과 End Sub 문 앞에 두었지만, 오류 처리 코드는 프로시저 어느 곳이라도 둘 수 있습니다.

개체에서 검출되지 않는 오류들은 개체가 실행 파일로 실행되고 있을 때 조정하고 있는 응용 프로그램에 반환됩니다. 개발 환경 내에서 검출되지 않는 오류는 적절한 옵션이 설정되어 있는 경우 조정하고 있는 응용 프로그램에 반환되기만 합니다. 디버깅하는 동안 어떤 옵션을 설정해야 하는 지와 설정 방법 그리고 호스트가 클래스를 만들 수 있는지에 대한 설명은 호스트 응용 프로그램의 설명서를 참조하십시오.

다른 개체들을 액세스하는 개체를 만드는 경우, 액세스된 다른 개체에서 처리되지 않은 오류들은 개체들을 액세스하도록 만들어진 개체에서 되돌려 받아서 처리하도록 해야 합니다. 그런 오류를 처리할 수 없다면 Err.Number의 오류 코드를 자신의 오류 중의 하나와 대응시키고 개체를 호출한 곳에 넘겨줍니다. 오류 코드를 vbObjectError 상수에 추가하여 오류를 지정해야 합니다. 예를 들면 오류 코드가 1052인 경우 다음과 같이 할당합니다.

Err.Number = vbObjectError + 1052

메모   Windows 동적 연결 라이브러리(DLL) 또는 매킨토시 코드 리소스를 호출하는 동안 일어나는 시스템 오류는 exception 오류를 일으키지 않으며 Visual Basic 오류 추적에서 검출되지 않습니다. DLL 함수를 호출할 때 API 지정에 따라 성공과 실패에 대한 각 반환값을 점검해야 하고, 실패할 경우에는 Err 개체의 LastDLLError 속성값을 점검해야 합니다. LastDLLError는 매킨토시에서 언제나 0을 반환합니다.


Resume 문

오류 처리 루틴이 종료된 후에 실행을 재개합니다.

구문

Resume [0]

Resume Next

Resume line

Resume 문은 다음과 같은 형식을 사용합니다.

문	설명
Resume	오류가 오류 처리기와 같은 프로시저에서 발생하는 경우 오류를 발생시키는 문장과 함께 실행이 재개됩니다. 호출된 프로시저에서 오류가 발생한 경우 오류 처리 루틴을 포함하고 있는 프로시저로부터 마지막으로 호출된 문과 함께 실행이 재개됩니다.
Resume Next	오류가 오류 처리기와 같은 프로시저에서 발생하는 경우 오류를 발생시키는 문장 바로 다음에서 실행이 재개됩니다. 호출된 프로시저에서 오류가 발생한 경우 오류 처리 루틴(또는 On Error Resume Next 문)을 포함하고 있는 프로시저로부터 마지막으로 호출된 문장 바로 다음에서 실행이 재개됩니다.
Resume line	필수 요소인 line 인수에 지정된 line에서 실행이 재개됩니다. Line 인수는 줄 레이블 또는 행 번호이며, 오류 처리기와 같은 프로시저 내에 있어야만 합니다.
참고

오류 처리 루틴을 제외한 다른 곳에 Resume 문을 사용하면 오류가 발생합니다.


#Else 절 앞에는 대응되는 #If가 있어야 합니다

#Else는 조건부 컴파일 명령입니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	대응되는 #If나 #ElseIf가 없는 #Else 절이 발견되었습니다.

앞에 있는 #If가 #End If에 의해 #Else에서 분리되지 않았는지 확인하십시오. 각각의 #If 블록에 #Else는 하나만 허용되므로, 두 개의 #Else 절이 연속하여 있으면 이 오류가 발생합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


#ElseIf나 #Else, #EndIf 앞에는 대응되는 #If가 있어야 합니다

#Else If, #Else, #End If는 조건부 컴파일 명령입니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	대응되는 #If 절이 없는 #Else If나 #Else, #End If가 발견되었습니다.

들여쓴 #If가 질문의 절에서 블록에 의해 분리되었는지 또는 들여쓴 #If 앞에 숫자 기호(#)가 있는지 확인하십시오. 모든 사항이 제대로 되어 있다면 적당한 위치에 #If 절을 놓으십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


#ElseIf는 대응되는 #If나 #ElseIf 다음에 나와야 하고, #ElseIf나 #Else, #EndIf 앞에 나와야 합니다

#ElseIf는 조건부 컴파일 명령입니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	#If나 #ElseIf가 없는 #ElseIf가 발견되었습니다.

#ElseIf 앞에 #If 문을 놓거나 앞에 잘못 놓인 #End If를 삭제하십시오.

•	#Else나 #End If가 있는 #ElseIf가 발견되었습니다.

앞의 #If 블록을 적절하게 종료하거나 #Else를 #ElseIf로 바꾸십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


호환성 있는 ActiveX 구성 요소는 Visual Basic 실행 파일이거나 DLL 파일이어야 합니다

호환성 있는 ActiveX 구성 요소는 호환성 있는 ActiveX 구성 요소로 지정한 것 중 하나입니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Visual Basic이 호환성 있는 ActiveX 구성 요소로 지정한 개체를 액세스하려고 하지만, 지정한 파일이 Visual Basic에서 만든 실행 파일 또는 동적 연결 라이브러리(DLL)가 아닙니다.

Visual Basic에서 만든 .EXE 파일과 .DLL을 프로젝트 메뉴를 통해 액세스된 프로젝트 속성 대화 상자의 호환성 있는 ActiveX 구성 요소 필드 항목에서 사용할 수 있습니다. 가능하면 프로젝트를 Visual Basic으로 읽어 들이고 파일 메뉴에서 프로젝트.EXE 만들기 명령을 선택하여 Visual Basic 실행 파일을 만드십시오. 파일이 Visual Basic에서 만들어지지 않은 실행 파일이거나 Visual Basic으로 읽어들일 수 없는 경우 파일 설명서를 참고하여 파일을 Visual Basic 실행 파일로 변환할 수 있는지 또는 제조업체가 Visual Basic에서 만든 실행 파일을 제공할 수 있는지 알아봅니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


추가 기능은 프로젝트를 참조할 수 없습니다

프로젝트는 동적이지만 추가 기능은 정적입니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	다른 프로젝트를 참조하는 프로젝트에서 추가 기능을 만들려 하였습니다.

프로젝트의 의미는 참조하는 프로젝트와 추가 기능에 영향을 주는 방법으로 변경할 수 있습니다. 따라서 프로젝트를 참조하는 프로젝트에서 추가 기능을 만들 수 없습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


모듈의 형식이 잘못되었습니다

표준 모듈은 클래스를 나타내지 않으며 변수의 폼에서 인스턴스를 만들 수도 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Dim 또는 Set 선언에서 표준 모듈 이름을 사용하였습니다.

모듈 이름이 맞는지 확인하고 폼, MDI 폼, 클래스 모듈에 대응하도록 합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


ParamArray 인수를 가진 프로시저는 명명된 인수를 가진 프로시저로 호출될 수 없습니다

프로시저 호출에서 ParamArray로 정의된 모든 인수는 위치가 지정되어야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	명명된 인수 구문은 프로시저 호출에 나타납니다.

명명된 인수 호출 구문은 ParamArray 매개 변수를 포함하는 프로시저 호출에는 사용될 수 없습니다. ParamArray의 일부 요소만 지원하려면 생략하고자 하는 요소의 자리 표시자로 쉼표(,)를 사용하십시오. 예를 들면 다음 호출에서 ParamArray 인수가 Arg2 뒤에 나타나는 경우값은 ParamArray의 첫째, 셋째, 여섯째 값에만 전달됩니다.

MySub Arg1, Arg2, 7,, 44,,,3

메모   ParamArray는 인수 목록에서 항상 마지막 항목을 나타냅니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


이름이 분명하지 않습니다

식별자가 다른 식별자와 충돌하거나 수식어를 필요로 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	같은 범위 내의 여러 개체가 동일한 이름을 가진 요소를 갖고 있습니다.

예를 들면 다음처럼 개체 이름과 마침표(.)를 포함하여 요소 이름을 만드십시오.

object.property

모듈 수준 식별자와 프로젝트 수준 식별자(모듈 이름과 참조된 프로젝트 이름)는 프로그램의 관리와 디버그 작업이 어렵더라도 프로시저에서 다시 사용할 수 있습니다. 그러나 한 프로시저에서 두 항목을 참조하려 하는 경우 넓은 범위를 가진 항목은 한정되어야 합니다. 예를 들면 MyID를 MyModule의 모듈 수준에서 선언한 다음 프로시저 수준 변수를 모듈 수준에서 같은 이름으로 선언하는 경우 모듈 수준 변수에 대한 참조는 적절하게 한정되어야 합니다.

Dim MyID As String

Sub MySub

MyModule.MyID = "이것은 모듈 수준의 변수입니다."

Dim MyID As String

MyID = "이것은 프로시저 수준의 변수입니다."

Debug.Print MyID

Debug.Print MyModule.MyID

End Sub

•	모듈 수준에서 선언한 식별자가 프로시저 이름과 충돌합니다. 예를 들면 이 오류는 변수 MyID를 모듈 수준에서 선언된 후, 프로시저가 동일한 이름으로 정의되는 경우 발생합니다.

Public MyID

Sub MyID

. . .

End Sub

이런 경우 공통 모듈 이름을 가진 것에 대한 한정이 모호하기 때문에 이름 중 하나를 바꿔야 합니다. 프로시저 이름은 기본으로 Public이지만 변수 이름은 Public으로 지정하지 않는 한 Private입니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


AppleScript 오류입니다

스크립트 처리 중에 오류가 발생하였습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	오류는 대상 응용 프로그램과 관련될 수 있습니다.

스크립트에 있는 식별자가 응용 프로그램에 있는 식별자와 맞는지 확인하십시오.

•	오류는 AppleScript와 관련될 수 있습니다.

스크립트에서 사용된 구문이 유효한 AppleScript 구문인지 확인하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


응용 프로그램 정의 오류 또는 개체 정의 오류입니다

이 메시지는 Raise 메서드에서 오류가 발생할 때 또는 Error 문이 Visual Basic for Applications에서 정의한 오류에 대응되지 않을 때 표시됩니다. 또 이 오류는 Visual Basic for Applications에서 정의한 오류에 대응되지 않는 인수의 Error 함수에 의해 반환됩니다. 따라서 이것은 정의된 오류이거나, Microsoft Excel, Visual Basic 등과 같은 호스트 응용 프로그램을 포함한 개체에서 정의된 오류일 수 있습니다. 예를 들면 Visual Basic 폼은 단순히 Raise 메서드나 Error 문에 인수로서 숫자를 지정하는 코드로부터 발생할 수 없는 폼 관련 오류를 생성합니다. 이 메시지가 나타나는 원인과 해결 방법은 다음과 같습니다.

•	응용 프로그램은 Err.Raise n 또는 Error n 문을 실행할 수 있으나, 숫자 n이 Visual Basic for Applications에서 정의되지 않았습니다.

이러한 상황이 의도적인 경우 Err.Raise를 사용하여 사용자가 오류 원인을 이해할 수 있도록 추가 인수를 지정해야 합니다. 예를 들면 설명 문자열, 원본, 도움말 정보를 포함할 수 있습니다. 오류를 다시 만들기 전에 Err.Clear를 실행하지 않을 때 잡힌 오류를 다시 만들려면 이 방법이 좋습니다. Err.Clear를 먼저 실행하면 Raise 메서드에 추가 인수를 채워야 합니다. 오류가 발생한 구문을 확인하고 동일한 오류를 만드십시오.

•	다른 응용 프로그램에서 개체를 액세스할 때 Visual Basic 오류에 대응될 수 없는 프로그램에 오류가 다시 돌아옵니다.

액세스한 모든 개체의 설명서를 확인해 보십시오. Err 개체의 Source 속성은 응용 프로그램의 프로그램 ID 또는 오류를 생성한 개체를 포함해야 합니다. 개체가 반환한 오류의 구문을 이해하려면 개체를 액세스하는 코드에서 On Error GoTo line 구문 대신 On Error Resume Next 문을 사용해야 합니다.

메모   과거에는 프로그래머가 잡을 수 있는 모든 오류 메시지 문자열의 목록을 출력하기 위해 종종 루프를 사용하였습니다. 일반적으로 다음과 같은 코드로 완료됩니다.

For index = 1 to 500

Debug.Print Error$(index)

Next index

이런 코드는 여전히 모든 Visual Basic for Applications 오류 메시지를 표시하지만, 폼, 컨트롤 등과 관련된 Visual Basic에 있는 호스트 정의 오류에 대해 "응용 프로그램 정의 오류 또는 개체 정의 오류입니다"를 표시합니다. 이러한 대부분의 오류는 잡을 수 있는 런타임 오류입니다. 호스트 응용 프로그램에 대한 특정 잡기 가능한 오류 목록을 찾는데 도움말의 찾기 대화 상자를 사용할 수 있습니다. 찾기를 누르고 첫 번째 텍스트 상자에 잡기를 입력한 후 항목 보기를 누릅니다. 아래쪽 목록 상자에서 오류 잡기를 선택하고 이동을 누릅니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Property Let이나 Property Set에 대한 인수가 필요합니다

Property Let과 Property Set 프로시저의 용도는 속성에 새 값을 지정하는 것입니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	속성을 설정할 때 오른쪽에 값이 나타나지 않았습니다.

속성값을 설정하는 식 오른쪽에 속성을 설정하려는 값을 놓습니다.

•	프로시저 정의의 식 오른쪽에, 전달된 값을 받도록 정의된 매개 변수가 없거나 잘못 놓였습니다.

프로시저 정의에서 값 인수 목록에 대한 매개 변수를 지정하십시오. 프로시저에 둘 이상의 인수가 있으면 속성값 매개 변수는 목록 맨 끝에 나타나야 합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


이미 선언된 배열입니다

정적 배열은 한 번만 차원을 지정할 수 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	ReDim 문을 사용하여 정적 배열의 차원을 바꾸려 하였습니다. 그러나 동적 배열만 차원을 다시 바꿀 수 있습니다.

변경한 차원을 삭제하거나 동적 배열을 사용하십시오. 동적 배열을 정의하려면 Dim, Public, Private을 사용하거나 빈 괄호와 함께 Static 문을 사용합니다. 예를 들면 다음과 같습니다.

Dim MyArray()

프로시저에서는 요소의 수를 지정하는 변수를 사용한 ReDim 또는 Static 문으로 동적 배열을 정의할 수 있습니다.

ReDim MyArray(n)

•	Option Base 문이 배열의 차원이 설정된 후 나타났습니다.

Option Base 문이 모든 배열 선언 앞에 나타나는지 확인하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


배열 인수는 ByRef이어야 합니다

Dim, ReDim, Static 등으로 선언된 배열은 ByVal로 전달될 수 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	전체 배열을 ByVal로 전달하려 하였습니다.

배열의 각 요소는 ByVal(값 별)로 전달할 수 있지만 전체 배열은 ByRef(참조 별)로 전달해야 합니다. ByRef가 기본이라는 점에 주의하십시오. 배열의 요소에서 바뀐 내용이 호출자에게 전달되지 않도록 하기 위해 배열을 ByVal로 전달해야 하는 경우 괄호 안에 배열 인수를 전달하거나 Variant로 놓은 다음 Variant를 ByVal 매개 변수로 전달합니다. 그 예는 다음과 같습니다.

Dim MyVar As Variant

MyVar = OldArray()

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


찾을 범위의 처음에 이르렀습니다. 끝에서부터 계속하시겠습니까?

찾기 작업이 정상적으로 수행되지 않았습니다. 이 상황의 원인과 해결 방법은 다음과 같습니다.

•	위로 찾는 작업이 지정된 범위의 시작 부분에 도달하였습니다.

찾는 범위의 끝부터 계속 찾거나 작업을 취소하고 찾는 범위를 바꿀 수 있습니다.


If 블록에는 End If가 필요합니다

문이 완성되지 않았기 때문에 오류가 발생하였습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	If 문이 대응되는 End If 문 없이 사용되었습니다.

여러 줄의 If 문은 End If 문으로 종료해야 합니다. 중첩된 If...End If 문의 경우 각 If...End If 문에 있는 If...End If 문이 정확한지 확인하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


이 줄에서는 중단점을 사용할 수 없습니다

중단점은 문의 일부분에만 지정할 수 있습니다. 이 오류의 원인은 다음과 같습니다.

•	다음과 같은 중단점을 지정할 수 없는 줄에 중단점을 지정하려 하였습니다.

•	주석만 들어 있는 줄

•	줄 레이블만 들어 있는 줄

•	선언 (Const, Dim, Static, Type 등)만 들어 있는 줄

•	숨겨진 모듈에 있는 모든 줄

•	직접 실행 창에 있는 모든 줄

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


ByRef 인수 형식이 일치하지 않습니다

기본으로 ByRef(참조 별)로 전달된 인수는 프로시저에서 필요한 정밀한 데이터 형식이어야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	강제로 필요한 형식이 될 수 없는 형식의 인수를 전달하였습니다.

예를 들면 이 오류는 Long이 필요할 때 Integer를 전달하려 한 경우에 발생합니다. 정보를 잃어버리는 경우가 발생하더라도 강제로 지정하면 괄호 안에 인수를 전달할 수 있습니다. 예를 들면 Variant 인수 MyVar을 Integer 인수가 필요한 프로시저에 전달하려면 다음과 같은 호출문을 작성할 수 있습니다.

Dim MyVar

MyVar = 3.1415

Call SomeSub((MyVar))

Sub SomeSub (MyNum As Integer)

MyNum = MyNum + MyNum

End Sub

괄호 안에 인수를 놓으면 식으로 평가하게 됩니다. 이 평가 과정 중에 숫자의 소수 부분은 잘리지 않고 기대한 인수 형식이 되도록 반올림됩니다. 평가 결과는 임시 위치에 놓이며 임시 위치에 대한 참조는 프로시저에서 받습니다. 그 결과 원래 MyVar에는 값이 보존됩니다.

메모   변수의 형식을 지정하지 않는 경우 변수가 Variant를 기본 형식으로 받습니다. 항상 그런 것은 아닙니다. 예를 들면 다음 코드는 두 변수를 선언하는데 첫째 MyVar는 Variant이고 둘째 AnotherVar는 Integer입니다.

Dim MyVar, AnotherVar As Integer

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Visual Basic에서 지원하지 않는 호출 규정입니다

Visual Basic은 인수를 전달해야 하는 순서와 인수 형식 지정 방법을 지정하는 모든 프로시저 호출 규정을 지원하지 않습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	프로시저를 Visual Basic이 지원하지 않는 호출 규정을 사용하여 호출하였습니다. 예를 들면 Visual Basic은 Microsoft Windows 16비트 버전 환경에서는 Pascal 호출 규정을 지원하지 않습니다.

호출 규정이 Visual Basic에서 지원되지 않으면 프로시저를 Visual Basic에서 호출할 수 없습니다. 변경 지원 여부는 개체에 대한 설명서를 참조하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


지정한 파일에 참조를 추가할 수 없습니다

모든 개체 라이브러리 또는 형식 라이브러리를 Visual Basic에서 액세스할 수는 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	참조 추가 대화 상자를 사용하여 참조를 Visual Basic에서 사용할 수 없는 형식 라이브러리 또는 개체 라이브러리에 추가하려 하였습니다.

Visual Basic이 사용할 수 있는 다른 폼이 있는지 알아보려면 라이브러리가 나타내는 개체에 대한 설명서를 참조하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


고정 길이 문자열이나 사용자 정의 형식의 배열을 Variant에 지정하거나 강요할 수 없습니다

Variant는 유효한 VarType을 가진 데이터의 지정만 허용합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	고정 길이 문자열의 배열을 전달하려 하였습니다. 하나의 고정 길이 문자열을 Variant에 지정하면 가변 길이 문자열이 강제로 지정되지만 고정 길이 문자열의 배열에 대해 작업이 완료된 것은 아닙니다.

배열을 전달해야 하면 루프를 사용하여 배열의 각 요소를 가변 길이 문자열의 임시 배열 요소에 지정하십시오. 그러면 배열을 variant에 지정하고 Erase를 사용하여 임시 배열의 지정을 해제할 수 있습니다. 그러나 Erase를 사용하면 고정 길이 배열을 해제할 수 없습니다.

•	고정 길이 문자열 또는 사용자 정의 형식을 VarType 함수 또는 TypeName 함수에 전달하려 하였습니다.

VarType 또는 TypeName 함수의 인수는 유효한 Variant 형식이어야 합니다.

•	사용자 정의 형식을 Variant 변수에 지정하려 하였습니다.

사용자 정의 형식의 전체 변수를 Variant에 직접 지정할 수 없더라도 Array 함수를 사용하여 사용자 정의 형식 변수의 개별 요소를 Variant에 지정할 수 있습니다. 그러면 variant 배열을 가진 Variant가 생성됩니다. 이 variant 배열에 있는 각 요소의 VarType은 사용자 정의 형식의 각 요소에 대한 원래 형식과 대응됩니다.

•	Variant 인수가 필요한 프로시저 호출에서 고정 길이 문자열 또는 사용자 정의 형식의 배열을 인수로 전달하려 하였습니다. 프로시저가 가장 늦게 바인딩될 때, 즉 호출이 실행 모드에서 성립되어야 할 때 모든 인수는 Variant 형식으로 전달해야 한다는 점에 주의하십시오. 예를 들면 다음 코드는 이 오류를 발생시킵니다.

Dim MyForm As Object	' MyForm이 개체이기 때문에 바인딩이 늦습니다.

Set MyForm = New Form1

Dim StringArray(10) As String * 12

' 다음 줄은 오류를 일으킵니다.

MyForm.MyProc StringArray

문자열 배열의 경우에는 배열의 개별 구성원을 가변 길이 문자열의 임시 배열에 지정할 때 루프를 사용하십시오. 그 다음 그 배열을 Variant에 지정하여 프로시저에 전달할 수 있습니다. 사용자 정의 형식의 배열일 때는 Array 함수를 사용하여 사용자 정의 형식 변수의 개별 요소를 Variant에 지정할 수 있습니다. 그러면 variant 배열을 가진 Variant가 생성됩니다. 이 variant 배열에 있는 각 요소의 VarType은 사용자 정의 형식의 각 요소의 원래 형식에 대응됩니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


배열에 지정할 수 없습니다

배열의 각 요소는 개별적으로 지정된 값이 있어야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	값을 지정해야 하는 요소를 지정하지 않고 하나의 값을 배열 변수에 지정하려 하였습니다.

하나의 값을 배열 요소에 지정하려면 아래 첨자에 요소를 지정해야 합니다. 예를 들면 MyArray가 정수 배열이면 식 MyArray = 5는 유효하지 않지만 다음 식은 유효합니다.

MyArray(UBound(MyArray)) = 5

•	전체 배열을 다른 배열에 지정하려 하였습니다. 예를 들면 Arr1이 배열이고 Arr2가 다른 배열이면 다음 두 지정문은 유효하지 않습니다.

Arr1 = Arr2	' 지정이 잘못되었습니다.

Arr1() = Arr2()	' 지정이 잘못되었습니다.

하나의 배열을 다른 배열에 지정하려면 오른쪽 배열의 크기 변경이 가능하고 배열 형식이 일치해야 합니다.

메모   전체 배열이 들어있는 하나의 variant 변수처럼 Variant에 전체 배열을 놓을 수 있습니다.

Dim MyArr As Variant

MyVar = Arr2()

그리고 다음 예처럼 일반 배열과 마찬가지로 아래 첨자 표기법을 사용하여 variant에 있는 배열 요소를 참조합니다.

MyVar(3) = MyVar(1) + MyVar(5)

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


배열 요소의 데이터 형식을 변경할 수 없습니다

ReDim은 배열에 있는 요소의 수를 바꿀 때만 사용할 수 있습니다. 사용이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	ReDim을 사용하여 배열의 데이터 형식을 다시 선언하려 하였습니다.

원하는 형식의 새 배열을 선언한 후 변환 함수를 사용하여 이전 배열의 각 요소를 새 배열의 대응되는 요소에 지정하십시오.

Variant 변수에 배열을 놓을 수도 있습니다. 그러면 다음과 같은 간단한 지정만으로 작업을 완료할 수 있습니다.

Dim MyVar As Variant

MyVar = MyIntegerArray()

이렇게 하면 원래 배열 형식으로 태그가 붙은 배열이 들어 있는 Variant를 만들게 됩니다. 그 다음 모든 유효한 VarType 변수를 variant 내의 배열 요소에 지정할 수 있습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


전용개체 모듈 내에서는 KWID_tkPUBLIC 사용자 정의 형식을 정의할 수 없습니다

개체 모듈 안에 나타나는 사용자 정의 형식은 Public이 될 수 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	개체 모듈에서 Public 사용자 정의 형식을 정의하려 하였습니다.

사용자 정의 형식 정의를 표준 모듈로 옮기고 개체 모듈 또는 다른 모듈에 있는 형식의 변수를 적절하게 선언하십시오. 형식이 나타나는 모듈에서만 형식을 사용하려면 Type...End Type 정의를 개체 모듈에 놓고 정의 앞에 Private 키워드를 넣습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


숨겨진 프로시저를 표시할 수 없습니다

숨겨진 모듈에 있는 모든 것이 숨겨져 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	숨겨진 모듈에서 프로시저를 보려 하였습니다.

프로시저를 보려면 모듈을 숨기지 마십시오. 숨겨진 프로시저에서 오류가 발생한 줄을 보려면 오류를 보기 위한 모듈을 숨기지 않은 후 코드를 실행하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


모듈을 편집할 수 없습니다

보호 표시된 모듈은 볼 수 없으며 편집할 수도 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	보호된 모듈을 편집하려 하였습니다.

모듈에서 보호를 해제하고 다시 편집하십시오. 대개 이 오류는 Visual SourceSafe 추가 기능이 설치되어 있고 파일이 체크 아웃되지 않기 때문에 발생합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


지금은 중단 모드로 들어갈 수 없습니다

중단 모드는 프로그램이 실행되고 있지만 동작은 잠시 중단되어 있는 상태입니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Ctrl+Break(매킨토시에서는 COMMAND+PERIOD)를 누르거나, 표준 도구 모음 또는 디버그 도구 모음에 있는 중단 단추를 누르거나, 코드를 실행할 때 중단점 을 실행하여 중단 모드로 들어가려 하였습니다.

확장(추가 기능) 개체 모델을 사용하여 프로젝트를 프로그램적으로 변경합니다. 그러면 프로그램이 잠시 중단되지 않도록 할 수 있습니다. 실행을 계속하거나 실행을 종료할 수 있으나 잠시 중단할 수는 없습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


디자인 모드에서 직접 실행문을 실행할 수 없습니다

디자인 모드는 코드가 실행되고 있지 않거나 잠시 중단되어 계속 실행되기를 기다리고 있는 상황입니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	직접 실행 창에서 문을 실행하려 했으나 코드가 실행 모드에 있지 않습니다.

코드 실행을 시작한 후 프로그램 실행을 잠시 멈추십시오. 그러면 직접 실행 창에서 코드를 실행할 수 있습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


프로젝트나 라이브러리를 찾을 수 없습니다

없어진 모든 참조를 처리할 때까지 코드를 실행할 수 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	참조된 프로젝트를 찾을 수 없거나, 프로젝트 언어에 대응하는 참조된 개체 라이브러리를 찾을 수 없습니다.

처리되지 않은 참조는 앞에 MISSING이 붙어 참조 대화 상자에 나타납니다. 없어진 프로젝트나 라이브러리의 경로와 언어를 표시하도록 없어진 참조를 선택하십시오. 참조를 처리하려면 다음 단계를 따르십시오.

참조를 처리하려면

1. 참조 대화 상자를 표시하십시오.

2. 없어진 참조를 선택하십시오.

3. 개체 찾아보기를 시작하십시오.

4. 없어진 참조를 찾으려면 찾아보기 대화 상자를 사용하십시오.

5. 확인을 누르십시오.

6. 없어진 모든 참조를 처리할 때까지 앞 단계를 반복하십시오.

잃어버린 항목을 찾으면 다시 연결될 수 있음을 나타내도록 MISSING 접두사가 삭제됩니다. 참조된 프로젝트의 파일 이름이 변경되는 경우 새로운 참조가 추가되므로 이전 참조는 삭제해야 합니다.

더 이상 필요 없는 참조를 삭제하려면 불필요한 참조 옆에 있는 확인란의 선택을 해제합니다. Visual Basic 개체 라이브러리에 대한 참조와 호스트 응용 프로그램 개체 라이브러리는 삭제할 수 없다는 점에 주의하십시오.

응용 프로그램은 서로 다른 언어 버전의 개체 라이브러리를 지원해야 합니다. 어떤 언어 버전이 필요한지 알아보려면 참조를 누르고 대화 상자 아래에 나타난 언어를 확인하십시오.

개체 라이브러리는 확장명이 .OLB인 독립 파일일 수도 있고 동적 연결 라이브러리 (DLL)에 통합될 수도 있습니다. 라이브러리는 서로 다른 플랫폼 버전으로 존재할 수 있습니다. 예를 들면 Macintosh에서 Microsoft Windows로 옮겨지듯이 프로젝트가 다른 플랫폼으로 옮겨지면 해당 플랫폼에 맞는 언어 버전의 참조된 라이브러리를 호스트 응용 프로그램 설명서에서 지정한 위치에서 사용할 수 있습니다.

개체 라이브러리 파일 이름은 일반적으로 다음과 같이 구성됩니다.

•	Windows(버전 3.1과 초기 버전): 응용 프로그램 코드+ 언어 코드+ 버전.OLB. 예를 들면 다음과 같습니다.

프랑스판 Visual Basic for Applications 버전 2 개체 라이브러리는 vafr2.olb입니다.

프랑스판 Microsoft Excel 5.0 개체 라이브러리는 xlfr50.olb입니다.

•	프랑스판 Microsoft Excel 5.0 개체 라이브러리는 xlfr50.olb입니다.

Macintosh: 응용 프로그램 이름 언어 코드 버전 OLB. 예를 들면 Visual Basic for Applications 버전 2 개체 라이브러리는 VA FR 2 OLB입니다.

프랑스 판 Microsoft Excel 5.0 개체 라이브러리는 MS Excel FR 50 OLB입니다.

•	매킨토시: 응용 프로그램 이름 언어 코드 버전 OLB. 예를 들면 다음과 같습니다.

프랑스판 Visual Basic for Applications 개체 라이브러리 버전 2는 VA FR 2 OLB입니다.

프랑스판 Microsoft Excel 5.0 개체 라이브러리는 MS Excel FR 50 OLB입니다.

시스템에서 누락된 프로젝트나 라이브러리를 찾을 수 없으면 참조 프로젝트 작성자에게 문의하십시오. 현재 없는 라이브러리가 Microsoft 응용 프로그램 개체 라이브러리일 경우 다음과 같은 방법으로 얻을 수 있습니다.

•	Microsoft 기술 지원 서비스에 액세스할 수 있으면 도움말 파일의 기술 지원 부분을 참조하십시오. 전자 서비스를 사용할 수 있으면 필요한 서비스를 어떻게 사용할 수 있는지에 대한 지침을 볼 수 있습니다.

•	Microsoft 기술 지원 서비스에 액세스할 수 없으면Microsoft에 응용 프로그램 노트를 요청하여 Microsoft 개체 라이브러리를 사용할 수 있습니다. 지역별 Microsoft 제품 지원부에 연락하는 방법은 이 도움말 파일의 기술 지원 부분을 참조하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


개체 참조 변수나 개체 참조를 포함하고 있는 사용자 정의 형식 변수를 Get 또는 Put할 수 없습니다

개체 참조는 임시이기 때문에 파일을 닫고 여는 사이에 쉽게 잘못될 수 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Get 또는 Put 문에 있는 변수가 개체에 대한 참조를 포함하거나 개체에 대한 참조를 포함하도록 선언하였습니다.

변수가 개체 참조라면 Get과 Put 문에서 사용할 수 없습니다. 파일에 개체 속성의 일부 또는 전체를 놓으려면 각 속성을 개별적으로 지정해야 합니다.

•	Get 또는 Put 문에 있는 사용자 정의 형식 변수에 개체 참조인 요소가 들어있습니다.

변수의 Type 문에 개체를 나타내는 요소가 들어있으면(예를 들면 클래스 모듈에 정의되어 있는 경우, 개체 형식을 가진 경우, 폼 또는 컨트롤인 경우 등) 정의에서 그 부분을 삭제하거나 Get 과 Put 문을 사용하여 정의 부분에 Object 형식 요소가 없도록 새로운 형식을 정의하십시오.

Variant 형식을 가진 사용자 정의 형식에 요소가 있으면 그 요소에 지정된 개체 참조가 없도록 하십시오. Variant는 그러한 지정을 받아들일 수 있지만 사용자 정의 형식이 Get 또는 Put에서 사용된 경우에는 이 오류가 발생합니다.

Input #, Line Input #, Print #, Write #을 사용하면 개체의 기본 속성을 디스크에 기록할 수 있습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


모듈을 로드할 수 없습니다. 형식이 잘못되었습니다

모듈은 텍스트 형식이어야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	이진 형식 파일을 모듈로 로드하려 하였습니다.

일부 버전의 Visual Basic은 이진과 텍스트 형식으로 코드를 저장할 수 있도록 합니다. 가능하면 파일을 마지막으로 저장한 응용 프로그램에 파일을 다시 로드해 텍스트로 저장하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


읽기 전용 속성에 지정할 수 없습니다

일부 속성에는 값을 지정할 수 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	값을 지정할 수 없는 속성에 지정하려 하였습니다.

일부 경우에 속성은 특정 시기에만 값을 지정할 수 있습니다. 예를 들면 어떤 속성은 디자인 모드에서는 값을 지정할 수 있지만 실행 모드에서는 값을 지정할 수 없습니다. 속성에 값을 지정할 수 있는 시기를 알아보려면 해당 속성에 대한 도움말을 참조하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


모듈이 감추어져 있으므로 요청된 작업을 수행할 수 없습니다

이 오류는 Visual Basic 확장(추가 기능) 개체 모듈과 직접적인 관계가 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	모듈이 숨겨져 있습니다. 숨겨진 모듈을 고칠 수 없거나 숨겨진 모듈에서 정보를 얻을 수 없습니다.

모듈을 보이게 하고 작업을 다시 시도합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


조건부 중단점을 배열에 놓을 수 없습니다

배열은 연결된 단일 값을 가지지 않습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	전체 배열 값이 변경되었을 때 프로그램을 잠시 중단해야 하는 조건부 중단점(조사점이라고도 부름)을 설정하려 하였습니다.

배열의 특정 요소에서 조건부 중단점을 설정하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


실행 중인 모듈에 기록할 수 없습니다

실행을 종료해야 기록을 시작할 수 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	모듈 코드 실행 중에 매크로를 기록하여 하였습니다.

실행을 중단하고 Ctrl+Break를 누른 다음이나 매킨토시의 경우에는 COMMAND+PERIOD를 누른 다음에 기록합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


기본 참조를 삭제할 수 없습니다

기본 참조는 항상 존재합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	항상 사용 가능해야 하는 참조를 삭제하려 하였습니다(예: 형식 라이브러리 또는 개체 라이브러리 참조).

참조는 삭제하지 마십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Case Else가 Select Case 밖에 있습니다

Case Else 문은 Select Case와 End Select 문 사이에만 있어야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Select Case...End Select 블록 밖에 Case Else 문이 있습니다.

Case Else 문을 Select Case...End Select 블록 안으로 옮깁니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Case에는 Select Case가 필요합니다

Case 문은 Select Case...End Select 블록 안에 있어야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Case 문 앞에 일치하는 Select Case 문이 없습니다.

Select Case...Case 문의 다른 제어 구조를 확인하고 정확히 일치하는지도 검사하십시오. 예를 들면 Select Case...End Select 문에서 If를 End If 없이 사용하면 이 오류가 발생합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


모듈 간 순환 의존성입니다

모듈, 상수, 사용자 정의 형식 사이에서는 순환 참조할 수 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	첫째 모듈 안에 있는 사용자 정의 형식 또는 상수는 둘째 모듈 안에 있는 사용자 정의 형식 또는 상수를 참조하고, 반대로 둘째 모듈에 있는 사용자 정의 형식과 상수는 첫째 모듈에 있는 사용자 정의 형식과 상수를 참조합니다.

종속된 참조를 삭제합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


개체 모듈은 인터페이스의 모든 프로시저를 수행하여야 합니다

인터페이스는 구현되지 않은 프로시저 프로토타입의 컬렉션입니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Implements 문에서 인터페이스를 지정했지만 인터페이스에 있는 모든 프로시저에 대해 코드가 추가되지 않았습니다.

인터페이스에서 지정된 각 프로시저에 대해 코드를 기술해야 합니다. 빈 프로시저는 적합하지 않습니다. 이 오류는 프로시저에 주석을 넣어 피할 수 있으며 프로시저는 필요한 동작을 처리해야 합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


코드 실행이 중단되었습니다

필요할 때 코드 실행을 잠시 중단할 수 있습니다. 이 조건의 원인과 해결 방법은 다음과 같습니다.

•	Ctrl+Break(Microsoft Windows), Esc키(Microsoft Excel) 또는 COMMAND+PERIOD(매킨토시)의 조합이 발생하였습니다.

오류 대화 상자에서 디버그를 눌러 중단 모드로 들어간 후 계속을 눌러 다시 실행하거나 종료를 눌러 실행을 중단합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


숨겨진 모듈에서 컴파일 오류가 발생하였습니다:<모듈 이름>

보호된 모듈은 표시할 수 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	특정 모듈의 코드에 컴파일 오류가 있지만 프로젝트가 보호되었기 때문에 표시할 수 없습니다.

프로젝트를 보호 해제하고 코드를 다시 실행하여 오류를 확인합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


상수 식이 필요합니다

상수는 초기화해야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	변수, 사용자 정의 형식의 인스턴스, 개체, 함수 호출의 반환값 등으로 상수를 초기화하려 하였습니다.

연산자로 연결한 문자와 상수(논리 연산자 Is는 제외) 또는 이전에 선언한 상수, 문자들로 상수를 초기화하십시오.

•	변수를 사용하여 요소 수를 지정하도록 배열을 선언하였습니다.

프로시저 내에서 동적 배열을 선언하려면 ReDim으로 배열을 선언하고 변수로 요소 수를 지정하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


상수, 고정 길이 문자열, 배열, 사용자 정의 형식, 선언문은 개체 모듈의 Public 구성원으로 사용할 수 없습니다

개체 모듈에 있는 모든 변수를 Public으로 선언할 수는 없습니다. 그러나 프로시저는 기본으로 Public이며 Property 프로시저는 문법적으로 변수를 실험하는데 사용할 수 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	개체 모듈에서 Public 상수를 선언하였습니다.

개체 모듈에서 Public 상수를 선언할 수 없어도 동일한 이름을 가진 Property Get 프로시저를 만들 수 있습니다. 이 이름을 가진 Property Let 또는 Property Set 프로시저를 만들지 않으면 상수를 사용하는 것과 같은 방법으로 사용할 수 있는 읽기 전용 속성을 만드는 효과가 있습니다.

•	개체 모듈에서 고정 길이 문자열을 Public으로 선언하였습니다.

고정 길이 문자열은 허용된 길이를 초과할 때 문자열 데이터를 자르거나 사용자에게 길이를 초과했음을 알리는 Property 프로시저로 실험할 수 있습니다.

•	개체 모듈에 Public 배열을 선언하였습니다.

프로시저가 배열을 반환할 수 없지만 배열을 포함한 Variant 데이터 형식은 반환할 수 있습니다. 클래스 모듈에서 Public 배열을 실험하려면 배열이 들어있는 Variant를 받고 반환할 수 있는 Property 프로시저 집합을 사용하십시오.

•	개체 모듈에 Declare 문이 있습니다.

Declare 문은 묵시적으로 공용입니다. Declare 문 앞에 Private 키워드를 놓으십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


현재의 모듈은 Print 메서드를 지원하지 않습니다

모든 메서드와 속성을 모든 모듈에서 사용할 수는 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	어떤 것도 표시할 수 없는 개체에 대해 Print 메서드를 사용하였습니다. 예를 들면 Print 메서드는 수식어 없이 표준 모듈에서 사용할 수 없습니다.

Print 메서드에 대한 참조를 삭제하거나 적당한 개체로 수식하십시오. 예를 들면 Debug 개체로 수식하면 디버깅 중에 직접 실행 창에서 인수를 표시할 수 있습니다

•	Line, Circle, PSet, Scale 메서드를 받아들일 수 없는 개체에서 이러한 메서드를 사용하였습니다. 예를 들면 이러한 메서드는 표준 모듈 또는 원격 클래스 모듈에서 수식되지 않은 채로 나타날 수 없습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


프로젝트의 순환 참조는 사용할 수 없습니다

프로젝트에 대한 순환 참조가 허용되지 않습니다. 예를 들면 MyProj가 YourProj를 참조하면 YourProj(또는 참조된 YourProj에 있는 프로젝트)는 MyProj를 참조할 수 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	이미 프로젝트의 일부인 프로젝트에 참조를 추가하려 하였습니다.

순환 참조를 제거하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


같은 속성에 대한 속성 프로시저의 정의에 일관성이 없거나 선택 매개 변수 또는 ParamArray가 있습니다

동일한 속성의 Property Get, Property Let, Property Set 프로시저에 대한 매개 변수는 정확히 일치해야 합니다. 단, Property Let에 남는 매개 변수가 하나 있고 그 형식이 대응되는 Property Get의 반환 형식과 일치하는 경우 그리고 Property Set이 대응되는 Property Get보다 많은 매개 변수를 가지고 있고 그 형식이 Variant, Object, 클래스 이름, 개체 라이브러리에서 지정한 개체 라이브러리 형식인 경우는 제외됩니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Property Get 프로시저 매개 변수의 수가 대응되는 Property Let 또는 Property Set 프로시저 매개 변수의 수보다 하나 적습니다.

매개 변수를 Property Let 또는 Property Set에 추가하거나 Property Get에서 해당 매개 변수를 삭제하십시오.

•	Property Get의 매개 변수 형식은 Property Set의 남는 매개 변수를 제외한 다른 대응되는 Property Let 또는 Property Set의 매개 변수와 정확하게 일치해야 합니다.

매개 변수가 일치하도록 대응되는 프로시저 정의에서 매개 변수 선언을 수정하십시오.

•	Property Let의 남는 매개 변수 형식은 대응되는 Property Get 프로시저의 반환 형식과 일치해야 합니다.

Property Let의 남는 매개 변수나 대응되는 Property Get의 반환 형식을 일치하도록 수정하십시오.

•	Property Set의 남는 매개 변수 형식은 대응되는 Property Get의 반환 형식과 다를 수 있지만 Variant, Object, 클래스 이름, 유효한 개체 라이브러리 형식 중 하나여야 합니다.

Property Set 프로시저의 남는 매개 변수가 Variant, Object, 클래스 이름, 개체 라이브러리 형식 중 하나가 되도록 하십시오.

•	Property 프로시저를 Optional 또는 ParamArray 매개 변수를 사용하여 정의하였습니다.

ParamArray 와 Optional 매개 변수는 Property 프로시저에서 사용할 수 없습니다. 프로시저를 이러한 키워드를 사용하지 않고 다시 정의하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Deftype 문은 선언 앞에 와야 합니다

Deftype 문에 DefInt, DefDbl, DefCur 등이 포함되어 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	변수 선언이 모듈 수준의 Deftype 앞에 있습니다.

Deftype 문을 모든 변수 선언 앞으로 옮기십시오.

•	Deftype 문이 프로시저에 나타납니다.

Deftype 문을 모든 변수 선언 앞에 있는 모듈 수준으로 옮기십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


대상 레이블이 너무 멀리 있습니다. 루프, Select Case 또는 If 블록이 너무 큰 경우입니다

프로시저는 시작부터 끝까지의 크기가 64K가 될 수 있지만 분기가 프로시저의 앞쪽이나 뒤쪽에서 일어날 수 있기 때문에 그러한 분기는 양 방향으로 32,767까지 제한됩니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	대상 레이블이 원본 분기 문에서 32,767바이트 이상 떨어진 분기문(GoTo, GoSub)이 있습니다.

레이블을 가깝게 옮기거나 프로시저를 작게 만드십시오.

•	시작부터 끝까지 32K 이상의 메모리를 차지하는 루프 구조가 있습니다.

루프를 작게 만드십시오.

•	시작부터 끝까지 32K 이상의 메모리를 차지하는 Then 또는 Else 절이 If 블록 구조에 있습니다.

구조의 시작 부분 크기를 줄이십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Do에는 Loop가 필요합니다

Do 끝에는 Loop가 와야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Do 문을 Loop 문 없이 사용하였습니다.

Do...Loop 문에서 다른 제어 구조가 정확하게 맞는지 확인하십시오. 예를 들면 Do...Loop 문 안에 End If가 없는 If 블록이 있을 때도 이 오류가 발생합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


현재 범위에서 선언이 중복되었습니다

지정한 이름을 이미 이 범위 수준에서 사용하였습니다. 예를 들면 두 변수를 서로 다른 프로시저에서 정의하는 경우에는 동일한 이름을 사용할 수 있지만 같은 프로시저에서 정의되는 경우에는 동일한 이름을 사용할 수 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	새 변수 또는 프로시저가 기존 변수나 프로시저와 같은 이름입니다. 예를 들면 다음과 같습니다.

Sub MySub()

Dim A As Integer

Dim A As Variant

. . .	' 다른 선언이나 프로시저 코드는 여기에 있습니다.

End Sub

현재 프로시저, 모듈 또는 프로젝트를 확인하고 중복되는 선언을 삭제하십시오.

•	Const 문이 기존 변수 또는 프로시저 이름과 같습니다.

질문에서 상수를 삭제하거나 이름을 바꾸십시오.

•	고정 배열을 여러 번 선언하였습니다.

배열 중 하나를 삭제하거나 이름을 바꾸십시오.

중복되는 이름을 찾습니다. 찾을 이름을 지정할 때는 이름이 같고 형식 선언 문자가 다른 경우에 충돌이 발생하므로 형식 선언 문자를 생략하십시오.

모듈 수준 변수는 프로시저에서 선언한 변수와 동일한 이름을 가질 수 있지만 프로시저 안에서 모듈 수준 변수를 참조할 때는 모듈 이름으로 변수를 지정해야 합니다. 모듈 이름과 참조된 프로젝트 이름은 프로시저 안에서 변수 이름으로 다시 사용할 수 있으며 수식할 수도 있습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


정의가 중복되었습니다

조건부 컴파일러 상수는 값을 하나만 정의할 수 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	동일한 조건부 컴파일러 상수에 대해 두 개의 서로 다른 값을 지정하였습니다. 그 예는 다음과 같습니다.

#Const Mac = 0

#Const Mac = 1

정의 중 하나를 삭제합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Deftype 문이 중복되었습니다

동일한 범위 안에 있는 Deftype 문은 고유한 문자 범위를 지정합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	이 Deftype 문에 대한 문자 범위의 일부 또는 전체가 이미 다른 Deftype 문에 포함되어 있습니다.

문자 범위가 겹치지 않도록 문을 다시 기술하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Option 문이 중복되었습니다

각 종류의 Option 문 중 하나씩만 각 모듈에 나타날 수 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	이 모듈에서 Option Base, Option Compare, Option Explicit, Option Private 문을 둘 이상 정의하였습니다.

모듈에서 중복되는 모든 부분을 삭제합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


편집을 실행 취소할 수 없습니다. 계속하시겠습니까?

실행 취소 명령을 선택하여 편집한 다음 원래 상태로 복원할 수 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	일반적으로 편집 내용이 너무 커서 저장할 수 없을 때 발생합니다.

좀 작은 범위에서 편집을 수행하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Else에는 If가 필요합니다

Else 앞에는 If가 와야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Else 문을 대응되는 If 문 없이 사용하였습니다.

If...End If 문에 있는 다른 제어 구조를 확인하여 정확히 맞도록 만드십시오. 또한 If 블록의 형식이 올바르게 되어 있는지 확인하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


빈 Enum 형식을 사용할 수 없습니다

Enum 형식은 열거형의 이름과 구성원을 지정합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Enum...End Enum 블록에서 열거형의 이름을 지정했지만 구성원 지정에 실패하였습니다.

적어도 한 구성원을 Enum...End Enum 블록에 추가하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


조사식이 비었습니다

조사식 추가 대화 상자는 식 항목이 필요합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	조사식 추가 대화 상자에 조사식을 제공하지 않았습니다.

식을 조사식 추가 대화 상자에 추가하거나 Esc키를 누릅니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


End If에는 블록 If가 필요합니다

End If 문에는 대응되는 If 문이 있어야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	If 절이 생략되었거나 End If와 분리되어 있습니다.

If...End If 문에 있는 다른 제어 구조가 정확히 맞도록 만드십시오. 또한 If 블록의 형식이 올바르게 되어 있는지 확인하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


찾을 범위의 끝에 이르렀습니다. 처음부터 계속하시겠습니까?

찾기 작업이 정상적으로 수행되지 않았습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	아래 방향으로 찾기 작업이 지정한 범위의 끝에 도달하였습니다.

찾는 범위의 시작 부분부터 계속 찾거나 작업을 취소하고 찾는 범위를 바꿀 수 있습니다.


End Select에는 Select Case가 필요합니다

End Select의 앞에는 Select Case가 와야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	대응되는 Select Case 문 없이 End Select 문을 사용하였습니다.

Select Case 블록 아래에 남는 End Select가 있거나 Select Case 블록을 한 프로시저에서 다른 프로시저로 복사할 때 End Select 문이 누락된 경우에 이 오류가 발생합니다. 각 End Select 문이 Select Case 문 끝에 있는지 확인하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


End With에는 With가 필요합니다

End With의 앞에는 With가 와야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	대응되는 With 문 없이 End With 문을 사용하였습니다.

With...End With 문에 있는 다른 제어 구조가 정확히 맞도록 만드십시오. 예를 들면 With...End With 문에 대응되는 End If 없이 If를 사용한 경우에 이 오류가 발생합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


표준 모듈이나 전용 클래스에서 정의된 Enum 형식과 전용 Enum 형식은 공용 프로시저에 대한 매개 변수나 반환 형식, 공용 데이터 구성원 또는 공용 사용자 정의 형식의 필드로 공용 개체 모듈에서 사용할 수 없습니다

이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	노출되지 않은 열거를 공용 프로시저의 매개 변수나 반환 형식 또는 노출된 클래스의 공용 데이터 구성원으로 사용하였습니다.

여기에서 "노출되었다"는 것은 열거를 정의하고 있는 ActiveX 서버에서 열거가 드러났다는 것을 의미합니다. 또한 이 열거가 ActiveX Exe나 Dll 프로젝트에서 공용 클래스로 선언된다는 것과 같은 의미입니다.


시스템 레지스트리에 액세스하는 중 오류가 발생하였습니다

어떤 작업에서는 시스템의 등록 데이터베이스를 액세스해야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	시스템의 등록 데이터베이스가 손상되었습니다.

호스트 응용 프로그램의 설치 프로그램을 다시 실행하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


이벤트 처리기가 잘못되었습니다

이벤트 처리 프로시저의 매개 변수 목록은 이벤트 선언과 정확히 일치해야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	이벤트 처리 프로시저에 잘못된 수의 매개 변수가 있습니다.

남는 매개 변수를 제거하거나 모자라는 매개 변수를 추가하십시오.

•	하나 이상의 이벤트 처리 프로시저에 잘못된 데이터 형식이 지정되었습니다.

매개 변수 형식이 이벤트 선언의 형식과 같은지 확인하십시오.

•	이벤트 처리 프로시저가 Sub가 아니라 Function입니다.

프로시저를 Sub로 만드십시오. 이벤트 처리기는 값을 반환할 수 없습니다.

•	다른 형식 라이브러리는 자신의 형식에 대해 이벤트 이름을 사용합니다.

모호성을 피하려면 적당한 형식 라이브러리로 이름을 지정하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


프로시저 선언이 이벤트 설명이나 같은 이름의 프로시저와 일치하지 않습니다

클래스 모듈에 이벤트 이름과 충돌하는 프로시저 이름이 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	프로시저는 이벤트와 동일한 이름을 갖지만 동일한 기호(즉, 매개 변수 숫자와 형식)를 갖지는 않습니다. 이 오류는 이벤트 프로시저에 새 값을 추가하는 등의 작업을 수행할 때도 발생할 수 있습니다. 예를 들면 폼의 Form_Load 이벤트 프로시저 정의를 고치면 이 오류가 발생합니다.

Sub Form_Load (MyParam As Integer)

. . .

End Sub

프로시저가 이벤트에 대응하는 이벤트 프로시저가 아니면 이름을 바꿉니다. 프로시저가 이벤트에 대응하면 이벤트가 필요로 하는 매개 변수 목록을 만듭니다(있는 경우).

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Exit Do는 Do...Loop 내에서 사용해야 합니다

Exit Do는 Do...Loop 문 안에서만 유효합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Do...Loop 문 밖에서 Exit Do 문을 사용하였습니다.

Exit Do 앞에 유효한 Do 문이 있는지 확인하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Exit For는 For...Next 내에서 사용해야 합니다

Exit For는 For...Next 루프 안에서만 유효합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	For...Next 문 밖에서 Exit For 문을 사용하였습니다.

Exit For 앞에 유효한 For 문이 있는지 확인하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Sub나 Property에서는 Exit Function을 사용할 수 없습니다

Exit 문은 이 문이 들어 있는 프로시저와 일치해야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Sub 또는 Property 프로시저에서 Exit Function을 사용하였습니다.

이러한 형식의 프로시저에는 Exit Sub 또는 Exit Property를 사용하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Function이나 Sub에서는 Exit Property를 사용할 수 없습니다

Exit 문은 프로시저에 있어야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Sub 또는 Function 프로시저에서 Exit Property를 사용하였습니다.

이 형식의 프로시저에는 적당한 Exit 문을 사용하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Function이나 Property에서는 Exit Sub를 사용할 수 없습니다

Exit 문은 프로시저에 있어야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Function 또는 Property 프로시저에서 Exit Sub를 사용하였습니다.

이 형식의 프로시저에는 적당한 Exit 문을 사용하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


배열이 필요합니다

변수를 나타내는 아래 첨자를 가진 변수 이름은 배열입니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	지정한 구문이 배열에 적당하지만 범위 안에 이 이름을 가진 배열이 없습니다.

변수 이름의 철자가 정확한지 확인하십시오. 모듈에 Option Explicit가 들어있지 않으면 변수는 처음 사용할 때 만들어집니다. 배열 변수의 이름을 잘못 썼으면 변수가 만들어지지만 배열로 만들어지지는 않습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


End Function이 필요합니다

End procedure 문은 프로시저에 있어야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	End Property 또는 End Sub를 사용하여 Function 프로시저를 종료하였습니다.

이 형식의 프로시저에는 End Function을 사용하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


End Property가 필요합니다

End procedure 문은 프로시저에 있어야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	End Function 또는 End Sub를 사용하여 Property 프로시저를 종료하였습니다.

이 형식의 프로시저에는 End Property를 사용하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


End Sub가 필요합니다

End procedure 문은 프로시저에 있어야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	End Function 또는 End Property를 사용하여 Sub 프로시저를 종료하였습니다.

이 형식의 프로시저에는 End Sub를 사용하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


End With가 필요합니다

With 블록이 종료되어야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	With 블록이 종료되지 않는 경우입니다.

블록 끝에 End With 문을 넣습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


함수 또는 변수가 필요합니다

문의 구문은 변수 또는 함수 호출을 나타냅니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	이름이 알려진 변수 또는 Function 프로시저 이름이 아닙니다.

이름의 철자를 검사하십시오. 참조하는 프로그램의 가시 영역에 이 이름을 가진 변수 또는 함수가 있는지 확인하십시오. 예를 들면 함수가 Private으로 정의되거나 변수가 Public으로 정의되면 자신의 모듈 안에서만 볼 수 있습니다.

•	값을 프로시저 이름에 부적절하게 지정하였습니다. 예를 들면 MySub가 Sub 프로시저이면 다음 코드가 이 오류를 발생시킵니다.

MySub = 237	' 예상한 함수나 변수 오류를 일으킵니다.

Property Let 프로시저 또는 개체나 개체를 포함한 Variant를 반환하는 Function을 가진 지정문을 사용할 수 있지만 Sub, Property Get, Property Set 프로시저로는 지정문을 사용할 수 없습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


모듈이 아니라 프로시저가 필요합니다

현재 범위에 이 이름의 프로시저는 없지만 이 이름의 모듈은 있습니다. 프로시저는 호출할 수 있지만 모듈은 호출할 수 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	모듈 이름을 프로시저 호출로 사용하였습니다.

프로시저 이름의 철자가 정확한지 확인하고, 호출하려는 프로시저가 다른 모듈에 대해 전용이 되지 않도록 하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


프로젝트나 라이브러리가 아니라 프로시저가 필요합니다

현재 범위에 이 이름의 프로시저는 없지만 이 이름의 프로젝트는 있습니다. 프로시저는 호출할 수 있지만 프로젝트는 호출할 수 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	프로젝트 이름을 프로시저 호출에 사용하였습니다.

프로시저 이름의 철자가 정확한지 확인하고, 호출하려는 프로시저가 다른 모듈에 대해 전용이 되지 않도록 하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


사용자 정의 형식이 아니라 프로시저가 필요합니다

현재 범위에 이 이름의 프로시저는 없지만 이 이름의 사용자 정의 형식은 있습니다. 프로시저는 호출할 수 있지만 사용자 정의 형식은 호출할 수 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	사용자 정의 형식 이름을 프로시저 호출에 사용하였습니다.

프로시저 이름이 정확한지 확인하고 호출하려는 프로시저가 다른 모듈에 대해 전용이 되지 않도록 하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


변수가 아니라 프로시저가 필요합니다

현재 범위에 이 이름의 프로시저는 없지만 이 이름의 변수는 있습니다. 프로시저는 호출할 수 있지만 변수는 호출할 수 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	변수 이름을 프로시저 호출에 사용하였습니다.

유효한 프로시저 이름의 철자가 틀렸을 때는 묵시적으로 정의된 변수로 잘못 구성될 수 있기 때문에 오류가 발생할 수 있습니다. 프로시저 이름이 정확한지 확인하고 호출하려는 프로시저가 다른 모듈에 대해 전용이 되지 않도록 하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Sub, Function 또는 Property가 필요합니다

문의 구문은 Sub, Function, Property 프로시저 실행을 나타냅니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	지정한 이름이 프로그램의 이 범위에 있는 Sub, Function, Property 프로시저 이름이 아닙니다.

이름의 철자를 확인하십시오. 프로시저가 Private로 정의된 경우에는 모듈 내에서만 호출할 수 있습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


프로젝트가 아니라 사용자 정의 형식이 필요합니다

현재 범위에 이 이름의 사용자 정의 형식은 없지만 이 이름의 프로젝트는 있습니다. 변수는 사용자 정의 형식을 가진 것으로 정의할 수 있지만 프로젝트 형식은 정의할 수 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	프로젝트 이름을 사용자 정의 형식으로 사용하였습니다.

사용자 정의 형식 이름의 철자를 확인하고, 사용자 정의 형식이 다른 모듈에 대해 전용이 되지 않도록 하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Enum 형식이 아니라 변수나 프로시저가 필요합니다

Enum 형식의 이름은 열거형을 선언하는 문에 나타나거나 수식어로 나타납니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Enum 형식 이름을 열거형 변수 이름 대신 사용하였습니다.

Enum 형식 변수를 선언하거나 현재 범위에서 이전에 선언해 놓은 변수를 찾아서 사용하십시오.

•	Enum 형식 이름을 변수 또는 프로시저 이름 대신 사용하였습니다.

오류가 발생한 식별자의 철자를 검사하십시오. Enum 형식을 지정한 변수 또는 프로시저 이름을 사용하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


모듈이 아니라 변수나 프로시저가 필요합니다

현재 범위에 이 이름의 변수 또는 프로시저는 없지만 이 이름의 모듈은 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	모듈 이름을 변수 또는 프로시저로 사용하였습니다.

변수 또는 프로시저 이름이 정확한지 검사하고 참조하려는 이름이 다른 모듈에 대해 전용이 되지 않도록 하십시오. 모듈 이름은 수식어일 수 있지만 독립적으로 사용할 수는 없습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


프로젝트가 아니라 변수나 프로시저가 필요합니다

현재 범위에 이 이름의 변수 또는 프로시저는 없지만 이 이름의 프로젝트는 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	프로젝트 이름을 변수 또는 프로시저로 사용하였습니다.

변수 또는 프로시저 이름이 정확한지 확인하고 참조하려는 이름이 다른 모듈에 대해 전용이 되지 않도록 하십시오. 프로젝트 이름은 수식어일 수 있지만 독립적으로 사용할 수는 없습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


<various>(이)가 필요합니다
<various>이(가) 필요합니다

필요한 구문의 일부를 찾을 수 없습니다. 오류는 일반적으로 선택한 항목 왼쪽에 있지만 항상 그렇지는 않습니다. 예를 들면 Call 키워드의 존재 여부에 상관없이 Sub 프로시저를 로드할 수 있습니다. 그러나 Call 키워드를 사용하면 괄호 안에 인수 목록을 넣어야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	필요: 문의 끝. 프로시저를 호출할 때 괄호를 잘못 사용하였습니다.

X = Workbook.Add F:= 5	' 괄호가 없어서 생긴 오류

Call MySub 5	' 괄호가 없어서 생긴 오류

인수를 지정하는 함수 호출에서 괄호를 사용하거나 Call 키워드를 사용하는 Sub 프로시저를 사용하십시오.

•	필요: ). 프로시저 호출에서 잘못된 구문을 사용하였습니다. 예를 들면 함수 호출은 독립적일 수 없고 Sub 프로시저 호출은 인수 지정 방법에 따라 Call 키워드가 필요할 수 있습니다.

Workbook.Add (X:=5, Y:=7)	' 식없이 함수 호출

YourSub(5, 7)	' 호출없이 하위 요청

식에서는 항상 함수 호출을 사용하십시오. Sub 프로시저 호출 시 괄호 안에 여러 인수가 있으면 Call 키워드를 사용해야 합니다.

•	필요: 식. 예를 들면 개체 찾아보기에서 코드를 붙일 때 명명된 인수에 대한 값을 지정하는 것을 잊을 수 있습니다.

Workbook.Add (X:= )	' 지정된 값이 없어서 생긴 오류

' 명명된 인수

인수에 값을 추가하거나 불필요한 경우 인수를 삭제하십시오.

•	필요: 변수. 예를 들면 변수 이름에 제한된 키워드를 사용할 수 있습니다. 다음 예에서 Input # 문은 둘째 인수로 변수가 있어야 합니다. Type이 제한된 키워드이기 때문에 변수 이름으로 사용할 수 없습니다.

Input # 1, Type	' 형식 키워드는 변수 이름으로

' 잘못 사용되었습니다.

키워드와 충돌하지 않도록 변수 이름을 바꿉니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


외부 이름을 정의하지 않았습니다

외부 이름은 대괄호( ) 안에 넣어 표시할 수 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	대괄호 안에 지정된 식별자가 호스트 응용 프로그램에서 의미가 없습니다.

이름의 철자가 호스트에서 원하는 이름과 동일한지 확인하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


더 이상 지원되지 않는 파일 형식입니다

모든 파일 형식을 모든 환경에서 읽을 수는 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	이전 버전의 Visual Basic으로 만든 이진 파일을 로드하려고 하였습니다.

파일을 만든 버전의 Visual Basic으로 파일을 로드하고 텍스트 형식으로 저장한 후 다시 로드합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


개체 모듈에 정의된 공용 사용자 정의 형식 필드에서 고정 길이 문자열과 `new' 한정자를 사용할 수 없습니다
개체 모듈에 정의된 공용 사용자 정의 형식 필드에서 고정 길이 문자열과 �new� 한정자를 사용할 수 없습니다

이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	개체 모듈에서 정의된 공용 사용자 정의 형식의 필드에서 고정 길이 문자열과 'new' 한정자를 사용할 수 없습니다.


고정 길이 문자열을 개체 모듈의 공용 구성원 형식으로 사용할 수 없습니다. 전용 개체 모듈을 공용 개체 모듈의 공용 구성원 형식으로 사용할 수 없습니다

이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	개체 모듈의 공용 구성원의 형식을 고정 길이 문자열로 설정할 수 없습니다. 다른 변수 형식을 사용하십시오.

•	공용 개체 모듈의 공용 구성원의 형식을 전용 개체 모듈로 설정할 수 없습니다. 다른 형식을 사용하십시오.


고정 데이터나 정적 데이터는 64K 이하 이어야 합니다

고정 데이터와 정적 데이터에는 비자동 변수, 고정 길이 문자열, 고정 배열이 포함됩니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	모듈 수준 데이터를 64K 이상 지정하려 하였습니다.

선언된 데이터 양을 줄이십시오. 모듈 수준 데이터의 최대 크기가 64K라도 모듈 수준의 변수 길이 문자열과 배열은 이 한계를 넘을 수 있다는 점에 주의하십시오.

•	모듈에서 고정 프로시저 수준 데이터를 64K 이상 지정하려 하였습니다.

선언한 이 형식의 데이터 양을 줄이십시오. 모듈의 프로시저에 있는 고정 데이터는 전체 64K(프로시저 당 64K가 아님)까지 사용할 수 있습니다. 정적 변수 길이 문자열과 배열은 이 한계를 넘을 수 있습니다.

•	사용자 정의 형식의 크기가 64K를 초과합니다.

사용자 정의 형식의 크기를 줄이십시오. 일반적으로 사용자 정의 형식의 크기는 요소에 지정한 크기의 합과 같습니다. 일부 플랫폼에서는 요소 간에 단어 경계에서 맞추기 위해 불필요한 내용이 들어갈 수 있습니다. 하나의 사용자 정의 형식을 다른 형식에 중첩하면 중첩된 형식의 크기는 새 형식 크기 안에 포함되어야 합니다.

•	프로시저에서 32K 이상이 필요한 사용자 정의 형식의 변수를 선언하려 하였습니다.

모듈 수준에서 사용자 정의 형식의 최대 크기가 64K라도 프로시저에서 사용자 정의 형식 변수는 32K를 넘을 수 없습니다. 사용자 정의 형식에 필요한 크기를 줄이거나 모듈 수준 변수를 사용하십시오.

•	프로시저 안에 선언된 고정 길이 문자열이 65,464를 넘었습니다.

고정 길이 문자열의 크기를 줄이십시오. 가변 길이 문자열은 이 크기를 넘을 수 있습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


For 컨트롤 변수는 이미 사용 중입니다

For...Next 루프를 중첩할 때 각 루프마다 서로 다른 컨트롤 변수를 사용해야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	안쪽 For 루프에서 바깥쪽 For 루프와 동일한 계수기를 사용하였습니다.

중첩 루프의 반복 상태를 확인하십시오. 예를 들면 바깥쪽 루프가 For Count = 1 To 25를 사용하면 안쪽 루프는 컨트롤 변수로 Count를 사용할 수 없습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


For Each 컨트롤 변수는 Variant나 Object이어야 합니다

컨트롤 변수는 For Each...Next 구문의 element 부분입니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	컬렉션에 Variant 또는 Object 형식이 아닌 컨트롤 변수가 있습니다.

For Each...Next의 element 부분이 Variant 또는 Object인지 확인하십시오.

•	배열에 Variant가 아닌 컨트롤 변수가 있습니다.

For Each...Next의 element 부분이 Variant인지 확인하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


배열의 For Each 컨트롤 변수는 Variant이어야 합니다

컨트롤 변수는 For Each...Next 구문의 element 부분입니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	배열에 Variant가 아닌 컨트롤 변수가 있습니다.

For Each...Next의 group 부분이 Variant 형식 변수인지 확인하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


For Each는 사용자 정의 형식이나 고정 길이 문자열의 배열에는 사용되지 않습니다

For Each 문은 개체 배열을 포함하여 컬렉션과 고유 형식의 배열에서만 유효합니다. 또한 고정 길이 문자열의 배열은 For Each를 사용하여 반복할 수 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	For Each 문에 있는 배열 요소에 사용자 정의 형식이 있습니다.

배열 요소를 반복하려면 일반적인 For...Next 루프를 사용하십시오.

•	For Each 문에 있는 배열 요소에 고정 길이 문자열 형식이 있습니다.

배열 요소를 반복하려면 일반적인 For...Next 루프를 사용하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


For Each는 컬렉션 개체나 배열을 반복하기만 할 수 있습니다

For Each 문은 컬렉션과 배열과만 사용할 수 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	For Each 구문의 group 부분으로 컬렉션이나 배열이 아닌 개체를 지정하였습니다.

반복하려는 항목의 철자를 코드에 있는 범위 내의 컬렉션 또는 배열에 대응하도록 검사하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


For에는 Next가 필요합니다

모든 For 문에는 Next 문이 있어야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	For 문이 대응되는 Next 문 없이 사용되었습니다.

바깥쪽 For...Next 구조 안에 잘못된 For...Next 구조가 있는지 확인하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


사용자 정의 형식의 이전 참조입니다

사용자 정의 형식은 참조하기 전에 정의해야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	선언하기 전에 사용자 정의 형식으로 변수를 선언하였습니다. 다음 예에서는 변수 OtherVar이 형식(OtherType)을 알기 전에 선언되었습니다.

Type MyType

OtherVar As OtherType

End Type

Type OtherType

WholeVar As Integer

RealVar As Double

End Type

전방 참조가 나타나지 않도록 형식 정의의 위치를 다시 지정하십시오.

•	자체 내에 사용자 정의 형식이 중첩되었습니다.

Type MyType

MyVar As Integer

OtherVar As MyType

End Type

자체 참조하도록 중첩된 형식을 제거하십시오. 이 오류는 이미 선언한 다른 형식 안에 형식을 중첩했을 때도 간접적으로 나타날 수 있습니다. 중복이 줄어들도록 중첩된 각 형식의 정의를 확인하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


지정의 왼쪽에서 호출하는 함수는 Variant나 Object를 반환해야 합니다

함수 호출이 지정 왼쪽에 나타났지만 함수의 반환값이 Object 또는 Variant인 경우에만 사용할 수 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	지정 왼쪽에 있는 함수의 반환 형식이 Variant 또는 Object가 아닙니다.

반환 형식을 바꾸십시오. 반환값이 개체 또는 개체를 포함한 Variant이면 지정은 개체의 기본 속성으로 설정된다는 점을 주의하십시오. 반환된 Variant가 개체가 아니면 지정이 효과가 없습니다.

•	호출에 설정된 모든 것이 정상이지만 완료할 수 없습니다. 예를 들면 디자인 모드에서만 설정할 수 있는 속성을 설정하려 하고 있습니다.

디자인 모드로 들어가서 속성 창에서 속성을 설정하십시오. 프로그램적으로 속성을 설정하려 한 코드를 삭제하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


제한적으로 표시되거나 형식을 사용하는 함수는 Visual Basic에서 지원하지 않습니다

형식 라이브러리 또는 개체 라이브러리에 있는 모든 프로시저를 모든 프로그래밍 언어에서 액세스할 수는 없습니다. 형식과 개체 라이브러리 작성자는 매크로 언어에서 함수 사용을 일부 제한한 것을 알 수 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	사용 제한된 방법으로 함수를 사용하였습니다.

프로그램에서 함수를 사용할 수 없습니다. 라이브러리가 나타내는 개체에 대한 설명이 있으면 동일한 기능을 가진 메서드가 제공되는지 확인하십시오.

•	매개 변수 형식이 필요하거나 Visual Basic에서 사용할 수 없는 반환 형식을 가진 함수를 사용하였습니다.

Visual Basic 구문으로 반환값을 실험할 수 있는 경우도 있습니다. Variant 데이터 형식의 하부 형식을 확인하십시오. 참조로 필요한 비 Basic 매개 변수 형식에 대해서 실험해볼 수도 있습니다. 그러나 비 Basic 형식에 대한 실험으로 Variant 데이터 형식에 대한 값에 의한 전달이 가능하지는 않습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


식별자가 너무 깁니다

식별자는 255자를 넘을 수 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	식별자가 255자를 초과하였습니다.

식별자의 길이를 줄이십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


커서 아래 식별자는 프로시저 이름이 아닙니다

프로시저를 보려고 했지만 삽입점에 있는 식별자가 프로시저 이름이 아닙니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	식별자가 프로시저 이름이 아닙니다.

식별자의 철자를 검사해 봅니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


DLL 버전이 틀립니다

Visual Basic의 각 버전은 해당 동적 연결 라이브러리(DLL)에서만 작동합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	사용 중인 Visual Basic 동적 연결 라이브러리 버전이 호스트 응용 프로그램에 필요한 버전과 맞지 않습니다. 프로그램이 DLL에서 루틴을 호출하려 하지만 라이브러리 버전이 Visual Basic 버전 또는 호스트 응용 프로그램과 맞지 않습니다.

올바른 버전의 라이브러리를 얻고 이전 버전이 올바른 버전의 경로 앞에 오지 않도록 하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


OLE 버전이 틀립니다

OLE 동적 연결 라이브러리(DLL) (Windows) 또는 코드 리소스(매킨토시) 버전이 호스트 응용 프로그램에서 필요한 것과 맞지 않습니다. Microsoft Windows에서 응용 프로그램은 현재 디렉터리에서 DLL을 먼저 찾고 사용자가 지정한 경로에 따라 찾은 다음 WINDOWS\SYSTEM 디렉터리에서 찾습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	호스트 응용 프로그램에서 필요로 하는 DLL 버전이 나타나기 전에 이전 버전의 OLE DLL이 발견되었습니다.

두 버전의 DLL을 사용하지 않도록 해야 합니다.

일반적인 경우 매킨토시에서는 OLE 파일이 Extensions 폴더에만 있기 때문에 이 오류는 발생하기 어렵습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


직접 실행 창 메모리가 부족하여 변수를 만들 수 없습니다

직접 실행 창의 메모리가 충분하지 않습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	프로그램의 코드 구문에서 만든 것이 아니기 때문에 코드를 실행할 수 없는 직접 실행 창에서 변수를 지정하였습니다.

직접 실행 창에 있는 변수에 대한 참조를 삭제하거나 직접 실행 창에서 만들어지지 않도록 프로그램의 코드 구문에서 변수를 선언하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


메모리가 부족하여 실행 취소 정보를 저장할 수 없습니다

편집한 후 현재 상태를 복원하기 위한 실행 취소 명령을 사용할 수 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

실행 취소를 위해 저장하기에는 편집한 내용이 너무 큽니다.

편집 내용을 줄이십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


프로젝트 정보가 부족하여 현재 사용 중인 버전이나 플랫폼에서 프로젝트를 로드할 수 없습니다

프로젝트를 저장할 때는 최신 버전의 프로젝트나 다른 플랫폼에서의 프로젝트 로드에 필요한 기타 정보도 저장됩니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	이 프로젝트를 저장할 때 다른 버전 또는 플랫폼에서 프로젝트를 로드할 때 필요한 모든 정보를 저장하기에는 메모리가 부족하다는 오류가 나타납니다.

이전에 저장했던 버전의 Visual Basic 또는 플랫폼으로 파일을 로드하고 다시 저장하십시오. 저장 중에 오류 메시지가 나타나지 않으면 현재 버전 또는 플랫폼에서 파일을 로드할 수 있는 것입니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


구현할 수 있는 인터페이스가 아닙니다

Visual Basic에서 모든 인터페이스를 구현할 수는 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	인터페이스에 Visual Basic에서 지원할 수 없는 요소가 몇 개 들어 있습니다. 예를 들면 Visual Basic에는 부호 없는 long integer 형식과 비슷한 것이 없기 때문에 Visual Basic은 프로시저 매개 변수를 인식할 수 없습니다. Visual Basic이 Visual Basic 식별자에서 밑줄(_) 사용을 지원하더라도 구성원의 이름에서는 밑줄을 사용한 인터페이스를 처리할 수 없습니다.

Visual Basic에서 인터페이스를 구현할 수 없습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Access 모드가 잘못되었습니다

Open 문에서 지정된 파일 형식에 대해 잘못된 액세스 형식을 지정하였습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Input용으로 파일을 열려 했지만 잘못된 액세스 모드를 지정하였습니다.

입력용으로 파일을 열 때 액세스 모드 지정을 생략할 수 있지만 그렇게 지정하면 액세스 모드는 Read이어야 합니다. Write와 Read Write는 Input용으로 연 파일에는 맞지 않는 액세스 모드입니다.

•	Append용으로 파일을 열려 했지만 잘못된 액세스 모드를 지정하였습니다.

추가용으로 파일을 열 때 액세스 모드 지정을 생략할 수 있지만 그렇게 지정하면 액세스 모드는 Write이어야 합니다. Read와 Read Write는 Append용으로 연 파일에는 맞지 않는 액세스 모드입니다.

•	Output용으로 파일을 열려 했지만 잘못된 액세스 모드를 지정하였습니다.

출력용으로 파일을 열 때 액세스 모드 지정을 생략할 수 있지만 그렇게 지정하면 액세스 모드는 Write이어야 합니다. Read와 Read Write는 Output용으로 연 파일에는 맞지 않는 액세스 모드입니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Sub나 Function 또는 Property의 속성이 잘못되었습니다

일부 속성은 프로시저 안에서 사용할 수 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Public 또는 Private 속성이 프로시저 정의 본문 안에 있습니다.

프로시저에서 속성을 제거하십시오. 변수를 더 넓은 범위에 적용하려면 모듈 수준으로 선언을 옮기십시오. 프로시저 안에서 선언된 변수는 항상 Private입니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


문자가 잘못되었습니다

문자는 현재 구문에서 사용할 수 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	변수 이름에 괄호나 하이픈 같은 잘못된 문자를 사용하였습니다.

선언부에서 선언한 이름과 같은지 비교해 봅니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


데이터 형식이 잘못되었습니다

파일에서 읽은 데이터가 올바른 형식이 아닙니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	프로젝트 파일 또는 개체 라이브러리 파일이 손상되었거나 알 수 없는 형식입니다.

새로운 버전의 프로젝트 파일이나 개체 라이브러리 파일을 구합니다.

•	.exe 파일을 모듈로 읽어 들이려 하였습니다.

그 대신 원본 코드를 읽어 들이십시오.

•	참조 대화 상자와 개체 찾아보기를 사용하여 참조를 개체 라이브러리가 아닌 파일 또는 호스트 응용 프로그램에서 지원하지 않는 형식의 Basic 프로젝트가 들어있는 파일에 추가할 수 있습니다. 예를 들면 Windows 플랫폼에서 Microsoft Excel은 .bas, .frm 파일 또는 Basic 코드가 들어있는 Microsoft Project 파일을 이해할 수 없습니다.

질문 파일을 만든 응용 프로그램으로 파일을 읽어 들이고 호환되는 형식으로 저장하십시오. 예를 들면 개체 라이브러리 원본 코드는 MkTypLib를 통해 처리할 수 있으며 QuickBasic과 Visual Basic 코드는 텍스트 형식으로 저장할 수 있습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


상수에 대한 데이터 형식이 잘못되었습니다

모든 종류의 데이터를 상수에 지정할 수는 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	상수를 사용자 정의 형식, 개체 또는 배열로 선언하려 하였습니다.

선언을 삭제하거나 변수로 다시 선언하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


직접 실행 창에 오류가 있습니다

모든 문을 직접 실행 창에서 사용할 수는 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	선언이 사용되었습니다. 예를 들면 Const, Declare, Deftype, Dim, Function, Option Base, Option Explicit, Option Compare, Option Private, Private, Public, Property 프로시저 선언(Property Let, Property Set, Property Get), ReDim, Static, Sub, Type은 직접 실행 창에서 사용할 수 없습니다.

직접 실행 창에서 선언을 삭제하십시오.

•	Sub, Function, Property, GoSub, GoTo, Return, Resume 같은 제어 흐름 문이 사용되었습니다.

직접 실행 창에서 이러한 문을 삭제하십시오.

•	직접 실행 창에서 분리된 실제 줄 사이에 논리적 연결이 있기 때문에 블록 If 문처럼 실제 여러 줄로 형식 지정 문은 제대로 실행할 수 없습니다.

이런 블록은 분리된 각 문 옆에 콜론(:)을 입력하여 하나의 실제 줄로 만들 수 있습니다. 반대로 직접 실행 창에서 빈 칸 뒤에 밑줄(_)을 넣은 줄 연속 문자 문자를 사용하여 하나의 문을 여러 실제 줄로 확장할 수 있습니다.

•	프로그램의 현재 상태가 유효한지 확인할 수 없고 프로그램을 다시 시작해야 하는 직접 실행 창에서 코드를 실행하려 하였습니다.

직접 실행 창에서 질문에 있는 코드를 삭제하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


내부 프로시저가 잘못되었습니다

문은 Sub 또는 Function 프로시저에 있을 수 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Declare, Deftype, Private, Public, Option Base, Option Compare, Option Explicit, Option Private, Type 문 중 하나가 프로시저에 나타났습니다.

프로시저에서 문을 삭제합니다. 문은 모듈 수준에 위치할 수 있습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


고정 길이 문자열의 길이가 잘못되었습니다

이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	고정 크기의 문자열 길이가 0으로 선언되었습니다.

고정 크기 문자열에는 적어도 문자가 하나는 있어야 합니다.

•	고정 크기 문자열이 65,526자를 초과하였습니다.

고정 크기 문자열에 지정한 길이를 줄입니다.

메모   가변 길이 문자열은 최대 한계를 넘을 수 있으며 길이가 0일 수도 있습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Next 컨트롤 변수 참조가 잘못되었습니다

For...Next 루프의 Next 부분에 있는 숫자 변수는 For 부분에 있는 변수와 일치해야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	For...Next 루프의 Next 부분에 있는 변수가 For 부분에 있는 변수와 다릅니다. 예를 들면 다음과 같습니다.

For Counter = 1 To 10

MyVar = Counter

Next Count

Next 부분에 있는 변수가 For 부분과 일치하는지 철자를 확인하십시오. 또한 변수를 사용한 루프의 일부를 부주의하게 삭제하지 않았는지 확인하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


참조가 잘못되었거나 조건이 없습니다

마침표로 시작하는 식별자는 With 블록 안에서만 유효합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	식별자가 마침표로 시작합니다.

식별자의 수식을 완성하거나 마침표를 지웁니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


외부 프로시저가 잘못되었습니다

문은 Sub 또는 Function, 속성 프로시저(Property Get, Property Let, Property Set) 내에 있어야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Static 또는 ReDim 같은 실행 가능 문이 모듈 수준에 나타났습니다.

모든 모듈 수준 변수는 정적이므로 Static은 필요 없습니다. 모듈 수준에서는 ReDim 대신 Dim을 사용하십시오. 모듈 수준에서 동적 배열을 만들려면 빈 괄호를 사용하여 Dim으로 선언하십시오.

메모   모듈 수준에서는 주석과 Const, Declare, Deftype, Dim, Option Base, Option Compare, Option Explicit, Option Private, Private, Public, Type 같은 선언만 사용할 수 있습니다. Sub, Function, Property 문은 프로시저 본문 밖에 나타나지만 프로시저 선언에서는 안쪽에 나타납니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


ParamArray 사용이 잘못되었습니다

ParamArray로 정의된 매개 변수가 프로시저에서 잘못 사용되었습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	ParamArray를 배열 또는 ByRef Variant가 필요한 다른 프로시저에 인수로 전달하려 하였습니다.

ParamArray 매개 변수를 Variant에 지정한 후 variant를 전달하십시오.

•	Erase 또는 ReDim 문을 프로시저 안에서 ParamArray 매개 변수와 함께 사용하려 하였습니다.

Erase 또는 ReDim을 삭제하십시오. 이러한 동작은 ParamArray 매개 변수에서 수행할 수 없습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


프로시저 이름이 잘못되었습니다

식별자의 이름 짓기 규칙 이외에 프로시저 이름 짓기에도 제한이 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	프로시저를 정의하려 했지만 프로시저에 사용한 이름을 호스트에서 이미 다른 용도의 식별자로 사용했기 때문에 유효하지 않습니다. 예를 들면 호스트 응용 프로그램이 Microsoft Excel이면 식별자를 이미 Microsoft Excel에서 사용하고 있기 때문에 R1C1이라는 이름으로 프로시저를 정의할 수 없습니다.

프로시저 이름으로 다른 이름을 선택하십시오.

•	프로시저 이름은 255 문자를 초과할 수 없는 제한된 키워드이거나 문자로 시작하지 않습니다.

프로시저 이름으로 다른 이름을 선택하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


수식어가 잘못되었습니다

수식어는 모호성을 피하기 위해 사용됩니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	수식어는 현재 범위 내에서 프로젝트, 모듈, 개체, 사용자 정의 형식의 변수를 구별하지 않습니다.

수식어의 철자를 검사하십시오. 현재 범위에서 식별자를 수식하고 있는지 확인하십시오. 예를 들면 Private 모듈에 있는 사용자 정의 형식 변수는 해당 모듈 안에서만 볼 수 있습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


ReDim이 잘못되었습니다

모든 배열의 차원을 다시 지정할 수는 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	변수가 Variant를 묵시적으로 선언했으며 변수를 배열로 바꾸기 위해 ReDim을 사용하려 하였습니다.

Variant는 배열을 포함할 수 있지만 명시적으로 선언된 경우에는 ReDim을 사용하여 배열로 만들 수 없습니다. ReDim을 사용하여 포함할 수 있는 요소 수를 지정하기 전에 Variant를 선언해야 합니다. 예를 들면 다음 코드에서는 ReDim AVar(10)이 잘못된 ReDim 오류가 발생하지만 ReDim BVar(10)는 발생하지 않습니다:

AVar = 1	' 묵시적인 AVar 선언입니다.

ReDim AVar(10)	' 잘못된 ReDim 오류를 일으킵니다.

.

.

.

Dim BVar	' 명시적인 BVar 선언입니다.

ReDim BVar(10)	' 오류가 없습니다.

•	ReDim을 사용하여 Variant 내에 포함된 배열의 차원을 둘 이상 바꾸려 하였습니다.

ReDim만을 사용하여 Variant에 있는 배열의 마지막 차원 크기를 바꿀 수 있습니다. 차원을 다시 지정할 수 있는 다중 차원으로 배열을 만들려면 배열이 Variant 내에 포함될 수 없으며 정상적인 방법으로 선언해야 합니다.

•	정상적인 배열의 요소 수를 바꾸려면 ReDim만 사용할 수 있으며 그 요소 형식은 바꿀 수 없습니다.

배열에서 요소 형식을 바꿀 수 있도록 하려면 Variant 내에 포함된 배열을 사용하십시오. 배열을 맨 처음 선언할 때 요소 형식과 수는 다음과 같이 바꿀 수 있습니다.

Dim MyVar As Variant	' 변수를 선언합니다.

ReDim MyVar(10) As String	' String 하위 형식의 배열로서 ReDim합니다.

ReDim MyVar(20) As Integer	' Integer 하위 형식의 배열로서 ReDim합니다.

ReDim MyVar(5) As Variant	' Variant 하위 형식의 배열로서 ReDim합니다.

•	자동화 개체의 구성원인 배열에서 ReDim을 사용하려 하였습니다.

ReDim을 삭제하십시오.

메모   변수 형식을 지정하지 않으면 변수는 기본 형식인 Variant를 갖습니다. 이것은 항상 분명하지는 않습니다. 예를 들면 다음 코드는 두 변수를 선언하는데 첫째 MyVar는 Variant이고 둘째 AnotherVar는 Integer입니다.

Dim MyVar, AnotherVar As Integer

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


조건부 컴파일러 상수 선언의 구문이 잘못되었습니다

옵션 대화 상자에서 조건부 컴파일러 상수를 선언하는 것은 코드에서 상수를 선언하는 것과 다릅니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	옵션 대화 상자에서 상수 선언을 입력할 때 적당하지 않은 구문을 사용하였습니다.

유일하게 유효한 구문은 식별자에 정수 값을 지정하는 간단한 지정문입니다. 항목 구문은 다음과 같이 콜론(:)으로 상수를 구분해야 합니다.

constantname = [{+ | � }]integervalue : [{+ | � }]constantname = integervalue [...]

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


형식 선언 문자가 잘못되었습니다

형식 선언 문자가 유효하지만 모든 데이터 형식에 존재하지는 않습니다. 즉, 어떤 상황에서는 사용할 수 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	As 절을 가진 Private, Public, Static 문에서 선언된 변수에 형식 선언 문자를 추가하였습니다.

형식 선언 문자를 삭제하십시오.

•	형식 선언 문자를 일관성 없는 문자에 추가하였습니다. 예를 들면 &는 Long 형 정수의 형식 선언 문자이기 때문에 다른 형식의 문자에 이 문자를 추가하면 오류가 발생합니다.

10.253&

형식 선언 문자를 삭제하거나 정확한 문자로 바꾸십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


AddressOf 연산자의 사용이 잘못되었습니다

AddressOf 연산자(Visual Basic 5.0에서만)는 인수를 수정하여 함수 호출 결과를 전달하는 대신 함수 주소를 전달합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	클래스 메서드 이름을 가진 AddressOf를 사용하려 하였습니다.

.bas 모듈에 있는 Visual Basic 프로시저의 이름만 AddressOf로 수정할 수 있습니다. 클래스 메서드는 지정할 수 없습니다.

•	AddressOf가 수정한 프로시저 이름이 다른 프로젝트에 있는 모듈에서 정의되었습니다.

•	DLL 함수 또는 형식 라이브러리에서 AddressOf로 정의한 함수의 이름을 고치려 하였습니다.

•	DLL과 형식 라이브러리 함수는 AddressOf로 수정할 수 없습니다.

프로시저 정의는 현재 프로젝트에 있는 모듈 안에 있어야 합니다. 정의를 이 프로젝트에 있는 모듈로 옮기거나 프로젝트 안에 현재 모듈을 포함하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Me 키워드 사용이 잘못되었습니다

Me 키워드는 클래스 모듈에 나타날 수 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Me 키워드가 표준 모듈에 있습니다.

표준 모듈이 개체를 표현할 수 없기 때문에 Me 키워드는 표준 모듈에 있을 수 없습니다. 클래스 모듈에서 질문에 있는 코드를 복사하면 Me 키워드를 특정 개체 또는 폼과 교체하여 원본 참조를 보존해야 합니다.

•	Me 키워드가 Set 지정문의 왼쪽에 있습니다. 예를 들면 다음과 같습니다.

Set Me = MyObject	' "Me 키워드의 사용이 잘못되었습니다." 메시지가 표시됩니다.

Set 지정문을 삭제하십시오.

메모   Me 키워드는 Let 지정문 왼쪽에는 있을 수 있는데 Me가 나타내는 개체의 기본 속성인 경우에는 설정됩니다. 예를 들면 다음과 같습니다.

Let Me = MyObject	' 명시적인 Let을 가진 지정이 유효합니다.

Me = MyObject	' 명시적인 Let을 가진 지정이 유효합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


New 키워드의 사용이 잘못되었습니다

New 키워드는 생성 가능한 개체(클래스 또는 자동화 개체의 인스턴스)에만 적용할 수 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	하나의 인스턴스만 가질 수 있는 것의 인스턴스를 다시 만들려 하였습니다. 예를 들면 다음 문처럼 Module1을 지정하여 모듈의 새로운 인스턴스를 만들려 하였습니다.

Dim MyMod As New Module1

모듈이 하나의 인스턴스만 가질 수 있기 때문에 새로운 인스턴스를 만들 수 없습니다.

•	자동화 개체의 인스턴스를 만들려 했지만 생성 가능한 개체가 아닙니다. 예를 들면 다음 예처럼 문에서 ListBox를 지정하여 목록 상자의 인스턴스를 새로 만들려 하였습니다.

' 변수를 만드는 구문이 유효합니다.

Dim MyListBox As ListBox

Dim MyFormInst As Form

' 개체를 인스턴스화하는 구문이 잘못되었습니다.

Set MyFormInst = New Form

Set MyListBox = New ListBox

ListBox와 Form은 클래스 이름이지만 특정 개체 이름은 아닙니다. 그리고 위의 Dim 문을 사용한 경우처럼 변수가 특정 개체 형식에 대한 참조가 되도록 지정할 수도 있습니다. 그러나 Set 문에서 개체 인스턴스를 만들기 위해 사용할 수는 없습니다. Set 문에서 일반 클래스 이름 대신 특정 개체를 지정해야 합니다.

' 폼이나 목록 상자의 새 인스턴스를 만드는 구문이 유효합니다.

Set MyFormInst = New Form1

Set MyListBox = New List1

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


개체의 사용이 잘못되었습니다

잘못된 방법으로 개체를 사용하려 하였습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	개체 참조에 Nothing을 지정하여 작업을 계속하지 않으려 했지만 Set 키워드를 생략하였습니다.

MyObject = Nothing

Set 문을 사용하여 개체를 Nothing에 지정하십시오. MyObject가 개체라면 Set 문을 사용하여 이 개체를 Nothing으로 설정해야 합니다.

Set MyObject = Nothing

Set 키워드를 생략하면 Let을 묵시적으로 사용하는 것이므로 참조 지정이 아니라 값 지정을 수행하게 됩니다. Nothing은 값 지정에서는 사용할 수 없습니다.

•	식에서 Nothing을 사용하려 하였습니다.

Nothing을 사용하지 않고 식을 다시 기술하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


속성의 사용이 잘못되었습니다

다른 종류를 사용해야 하는 Property 프로시저의 종류 중 하나를 사용하고 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	읽기 전용인 속성에 기록하려 합니다.

속성에 대해 정의한 속성 프로시저가 Property Get이면 속성에 값을 지정할 수 없습니다. 적당한 Property Let 프로시저를 기술하거나 속성에 쓰지 마십시오.

•	쓰기 전용 속성을 읽으려 하고 있습니다.

속성에 정의한 속성 프로시저가 Property Let인 경우 속성값을 읽을 수 없습니다. 적당한 Property Get 프로시저를 기술하거나 속성에 쓰지 마십시오.

•	참조를 설정하려 하지만 속성은 Property Get 또는 Property Let 프로시저만 갖습니다.

속성에 대해 Property Set 프로시저를 기술하거나 참조를 설정하지 마십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


조사식이 잘못되었습니다

지정한 조사식은 유효한 식이 아닙니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	조사식이 문법적으로 잘못되었습니다.

식의 모든 구성 요소의 문법을 확인합니다. 조사식의 구문은 조사 중인 식이 정의된 프로젝트의 로케일에 대응된다는 점에 주의하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


레이블이 정의되지 않았습니다

이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	줄 레이블 또는 줄 번호를 참조(예: GoTo 문에서)하지만 참조 범위 내에서는 참조될 수 없습니다.

레이블은 참조가 들어 있는 프로시저 내에 있어야 합니다. 줄 레이블은 자체 프로시저에서만 보입니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


언어/국가 설정이 변경되었습니다

이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Visual Basic 환경의 기본 언어/국가별 설정값이 바뀌었습니다.

이 자체가 올바른 경우에도 문제가 발생할 수 있다는 점을 기억하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


이 행은 실행문이 아닙니다

선언과 주석은 실행 가능한 문이 아닙니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	커서까지 실행 명령을 사용했지만 커서가 실행 가능한 문이 있는 줄에 없습니다.

커서를 현재 줄에서 가장 가까운 실행문에 놓습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


행이 너무 깁니다

Visual Basic 코드의 한 줄(물리적)에는 1023자까지 들어갑니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	한 줄에 들어 있는 문자 수가 너무 많습니다.

빈칸 뒤에 밑줄(_)을 사용한 줄 연속 문자로 물리적 줄을 연결하면 더 많은 논리적 줄을 만들 수 있습니다. 물리적 줄을 최대 25개까지 줄 연속 문자로 연결하여 또는 연속적인 24 개의 줄 연속 문자를 연결하여 하나의 논리적 줄을 만들 수 있습니다. 논리적 한 줄은 10,230자까지 들어갈 수 있습니다. 그 다음, 한 줄을 개별 문으로 분리하거나 일부 식을 중간 단계의 변수에 지정해야 합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Loop에는 Do가 필요합니다

Do 루프는 Do 문으로 시작해야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	다른 루프 안에 아직 종료되지 않은 중첩된 루프 블록이 있습니다.

올바른 Do...Loop 문을 사용하고 있는지 확인합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Lset은 문자열과 사용자 정의 형식에서만 사용할 수 있습니다

사용자 정의 형식의 문자열과 변수 내에서 데이터를 왼쪽으로 맞추기 위해 LSet을 사용합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	지정한 변수가 문자열 또는 사용자 정의 형식이 아닙니다.

배열을 다른 배열에 지정하려 하면 LSet이 제대로 동작하지 않습니다. 각 요소를 개별적으로 지정하려면 루프를 사용해야 합니다.

•	개체와 함께 LSet을 사용하였습니다.

LSet은 사용자 정의 형식 변수의 요소를 다르지만 호환성 있는 사용자 정의 형식 요소에 지정할 때도 사용할 수 있습니다. 개체가 사용자 정의 형식과 유사하더라도 LSet은 사용할 수 없습니다. 이와 유사하게 문자열, 개체, variant가 들어 있는 사용자 정의 형식 변수에서는 LSet을 사용할 수 없습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


LSet은 사용할 수 없습니다

사용자 정의 형식의 문자열과 변수 내에서 데이터를 왼쪽으로 맞추기 위해 LSet을 사용합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	문자열, 개체, variant가 들어 있는 사용자 정의 형식에서 LSet을 사용하려 하였습니다.

사용자 정의 형식 변수에서 다른 변수로 요소를 개별 지정해야 합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


구현할 수 없는 잘못된 인터페이스: 제한되지 않은 메서드가 있는 별도의 순수 인터페이스에서 인터페이스가 파생되었습니다

이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	이 인터페이스는 비 제한적 메서드를 가진 순수한 인터페이스에서 직접 또는 간접적으로 파생되었습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


구현할 수 없는 잘못된 인터페이스: 인터페이스에 데이터 필드가 있습니다

이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	이 인터페이스나 클래스에 데이터 필드가 있습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


구현할 수 없는 잘못된 인터페이스: 메서드 이름에 밑줄이 있습니다

Implements 문은 자신이 나타나는 클래스 모듈 내에서 구현될 인터페이스나 클래스를 지정하는데 사용합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	인터페이스나 클래스에 밑줄 문자가 들어있는 메서드 이름이 있습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


구현할 수 없는 잘못된 인터페이스: 메서드는 HRESULT를 반환하지 않습니다

Implements 문은 자신이 나타나는 클래스 모듈 내에서 구현될 인터페이스나 클래스를 지정하는데 사용합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	인터페이스나 클래스에 HRESULT 형식이 아닌 변수를 반환하는 메서드 이름이 있습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


구현할 수 없는 잘못된 인터페이스: 메서드가 out-only 또는 LCID 매개 변수를 가지고 있습니다

Implements 문은 자신이 나타나는 클래스 모듈 내에서 구현될 인터페이스나 클래스를 지정하는데 사용합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	이 인터페이스나 클래스에 out-only 또는 LCID 매개 변수가 있습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


구현할 수 없는 잘못된 인터페이스: 메서드의 매개 변수에 너무 많은 간접성이 있습니다

Implements 문은 자신이 나타나는 클래스 모듈 내에서 구현될 인터페이스나 클래스를 지정하는데 사용합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	이 인터페이스나 클래스에 너무 많은 간접성을 가진 매개 변수가 있는 메서드가 있습니다. 정수의 2배 간접성 사용이나 사용자 정의 형식의 3배 간접성 사용을 예로 들 수 있습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


구현할 수 없는 잘못된 인터페이스: 메서드가 Visual Basic에서 지원하지 않는 형식을 사용합니다

Implements 문은 자신이 나타나는 클래스 모듈 내에서 구현될 인터페이스나 클래스를 지정하는데 사용합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	이 인터페이스나 클래스에 Basic에서 지원하지 않는 메서드가 있습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


구현할 수 없는 잘못된 인터페이스: IUnknown에서 파생된 인터페이스가 아닙니다

Implements 문은 자신이 나타나는 클래스 모듈 내에서 구현될 인터페이스나 클래스를 지정하는데 사용합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	이 인터페이스나 클래스에 Basic에서 지원하지 않는 데이터 형식을 사용하는 메서드가 있습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


최대 수의 조사식을 추가하였습니다

조사식 창에 표시할 수 있는 조사식의 수에는 제한이 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	조사식 창에 최대수의 조사식을 추가하였습니다.

새 조사식을 추가하려면 조사식 중 하나를 제거하거나 직접 실행 창에서 알고자 하는 값을 표시하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


구성원 식별자가 이미 이 개체 모듈이 파생한 개체 모듈에 있습니다

개체 모듈 구성원에 사용되는 식별자는 식별자가 파생되어 나온 개체 모듈에서 이미 사용되고 있는 이름과 충돌하면 안됩니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	개체 모듈에 있는 프로시저 또는 데이터 구성원 식별자가 식별자가 파생되어 나온 개체 모듈에서 이미 사용되고 있는 식별자를 사용합니다. 예를 들면 폼에는 BackColor 속성이 들어 있어 다음 코드가 오류를 일으킵니다.

' 폼은 이미 BackColor 속성을 가지고 있습니다.

Dim BackColor As Integer	' 오류를 생성합니다.

Function BackColor()	' 오류를 생성합니다.

End Function

개체 모듈에서 구성원 식별자와 중복되는 식별자의 이름을 바꾸십시오.

메모   QueryInterface, AddRef, Release, GetTypeInfoCount, GetTypeInfo, GetIDsOfNames 및 Invoke는 IUnknown과 IDispatch와 같은 기초 인터페이스이므로 속성 이름이나 메서드 이름으로 사용할 수 없습니다. 이 이름을 사용하면 컴파일 오류가 발생합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


적합한 개체가 없는 잘못된 메서드입니다

모든 개체가 모든 메서드를 수행할 수 있는 것은 아닙니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	개체를 지정하지 않고 호출한 메서드는 내재하는 개체에서 유효하지 않습니다. 예를 들면 표준 모듈은 Line 메서드의 출력을 표시할 수 없으므로 올바른 개체 수식어를 지정하지 않으면 표준 모듈에서 유효한 개체 수식어 없이 Line 메서드를 사용할 수 없습니다.

메서드를 사용할 수 있는 개체를 사용하여 메서드 호출에 명시적 수식어를 붙이십시오. 예를 들면 Line 메서드를 사용하여 폼 또는 그림 상자를 지정할 수 있습니다.

메모   표준 모듈에서 사용할 때 명시적 개체 수식어가 필요한 메서드는 Circle, Print, PSet 등입니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


닫는 대괄호가 없습니다

명령문에는 여는 괄호와 일치하는 닫는 괄호가 모두 있어야 합니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	여는 괄호과 닫는 괄호가 일치하지 않습니다.

대괄호로 처리할 데이터의 끝 부분에 닫는 괄호를 넣으십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


모듈을 찾을 수 없습니다

모듈은 코드 참조에서 로드되지 않습니다. 모듈은 프로젝트에 있어야 합니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	지정한 프로젝트에 요청한 모듈이 없습니다. 예를 들면 MyProject 프로젝트에 MyModule이 보이지 않으면 MyModule.SomeVar = 5 문은 오류를 발생시킵니다.

프로젝트에 모듈을 포함하는 방법에 대한 정보는 호스트 응용 프로그램 설명서를 참조하십시오.


모듈이 너무 큽니다

프로젝트의 모듈에 코드가 있습니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	모듈에 있는 코드가 너무 큽니다.

새 모듈을 만들어 이 모듈에 있는 일부 프로시저를 새 모듈로 옮기십시오. 현재 모듈에 새 모듈에 있는 프로시저에서 보이는 데이터의 모듈 수준 선언부가 들어 있으면 데이터를 Public으로 선언하십시오.

메모   주석은 코드의 행으로 계산되지 않습니다. 그래서 주석을 삭제하면 이 오류가 발생하지 않습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


행의 첫째 문이어야 합니다

코드 행의 처음에 올 수 없는 키워드가 있습니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	한 행에서 다른 문장을 Sub, Function, Property 문 앞에 두었습니다.

Public, Private, Static 키워드가 앞에 없을 경우 Sub, Function, Property 문은 항상 모든 행에서 첫째 문장이 되어야 합니다.

•	한 행에서 다른 문장을 End If, Else, ElseIf 문 앞에 두었습니다.

If 블록 구조에서 사용할 때 End If, Else, ElseIf 문은 항상 모든 행에서 첫째 문장이 되어야 합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


이름이 기존의 모듈, 프로젝트 또는 개체 라이브러리와 충돌합니다

모듈, 개체 라이브러리, 참조된 프로젝트는 프로젝트 내에서 고유한 이름으로 명명되어야 합니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	이 이름을 가진 모듈, 프로젝트 또는 개체 라이브러리가 이미 프로젝트에서 참조되고 있습니다. 파일 이름의 확장명은 이름으로 간주하지 않으므로 다른 확장명을 사용하여 파일 이름을 구분할 수 없습니다.

중복되는 이름이나 개체 라이브러리 참조 이름 대신 다른 이름을 사용하십시오.

•	프로젝트에 참조를 추가하려 했거나 확장명을 제외한 파일 이름이 현재 프로젝트 모듈에 있는 개체 라이브러리 이름과 같은 개체 라이브러리를 추가하려 하였습니다.

모듈 이름이나 추가할 수 없는 파일의 이름을 바꾸십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


명명된 인수가 이미 지정되었습니다

각각의 프로시저 호출의 인수 목록에서 명명된 인수를 한 번씩만 사용할 수 있습니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	한 번 호출할 때 같은 이름을 가진 인수를 두 번 이상 지정하였습니다. 예를 들면 MySub 프로시저에 Arg1과 Arg2 명명된 인수가 필요한 경우 다음과 같이 호출하면 이 오류가 발생합니다.

Call MySub(Arg1 := 3, Arg1 := 5)

중복된 사항 중 하나를 삭제하십시오.

•	위치와 명명된 인수 둘 다 같은 인수를 지정하였습니다. 예를 들면 다음과 같습니다.

Call MySub(1, Arg1 := 3)

중복된 사항 중 하나를 삭제하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


명명된 인수를 사용할 수 없습니다

명명된 인수는 어떤 상황에서도 사용할 수 없습니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	명명된 인수를 배열 인덱스로 지정하려고 하였습니다. 예를 들면 다음과 같습니다.

MyVar = MyArray(MyNamedArg := 1)

일반 변수 또는 상수 식을 배열 인덱스로 사용하십시오.

•	개체와 함께 명명된 인수를 지정하려고 하였습니다. 예를 들면 다음과 같습니다.

MyVar = MyObject(MyNamedArg := 1)

개체에 인수가 필요할 경우 변수나 상수 식을 사용하십시오. 예를 들면 개체의 기본값이 메서드일 경우 개체 이름은 기본 메서드를 나타냅니다. 인수가 필요할 경우 위치별로 지정하십시오.

•	외부 이름과 함께 명명된 인수를 사용하려고 하였습니다.

MyVar = MyName(MyNamedArg := 1)

외부 이름에 인수가 필요할 경우 일반 변수나 상수 식을 사용하십시오.

•	개체의 데이터 구성원과 함께 명명된 인수를 지정하려고 하였습니다. 예를 들면 다음과 같습니다.

MyVar = MyObject.MyProperty(MyNamedArg := 1)

데이터 구성원에 인수가 필요할 경우 일반 변수나 상수 식을 사용하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Next에는 For가 필요합니다

Next 문 앞에는 대응되는 For 문이 있어야 합니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	대응되는 For 문 없이 Next 문을 사용하였습니다.

For...Next 문에서 다른 제어문의 구조가 올바르게 대응되는지 확인하십시오. For...Next 문 내에서 대응되는 End If 문 없이 If 문을 사용하면 이 오류가 발생합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


선택한 문자열이 없습니다

이 작업을 수행하려면 먼저 문자열을 선택해야 합니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	찾기 또는 바꾸기 작업을 시작하기 전에 문자열을 입력하지 않았습니다.

일부 호스트 응용 프로그램의 경우에는 텍스트를 찾기 및 바꾸기할 때 실제로 텍스트를 선택하지 않고 선택 영역의 범위를 지정할 수 있습니다. 텍스트를 선택하려면 원하는 선택 영역의 시작 부분에 마우스 포인터를 놓은 다음 Shift키를 누른 상태에서 화살표키를 사용하거나 텍스트의 끝 부분을 눌러 모두 선택하십시오. 선택한 텍스트를 찾지 않으려면 선택 옵션을 실행 취소하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


메모리가 부족하여 프로젝트를 저장할 수 없습니다

프로젝트를 저장할 때 일반적으로 추가 정보도 저장되어 다음 버전이나 다른 플랫폼에서 프로젝트를 로드할 수 있도록 합니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	사용할 수 있는 메모리가 부족하여 버전이 다른 Visual Basic이나 플랫폼에서 이 프로젝트를 로드할 때 필요한 정보를 저장할 수 없습니다.

Visual Basic 다음 버전 또는 다른 플랫폼에서 프로젝트를 열려면 일부 응용 프로그램을 닫고 다시 저장하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


선택한 조사식이 없습니다

식을 선택한 다음 즉석 조사식 명령을 선택해야 합니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	즉석 조사식 명령을 선택하기 전에 식을 선택하지 않았습니다.

즉석 조사식 명령을 선택하기 전에 코드 창에서 조사식을 선택하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


개체 라이브러리 기능을 지원하지 않습니다

Visual Basic에 없는 기능을 개체 라이브러리에서 지원할 수 있습니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	개체 라이브러리 데이터 형식 또는 Visual Basic이 지원하지 않는 함수를 액세스하려고 하였습니다.

개체 라이브러리를 사용할 수 있는 시기와 함께 사용해야 할 도구에 대한 자세한 정보는 개체 라이브러리 작성자에게 문의하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Visual Basic for Applications(VBA)에 대한 개체 라이브러리를 찾을 수 없습니다

Visual Basic for Applications 개체 라이브러리는 더 이상 독립된 파일이 아닙니다. 이것은 동적 연결 라이브러리(DLL)에 통합되었습니다.

특별한 상황에서 프로젝트 언어에 대응되는 이전 버전의 개체 라이브러리(vaxxx.olb 또는 vaxxxx.olb)가 필요하나 찾을 수 없는 경우가 있습니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	개체 라이브러리가 전혀 없거나 예상한 디렉터리에 없습니다. 또는 버전이 틀립니다.

호스트 응용 프로그램 디스크를 검색하여 개체 라이브러리가 설명서에 지정된 올바른 디렉터리에 있는지 확인하십시오.

현재 없는 라이브러리가 호스트 응용 프로그램이 설치한 언어 버전이면 설치 프로그램을 다시 실행하는 것이 가장 쉽습니다. 호스트 응용 프로그램에 수반되는 것과는 다른 언어 개체 라이브러리가 프로젝트에 필요한 경우(예를 들면 일부 사용자가 다른 언어를 사용하도록 설치된 시스템에서 작성한 프로젝트를 자신에게 보낼 경우), Visual Basic 개체 라이브러리의 올바른 언어 버전이 프로젝트에 포함되어 있는지와 예상 위치에 설치 되었는지 확인하십시오.

응용 프로그램이 개체 라이브러리의 다른 언어 버전을 지원할 수 있습니다. 어떤 언어 버전이 필요한지 알아 보려면 참조 대화 상자를 표시하여 대화 상자 아래쪽에 나타난 언어를 보십시오.

개체 라이브러리가 각 플랫폼의 다른 버전에 있습니다. 그러므로 프로젝트가 매킨토시에서 Microsoft Windows로 이동하듯이 플랫폼을 이동할 때 참조된 라이브러리의 올바른 버전의 언어를 호스트 응용 프로그램 설명서에서 지정한 위치에서 사용할 수 있어야 합니다. 언어 코드는 세 문자이지만 두 개의 문자로 된 언어 코드가 있다는 사실에 주의하십시오.

Visual Basic 개체 라이브러리 파일 이름은 다음과 같이 구성됩니다.

•	Windows: 응용 프로그램 코드 + 언어 코드 + 버전.OLB. 예를 들면 다음과 같습니다.

프랑스판 Visual Basic for Applications 버전 2 개체 라이브러리는 vafr2.olb입니다.

•	매킨토시: 응용 프로그램 이름 언어 코드 버전 OLB. 예를 들면 다음과 같습니다.

버전 2에 대한 프랑스판 Visual Basic for Applications 개체 라이브러리는 VA FR 2 OLB입니다.

시스템에서 누락된 프로젝트나 개체 라이브러리를 찾을 수 없으면 현재 프로젝트 작성자에게 문의하십시오. 현재 없는 라이브러리가 Microsoft 응용 프로그램 개체 라이브러리일 경우 다음과 같은 방법으로 얻을 수 있습니다.

•	Microsoft 기술 지원 서비스에 액세스할 수 있으면 도움말 파일의 기술 지원 부분을 참조하십시오. 전자 서비스를 사용할 수 있으면 필요한 서비스를 어떻게 사용할 수 있는지에 대한 지침을 볼 수 있습니다.

•	Microsoft 기술 지원 서비스에 액세스할 수 없으면Microsoft에 응용 프로그램 노트를 요청하여 Microsoft 개체 라이브러리를 사용할 수 있습니다. 지역별 Microsoft 제품 지원부에 연락하는 방법은 이 도움말 파일의 기술 지원 부분을 참조하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


개체 라이브러리가 등록되지 않았습니다

Visual Basic for Applications 개체 라이브러리는 더 이상 독립된 파일이 아닙니다. 이것은 동적 연결 라이브러리(DLL)에 통합되어 있습니다.

이전 버전에서는 Visual Basic for Applications를 사용하는 응용 프로그램을 시작할 때 특정한 개체 라이브러리가 로드됩니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	이전 버전의 Visual Basic for Applications 개체 라이브러리(vaxxx.olb) 또는 호스트 응용 프로그램 개체 라이브러리를 로드하려 하였습니다. 그러나 이 개체 라이브러리의 올바른 언어 버전이 시스템 레지스트리에 없습니다.

응용 프로그램을 등록하십시오. 매킨토시의 경우 Macintosh Preferences 폴더에서 vba.ini 파일을 삭제한 후 응용 프로그램을 다시 시작하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


개체 라이브러리의 언어 설정을 현재 프로젝트에서 사용할 수 없습니다

참조를 추가할 수 없습니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	로케일이 현재 프로젝트의 로케일과 호환되지 않는 개체 라이브러리에 참조를 추가하려고 하였습니다. 참조가 추가되지 않았습니다. 개체 라이브러리를 사용하려면 호환되는 프로젝트 로케일을 만들어야 합니다.

제공된 언어를 사용할 수 있도록 Visual Basic for Applications와 호스트 응용 프로그램을 등록하십시오. 그러면 참조 대화 상자에서 개체 라이브러리를 사용할 수 있습니다.

메모   Visual Basic이 호스트 응용 프로그램이면 프로젝트 언어 설정을 바꿀 수 없습니다. 사용된 개체 라이브러리가 영어/미국 설정과 호환되어야 합니다.


Visual Basic에서 지원하지 않는 형식입니다

Visual Basic에서 모든 형식이 지원되지는 않습니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	프로그램에서 Visual Basic for Applications에 없는 형식을 사용하려고 하였습니다. 예를 들면 Visual Basic에는 포인터 또는 부호 없는 정수 형식이 없으므로 개체 라이브러리에서 이러한 형식의 변수를 만들려고 하면 이 오류가 발생합니다. 다음 예제에서 Rainbow는 올바른 구조이지만, Visual Basic이 인식하지 못하는 형식을 가진 경우 Visual Basic은 이런 형식의 변수를 만들 수 없습니다.

Dim MyVar As Rainbow	' 오류를 일으킵니다.

이 형식이 개체 라이브러리에서 함수에 대해 유효한 매개 변수 형식일 경우 이 오류는 코드에서 이 형식의 변수를 만들 수 없다는 것을 나타냅니다. 개체 설명서에서 지정한 대로 항상 데이터 형식으로 변수를 선언할 수는 없지만, Visual Basic에는 가끔 대응 형식이 있습니다. 예를 들면 Visual Basic에 포인터 형식이 없어도 AddressOf 연산자를 사용하여 API 함수에 포인터를 넘겨 줄 수 있습니다. Variant 형식의 하위 형식도 확인하십시오. Visual Basic에서 직접 제공되지 않는 형식에 대응되는 것으로 사용할 수도 있습니다. 그러나 Visual Basic에 대응되는 형식이 없는 경우도 있습니다. 예를 들면 데이터 포인터를 사용할 수 없습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


End Sub, End Function 또는 End Property 다음에는 주석만이 올 수 있습니다

프로시저 밖에서는 주석, 지시문, 선언만 사용할 수 있습니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	프로시저 밖에 실행 코드를 넣었습니다.

프로시저 밖에 있는 비선언줄은 주석 구분 기호(')로 시작되어야 합니다. 첫째 프로시저 선언 앞에 선언부가 있어야 합니다. 코드가 실행될 때 주석은 무시됩니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Optional 인수는 Variant이어야 합니다

Optional 인수에 내부 데이터 형식을 포함시킬 수 있지만 단일 기본값을 가진 형식이어야 합니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	기본값이 없는 매개 변수 예를 들면 배열로 Optional을 지정하려 하였습니다.

Optional로 지정한 인수에 기본값이 있는지 확인하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


개체 모듈에서 Option Private 모듈을 사용할 수 없습니다

Option Private Module은 프로젝트에 대한 사용 가능성을 가지는 동안 모듈 내용을 자신의 프로젝트에만 사용할 수 있도록 하고 다른 프로젝트에서는 사용할 수 없도록 합니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	Option Private Module 문이 개체 모듈에 나타납니다.

모듈에서 Option Private Module 문을 삭제하십시오. 기본으로 개체 모듈에 Option Private Module 특성이 포함됩니다. 코드에서 기본형을 바꿀 수 없습니다. 개체 모듈 구성원을 제공하는 방법에 대한 정보는 호스트 응용 프로그램의 설명서를 참조하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


메모리가 부족하여 조사식의 일부가 삭제될 수도 있습니다

시스템 메모리가 부족할 때 조사식을 삭제하면 사용할 수 있는 메모리가 늘어나서 이런 상황이 해결됩니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	로드한 응용 프로그램, 프로젝트 또는 모듈이 너무 많습니다.

작업을 계속하려면 필요 없는 응용 프로그램, 프로젝트 또는 로드할 수 있는 모듈 등과 같이 지울 수 있는 요소를 메모리에서 삭제하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


리소스가 부족합니다

"핸들"이라고 하는 리소스의 특정 형식이 내부적으로 너무 많은 작업에 사용되었습니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	코드가 리소스의 한계에 도달하였습니다.

코드를 저장한 후 닫고 다시 로드하십시오. 그래도 이 오류가 계속 발생하는 경우 코드에서 참조한 개체의 수를 줄이십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


ParamArray는 Variant의 배열로 선언되어야 합니다

ParamArray 매개 변수의 각 인수를 다른 데이터 형식으로 선언할 수 있습니다. 그러므로 매개 변수를 Variant 형식의 배열로 선언해야 합니다. ParamArray에 원하는 만큼 인수를 제공할 수 있습니다. 호출하면 호출에 제공된 각 인수는 Variant 배열의 대응 요소가 됩니다. 예를 들면 다음과 같습니다.

Sub MySub(ParamArray VarArg())

. . .

End Sub

Call MySub("First arg", 2, 3.54)

다음은 오류의 발생 원인과 해결 방법입니다.

•	프로시저의 정의 부분에서 ParamArray 매개 변수가 Variant가 아닌 다른 형식의 배열로 정의되었습니다.

매개 변수 형식을 Variant 요소로 된 배열로 다시 선언하십시오.

•	ParamArray 매개 변수에 대해 지정된 데이터 형식은 없으나 Deftype 문의 범위 내에 프로시저 정의가 있어 Variant가 아닌 다른 형식이 있는 것처럼 매개 변수를 묵시적으로 선언하였습니다.

ParamArray 매개 변수의 지정 부분에서 명시적 As Variant 절을 사용하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


이 오류에 대한 자세한 정보는 Readme 파일을 참조하십시오

도움말이 완성된 후에 일부 도움말이 제품에 추가되었습니다. 호스트 응용 프로그램의 Readme 파일에서 이에 대한 도움말 설명을 볼 수 있습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Private Enum 형식과 사용자 정의 형식은 매개 변수 또는 Public 프로시저, 공용 데이터 구성원, 공용 사용자 정의 형식 필드에 대한 반환 형식으로 사용될 수 없습니다

프로젝트에서 Public 프로시저는 모든 모듈에 표시되지만 Private Enum 형식은 자신의 모듈 밖에서는 표시되지 않습니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	Public 클래스에 Public 프로시저가 있으나, 값을 반환하거나 표준 모듈 또는 Private 클래스에 정의된 매개 변수를 가지고 있습니다.

Enum Public를 선언하십시오. 이것은 클래스 모듈에 있어야 합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


프로시저가 너무 큽니다

컴파일할 때 프로시저의 코드 크기는 64K를 초과해서는 안됩니다. 다음은 오류의 발생 원인과 해결 방법입니다

•	컴파일할 때 프로시저의 코드 크기가 64K를 초과합니다.

이 프로시저 또는 다른 큰 프로시저를 두 개 이상의 작은 프로시저로 나누십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


프로젝트에 프로시저, 변수, 상수 이름 등이 너무 많습니다

프로젝트의 프로시저, 변수, 상수, 매개 변수 이름이 이름 테이블에 저장되어 있습니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	프로젝트 이름 테이블에 있는 이름의 수가 32,768개를 넘습니다.

이름 테이블에는 임시로 중복되는 이름이 들어 있을 수 있습니다. 프로젝트를 디스크에 저장한 다음 프로젝트를 닫아 이름 테이블을 압축합니다. 다시 프로젝트를 열어도 문제가 계속 발생하면 여러 프로시저에서 지역 변수 이름을 다시 사용한 다음 프로젝트를 저장한 후 닫고, 다시 열어 테이블을 다시 압축하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


프로젝트를 찾을 수 없습니다

프로젝트를 찾을 수 없습니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	찾을 수 없는 프로젝트 이름을 지정하였습니다.

발생한 오류에 대해 프로젝트 지정 방법을 확인하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


모듈 범위에서 수식어 이름을 사용할 수 없습니다

어떤 상황에서 일부 호스트 응용 프로그램은 수식어가 있는 이름이 포함된 프로시저를 호출할 수 없습니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	프로시저 호출에서 점 기호(qualifier.item)를 사용하여 모듈 이름을 지정하였습니다.

대개 이 오류는 호스트 응용 프로그램에서 지정된 수식어를 이미 알고 있거나 프로시저 호출부에 있는 정보를 필요로 하지 않기 때문에 발생합니다. 그런 경우 수식어를 생략하면 호스트 응용 프로그램이 올바르게 프로시저를 호출합니다. 수식된 이름의 사용 제한에 대한 이유를 알려면 호스트 응용 프로그램 설명서를 확인하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


수식어는 컬렉션이어야 합니다

컬렉션에서만 두 식별자 사이에 느낌표를 사용할 수 있습니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	느낌표(!) 왼쪽에 컬렉션 이름이 아닌 이름을 사용하였습니다.

컬렉션 이름인 경우 이름의 철자가 올바른지 확인하십시오. 또한 느낌표는 Single 데이터 형식에 대한 형식 선언 문자라는 것에 주의하십시오. 이름이 컬렉션이 아닐 경우 변수 이름에 첨부된 ! 형식 선언 문자는 다른 이름과 연결됩니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


범위에 값이 없습니다

배열에서 지정할 수 있는 요소의 수에는 제한이 있습니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	배열 범위를 잘못 지정하였습니다. 예를 들면 다음은 잘못된 범위입니다.

Dim MyArray(10 To -5)	' 내림차순은 허용되지 않습니다.

Dim MyArray(0 To 0)	' 배열에 요소가 없습니다.

구문이 올바른지 확인하십시오. 예를 들면 다음은 올바른 범위입니다.

Dim MyArray(-5 To 10)

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


RSet은 문자열에서만 사용할 수 있습니다

RSet 문은 고정 길이 또는 변수 길이의 문자열에서 문자열 데이터를 오른쪽으로 맞출 때 사용됩니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	문자열이 아닌 변수에서 RSet 문을 사용하려고 하였습니다.

적절한 경우에는 변수를 문자열로 변환하고 그렇지 않으면 RSet 문을 사용하지 마십시오.

메모   LSet 문을 사용하여 사용자 정의 형식 변수의 요소를 호환되는 다른 사용자 정의 요소에 지정할 수 있다고 해도 이동할 수 있는지 확실히 알 수 없으므로 그러한 지정은 효과적이지 못합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


런타임 오류 <번호>:

이 오류는 사용자 정의 오류이며, 다음은 오류의 발생 원인과 해결 방법입니다.

•	Visual Basic 오류에 해당하지 않는 오류가 발생하였습니다.

오류를 일으킨 개체 또는 개체 라이브러리에 대한 설명서의 설명대로 오류를 처리하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


찾는 문자열이 너무 길거나 복잡합니다
찾을 문자열이 너무 길거나 복잡합니다

Visual Basic 패턴 일치 사용에는 제한이 있습니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	찾을 문자열을 너무 길게 지정하였습니다. 또는 와일드카드 문자의 조합을 이해할 수 없습니다.

찾을 문자열의 길이를 줄이거나 간단하게 지정한 다음 다시 찾으십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


찾을 문자열을 지정해야 합니다

찾을 문자열을 지정해야 합니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	비교할 문자열을 지정하지 않고 찾기 작업을 수행하려고 하였습니다.

찾을 문자열을 지정해야 합니다. 길이가 0인 문자열("")은 바꿀 문자열로 지정할 수 있지만, 찾을 문자열로서는 의미가 없습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


찾는 문자열이 없습니다

찾는 문자열이 없습니다. 다음은 오류 발생 원인과 해결 방법입니다.

•	지정한 찾을 범위의 시작 부분과 끝 부분 사이에 일치하는 문자열이 없습니다.

계속 찾으려면 찾을 범위를 넓히십시오.

•	패턴 일치 식을 사용할 때 여는 괄호를 넣지 않았습니다.

여는 괄호를 넣으십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


찾기 실패: 디스크를 읽거나 쓸 수 없습니다

Seek 문은 디스크로 직접 실행되지 않습니다. 다음은 오류 발생 원인과 해결 방법입니다.

•	쓰기 금지, 읽기 전용 또는 잠겨 있는 디스크나 파일을 읽으려 하였습니다.

쓰기 금지 속성을 제거하거나 읽기 전용 속성이나 잠금 속성을 제거하십시오. 다른 프로세스에서 파일을 잠글 경우 잠금 속성을 제거할 수 없습니다.

•	예를 들면 이동식 디스크가 물리적으로 변경되었을 경우 파일을 사용할 수 없습니다.

파일이 다른 디스크로 옮겨졌을 경우 옮겨진 디스크에서 액세스하십시오. 그렇지 않으면 파일을 액세스할 수 없습니다.

•	프로젝트 파일, 개체 라이브러리 또는 형식 라이브러리에서 읽으려 하였지만 파일이 손상되었습니다.

라이브러리 또는 프로젝트 파일의 새 사본을 받으십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Select Case에는 End Select가 필요합니다

Select Case 문은 End Select 문으로 종료해야 합니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	대응되는 End Select 문 없이 Select Case 문을 사용하였습니다.

외부 Select Case...End Select 문의 구조에 제대로 일치되지 않는 Select Case...End Select 문의 구조가 있는지 확인하십시오. 중첩된 Select Case 문이 있는 경우 대응되는 End Select 문이 있어야 합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


선택한 조사식이 잘못되었습니다

조사식을 선택할 수 없는 경우가 있습니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	즉석 조사식 명령을 선택했지만 선택된 식이 유효하지 않습니다. 예를 들면 주석 또는 Sub 프로시저 호출을 볼 수 없습니다.

유효한 방법으로 식을 선택하거나 조사식 추가와 유효한 식에서 형식을 선택하십시오.

•	조사식에는 조사식을 정의하는 프로젝트의 로케일에 해당하는 코드 구문이 있어야 합니다.

로케일에 사용할 수 있는 식을 다시 작성하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Set Next 문은 현재의 프로시저 내에서 실행할 수 있는 행에만 적용할 수 있습니다

다음 문 설정 명령을 선택하여 실행이 계속될 때 중단된 프로그램을 시작해야 할 부분을 나타낼 수 있습니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	이 명령을 선택했을 때 실행문이 없는 행에 커서가 있었습니다.

실행문이 있는 줄에 커서를 놓고 다시 시도하십시오. 선언, 줄 레이블, 주석을 실행할 수 없으므로 선언, 레이블, 설명이 있는 줄은 다음 문 설정 명령의 대상이 될 수 없습니다.

•	이 명령을 선택했을 때 커서가 현재 실행 중인 프로시저의 밖에 있었습니다.

현재 실행 중인 프로시저 내에 커서를 놓으십시오.


SHARE.EXE가 필요합니다

Visual Basic을 시작할 때 share.exe 프로그램을 실행해야 합니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	Visual Basic을 시작하기 전에 share.exe를 실행하지 않았습니다.

응용 프로그램을 닫고 share.exe를 실행한 다음 응용 프로그램을 다시 시작하십시오. 이 문제가 발생하지 않도록 하려면 autoexec.bat 파일에 share.exe 호출부를 넣어 시스템 전원을 켤 때 share.exe가 자동으로 시작되도록 하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


지정한 라이브러리나 프로젝트를 이미 참조하였습니다

참조 추가 대화 상자가 참조한 라이브러리와 프로젝트를 보여줍니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	참조 추가 대화 상자에서 찾아보기 단추를 선택한 다음 참조 추가 대화 상자의 이미 사용 가능한 참조 부분에 있는 형식 라이브러리 또는 프로젝트를 선택하였습니다.

프로젝트 또는 프로젝트의 형식 라이브러리 부분을 만들려면 참조 대화 상자를 표시하여 형식 라이브러리 또는 프로젝트 이름의 철자가 올바른지 확인하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Type 블록 내에서 유효하지 않은 문입니다

요소 이름, As type 절, 주석만 Type...End Type 문 블록 내에 사용할 수 있습니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	사용자 정의 형식 정의에 잘못된 명령문을 넣었습니다.

설명, 요소 이름 또는 As type 절 이외의 것을 모두 삭제하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Type 블록 밖에서 유효하지 않은 문입니다

Type...End Type 문 블록 밖에서 변수를 선언하는 구문이 사용자 정의 형식 요소를 선언하는 구문과 다릅니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	Type...End Type 블록 밖 또는 문장 밖에 변수를 선언하려고 하였습니다.

As 절을 사용하여 Type...End Type 블록 밖에서 변수를 선언할 때 Dim, ReDim, Static, Public, Private, 선언문 중 하나를 사용하십시오. 예를 들면 다음 코드에서 MyVar를 첫째로 선언하면 이 오류가 발생합니다. MyVar를 두 번째와 세 번째로 선언하면 유효합니다

MyVar As Double	' 선언 구문이 잘못되었습니다.

Dim MyVar As Double

Type AType

MyVar As Double	' Type 블록 내에 있으므로

End Type	' 유효한 선언 구문입니다.

•	대응되는 Type 문 없이 End Type 문을 사용하였습니다.

일치하지 않는 End Type이 있는지 확인하고 Type 문을 블록 앞에 두십시오. 또는 End Type 문이 필요하지 않을 경우에는 삭제하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


구문이 너무 복잡합니다

Visual Basic은 이 문장을 분석할 수 없습니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	문장이 너무 복잡하여 분석할 수 없습니다.

문장을 여러 개의 작은 문장으로 나누거나 복잡한 조건 절 대신 논리 연산자와 If...Then...Else 문을 사용하십시오.

•	문이나 함수가 너무 많이 중첩된 함수 호출을 사용합니다.

함수 호출을 빨리 하거나 결과를 특정 변수에 지정한 후 이 오류를 일으키는 문장에서 변수를 사용하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Select Case와 맨 처음 Case 사이의 문과 레이블이 잘못되었습니다

Select Case 문과 첫째 Case 절 사이에 주석만 넣을 수 있습니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	Select Case와 첫째 Case 절 사이에 문장을 넣었습니다. 예를 들면 다음과 같습니다.

Select Case SomeVar

' 이것은 주석이며 유효합니다.

Stop	' Stop 문도 여기에서는 유효합니다.

Case SomeValue

. . .

End Select

Select Case 문은 첫째 Case 문 바로 다음에 있어야 합니다. 중간에 삽입되어 있는 식이 설명일 경우 설명 앞에 구분 기호(')를 넣으십시오. 그렇지 않을 경우 식이 있는 위치에 식을 넣거나 삭제하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


구문 오류입니다

Visual Basic이 수행할 작업을 결정할 수 없습니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	키워드 또는 인수의 철자가 잘못되었습니다.

키워드와 명명된 인수의 이름은 구문 지정 부분에서 지정된 것과 반드시 일치해야 합니다. 온라인 도움말을 확인하여 철자를 올바르게 고치십시오.

•	마침표가 잘못되었습니다.

예를 들면 선택적 인수를 위치에 따라 생략하면 생략된 인수 대신 쉼표(,)를 넣어야 합니다.

•	프로시저가 정의되지 않았습니다.

프로시저 이름의 철자를 확인하십시오.

•	한 프로시저 선언에서 Optional과 ParamArray를 모두 지정하려 하였습니다.

ParamArray 인수는 Optional이 될 수 없습니다. 하나를 선택하고 나머지는 삭제하십시오.

•	Optional 또는 ParamArray 매개 변수를 모두 하나의 이벤트 프로시저에 정의하려고 하였습니다.

Optional 또는 ParamArray 키워드를 매개 변수 선택에서 삭제하십시오.

•	RaiseEvent 문에서 명명된 인수를 사용하려고 하였습니다.

이벤트는 명명된 인수를 지원하지 않습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


이진 호환성 DLL이나 EXE에 찾을 수 없는 정의를 가진 Implements 형식이 있습니다

다른 DLL에 들어있는 인터페이스를 구현하는 이진 호환성 서버가 있는 경우 컴파일할 때 주의를 기울여야 합니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	다른 DLL을 인터페이스 GUID를 변경하는 프로젝트 호환 제품으로 컴파일했습니다. 이러한 변경 사항은 눈으로 볼 수 있는 것이 아니므로 예기치 못한 오류를 일으킬 수 있습니다. 다른 사용자가 참조에 대한 프로젝트 호환 DLL을 제공했을 경우에도 이 오류가 발생합니다.

이 오류는 기본적으로 프로젝트의 이진 호환성 DLL이나 EXE에 손상된 참조를 가진 형식 라이브러리가 있을 경우 발생합니다. 참조된 형식 라이브러리를 다시 컴파일된 DLL이나 EXE 같은 다른 파일이 덮어쓸 경우나 형식 라이브러리 파일을 삭제할 때 아니면 참조 중인 형식 라이브러리를 이동할 때 참조가 손상됩니다. 하지만 참조된 형식 라이브러리를 이동하거나 참조된 형식 라이브러리를 등록하지 마십시오.

이를 해결하려면 컴퓨터에서 참조된 형식 라이브러리의 사본을 얻어 등록해야 합니다. 다시 컴파일하면 이전 형식 라이브러리를 덮어쓰므로 이전 것은 사용할 수 없게 됩니다. 이 방법을 사용해도 오류가 수정되지 않으면 DLL/EXE를 이진 호환성 가능 버전으로 사용하지 않는 방법 외에는 다른 방법이 없습니다.


이진 호환성 DLL이나 EXE에 찾을 수 없는 정의를 가진 매개 변수나 반환 형식이 있습니다

다른 DLL에 들어있는 매개 변수나 반환 형식을 가진 이진 호환성 서버가 있는 경우 다시 컴파일할 때 주의를 기울여야 합니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	프로젝트에서 이진 호환성을 설정하고 프로젝트를 다시 컴파일하면 프로젝트 호환성이 자동으로 설정되며, 인터페이스의 내부 GUID를 변경합니다. 이러한 변경 사항은 눈으로 볼 수 있는 것이 아니므로 예기치 못한 오류를 일으킬 수 있습니다.

이 오류는 기본적으로 프로젝트의 이진 호환성 DLL이나 EXE에 손상된 참조를 가진 형식 라이브러리가 있을 경우 발생합니다. 참조된 형식 라이브러리를 다시 컴파일된 DLL이나 EXE 같은 다른 파일이 덮어쓴 경우나 형식 라이브러리 파일을 삭제할 때 아니면 참조 중인 형식 라이브러리를 이동할 때 참조가 손상됩니다. 하지만 참조된 형식 라이브러리를 이동하거나 참조된 형식 라이브러리를 등록하지 마십시오.

이를 해결하려면 컴퓨터에서 참조된 형식 라이브러리의 사본을 얻어 등록해야 합니다. 다시 컴파일하면 이전 형식 라이브러리를 덮어쓰므로 이전 것은 사용할 수 없게 됩니다. 이 방법을 사용해도 오류가 수정되지 않으면 DLL/EXE를 이진 호환성 가능 버전으로 사용하지 않는 방법 외에는 다른 방법이 없습니다.


편집하면 이전에 지정된 Active X 호환 서버와 개체 모듈이 호환되지 않을 수 있습니다

호환 ActiveX 구성 요소가 이미 이전에 지정된 실행 파일 또는 동적 연결 라이브러리(DLL)로써 존재합니다. 인터페이스를 변경해서는 안됩니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	이미 실행 파일에 의해 표시된 개체 모듈의 코드를 편집하려고 하였습니다.

인터페이스에 영향을 미치는 변경 사항을 개체에 적용하는 경우 클래스가 이전 버전과 호환되지 않기 때문에 버전을 컴파일된 코드에 사용할 수 없습니다.

Visual Basic에서 호환 ActiveX 구성 요소의 이름은 도구 메뉴에서 프로젝트 옵션을 선택할 때 대화 상자에 표시됩니다.

중요   편집 내용을 적용하려면 오류 메시지 대화 상자에서 확인 단추를 누르십시오. 편집을 취소하려면 취소 단추를 누르십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


지정한 범위에서 찾기를 완료하였습니다

바꾸기 대화 상자에서 다음 찾기 단추와 바꾸기 단추를 누를 때 전체 바꾸기 횟수가 지정되지 않습니다. 다음은 발생 원인과 결과입니다.

•	찾기 및 바꾸기 작업을 할 때 선택 영역, 프로시저, 모듈, 프로젝트 등 작업할 범위를 지정할 수 있습니다.

범위가 선택되면 그 범위가 찾는 기본 영역이 됩니다. 범위를 선택하지 않으면 현재 모듈이 찾을 기본 영역이 됩니다. 찾을 범위를 바꾸려면 바꾸기 대화 상자에서 다른 옵션을 선택하십시오

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


지정한 범위에서 찾기를 완료하였습니다. 1개를 바꾸었습니다

바꾸기 대화 상자에서 모두 바꾸기 단추를 누르면 이 메시지는 전체 바꾸기 횟수를 지정합니다. 다음은 발생 원인과 결과입니다.

•	찾기 및 바꾸기 작업을 수행하는 동안 지정된 텍스트의 한 인스턴스만을 찾아 바꿉니다. 선택 영역, 프로시저, 모듈, 프로젝트 등 작업할 범위를 지정할 수 있습니다.

범위가 선택되면 그 범위가 찾는 기본 영역이 됩니다. 범위를 선택하지 않으면 현재 모듈이 찾을 기본 영역이 됩니다. 찾을 범위를 바꾸려면 바꾸기 대화 상자에서 다른 옵션을 선택하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


지정한 범위에서 찾기를 완료하였습니다. 바꾸기를 완료하였습니다

바꾸기 대화 상자에서 모두 바꾸기 단추를 누르면 이 메시지는 전체 바꾸기 횟수를 지정합니다. 다음은 발생 원인과 결과입니다

•	찾기 및 바꾸기 작업을 수행하는 동안 선택 영역, 프로시저, 모듈, 프로젝트 등 작업할 범위를 지정할 수 있습니다.

범위가 선택되면 그 범위가 찾는 기본 영역이 됩니다. 범위를 선택하지 않으면 현재 모듈이 찾을 기본 영역이 됩니다. 찾을 범위를 바꾸려면 바꾸기 대화 상자에서 다른 옵션을 선택하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


프로젝트의 .vbp 파일에 잘못되거나 손상된 라이브러리 참조 ID가 있습니다

참조 대화 상자에서 참조를 선택한 프로젝트를 저장할 때 프로젝트의 .vbp 파일(이전 버전의 Visual Basic에서는 .mak 파일)에 항목이 만들어집니다. 예를 들면 데이터 액세스 개체의 항목은 다음과 같습니다.

Reference=*\G{00025E01-0000-0000-C000-000000000046}#0.0#0#C:\WINDOWS\SYSTEM\DAO2516.DLL#Microsoft

DAO 2.5 Object Library

이 오류는 참조가 손상되었거나 편집되었을 때 발생합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	.vbp 파일에 있는 참조가 잘못되었습니다.

.vbp 파일에서 잘못된 행을 삭제하고 도구 메뉴의 참조 대화 상자에서 해당하는 개체 라이브러리를 확인하십시오. 그 후 프로젝트를 저장하면 .vbp 파일에 올바른 정보가 입력됩니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


구성 요소가 이벤트를 발생시키지 않습니다

이벤트 프로시저는 개체가 발생시키는 이벤트에 대응해야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	이벤트를 발생시키지 않는 개체에 대한 이벤트 프로시저를 작성하였습니다.

이벤트에 대응되지 않는 이벤트 프로시저는 작성할 수 없습니다.

•	이벤트를 발생시키지 않는 클래스에서 WithEvents를 사용하려고 하였습니다.

이벤트를 발생시키지 않는 클래스에서는 WithEvents를 사용할 수 없습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


인수가 너무 많습니다

프로시저에는 60개의 인수만 포함시킬 수 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	61개 이상의 인수를 지정하였습니다.

더 많은 인수를 지정하려면 사용자 정의 형식을 정의하여, 다른 형식의 여러 인수를 모으거나 최종 인수로 ParamArray를 사용하여 여러 개의 값을 넘겨 주어야 합니다. 배열에 인수를 넣어 여러 개의 인수를 넘겨 줄 수도 있습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


배열의 차원이 너무 많습니다

배열에는 60개까지의 차원만 포함시킬 수 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	61개 이상의 차원이 있는 배열을 선언하려고 하였습니다.

차원 수를 줄이십시오.

•	제한 범위 내에서 배열을 선언했으나 메모리가 부족하여  배열을 작성할 수 없습니다.

사용할 수 있는 메모리를 늘리거나 차원의 수를 줄이십시오. Variant 형식의 배열이거나 Variant에 포함된 배열이면 요소의 데이터 형식으로 바꾸어 같은 차원의 배열을 만들 수 있습니다. 예를 들면 배열에 정수가 포함될 경우 Integer 형식의 배열로 선언하면 각 요소가 Variant 형식일 때 메모리를 더 적게 차지합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


연속된 줄이 너무 많습니다

줄 연속 문자와 결합시킬 수 있는 줄의 수가 제한됩니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	코드에 줄 연속 문자로 결합된 물리적 줄이 25개 이상 또는 연속된 줄 연속 문자가 24 개 이상 있습니다.

줄을 물리적으로 더 길게 하여 필요한 줄 연속 문자의 수를 줄이십시오. 또는 구조를 두 개 이상의 문장으로 나누십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


지역 또는 비정적 변수가 너무 많습니다

프로시저에서 정의되어 각 프로시저가 호출될 때마다 다시 초기화되는 지역, 비정적 변수를 사용할 수 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	프로시저의 지역, 비정적 변수와 컴파일러가 생성하는 임시 변수에 필요한 총 메모리가 32K를 초과합니다.

적당한 곳에서 Static 문으로 일부 변수를 선언하십시오. Static 변수는 비정적 변수와 다른 메모리에 할당되므로 프로시저 호출 간의 값을 포함합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


모듈 수준의 변수가 너무 많습니다

모듈 프로시저 앞의 모듈 선언부에서 모듈 수준의 변수를 선언하였습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	이 모듈의 모든 모듈 수준 변수에 필요한 총 메모리가 64K를 초과합니다.

이것은 이 모듈에 대한 메모리 제한입니다. 적당하다면 다른 모듈에서 일부 변수를 Public으로 선언할 수 있습니다. 또는 일부 모듈 수준의 변수가 하나의 프로시저에서만 사용되면, 프로시저에서 선언할 수도 있습니다. 프로시저 호출 간의 값을 포함시키기 위해 모듈 수준에서 변수를 선언했다면 변수를 참조하는 프로시저에서 Static으로 변수를 선언할 수도 있습니다.

메모   사용할 수 있는 공간은 운영 체제에 따라 다릅니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


형식 선언 문자가 선언된 데이터 형식과 일치하지 않습니다

다른 형식에 대한 형식 선언 문자를 추가하여 변수의 데이터 형식 을 바꿀 수 없습니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	특정 형식의 변수를 선언하고 같은 범위에서 같은 이름의 변수를 참조하였습니다. 그 후, 일치되지 않는 형식 선언 문자를 첨가하였습니다.

변수에 지정된 데이터 형식을 바꾸려면 변수를 Variant 형식으로 선언하십시오. 잘못된 형식 선언 문자를 추가했다면 삭제하거나 바꾸십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


형식 선언 문자를 사용할 수 없습니다

Visual Basic에서는 형식 선언 문자를 사용할 수 있지만, 일부 데이터 형식(Byte, Boolean, Date, Object, Variant 등)에는 관련된 형식 선언 문자가 없습니다. 다음은 오류 발생 원인과 해결 방법입니다.

•	As 절을 사용하는 변수 선언에서 Dim, Static, Public 등의 형식 선언 문자를 사용하려고 하였습니다.

형식 선언 문자를 삭제하거나 As 절을 삭제하십시오.

•	형식 선언 문자 없이 묵시적으로 선언한 변수의 참조에서 형식 선언 문자를 사용하려고 하였습니다.

MyVar = 20	' 묵시적 선언입니다.

MyVar% = 25	' 오류를 생성합니다.

형식 선언 문자를 삭제하거나 원래의 변수를 다시 선언하십시오.

메모   명시적 변수 선언부에 형식 선언 문자가 들어 있는 경우 이후의 참조에서 문자는 포함시킬 수도 있고 포함시키지 않을 수도 있습니다. 예를 들면 다음과 같습니다.

Dim MyStr$

MyStr = "명시적으로 선언되었기 때문에 $은(는) 선택적입니다."

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


형식 선언 문자가 필요합니다

식별자 선언의 폼에 따라 형식 선언 문자 사용의 필요성이 결정됩니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	처음에 형식 선언 문자를 사용하여 묵시적으로 선언한 변수를 형식 선언 문자 없이 참조하였습니다. 예를 들면 다음과 같습니다.

MyStr$ = "묵시적 선언입니다."

MyStr = "MyStr$을(를) 참조하려고 하면 MyStr를 호출하게 되어" _

 & "오류가 발생합니다."

명시적으로 선언하거나 형식 선언 문자를 이후의 참조에 추가하십시오.

메모   명시적 변수 선언부에 형식 선언 문자가 들어 있는 경우 이후의 참조에서는 문자를 포함시킬 수도 있고 포함시키지 않을 수도 있습니다. 예를 들면 다음과 같습니다.

Dim MyStr$

MyStr = "명시적으로 선언되었기 때문에 $은(는) 선택적입니다."

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


형식 불일치: 배열이나 사용자 정의 형식이 필요합니다

인수 또는 매개 변수 형식에 배열 또는 사용자 정의 형식인지의 여부가 포함됩니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	인수가 배열의 단일 요소, 사용자 정의 형식 또는 단순 변수, 문자, 상수를 지정하였습니다. 그러나 인수가 전체 배열 또는 사용자 정의 형식을 기대하는 매개 변수로 전달됩니다.

인수를 바꾸거나 매개 변수의 정의를 바꾸십시오.

•	인수가 배열이나 사용자 정의 형식을 지정했지만 매개 변수와 같은 형식이 아닙니다.

올바른 배열을 넘겨 주거나 매개 변수 선언부에서 정의를 바꾸십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


디스크를 읽을 수 없습니다

디스크를 읽을 때 발생하는 일반적인 오류입니다. 다음은 오류 발생 원인과 해결 방법입니다.

•	디스크 드라이브 문이 제대로 닫혀 있지 않습니다.

이동식 디스크인 경우 디스크 문이 닫혀있는지 확인하십시오. 필요한 경우 제대로 닫으십시오.

•	디스크의 위 아래를 바꾸어 삽입하였습니다.

디스크를 올바르게 다시 넣으십시오.

•	디스크가 제대로 포맷되지 않았습니다.

현재 들어 있는 데이터를 지워도 되면 다시 포맷하십시오.

•	네트워크 문제가 발생하였습니다.

네트워크를 다시 연결하십시오.

•	특정 용량의 디스크를 읽을 수 없는 드라이브에 삽입하였습니다

다른 드라이브를 사용하거나 드라이브에서 읽을 수 있는 디스크에 원하는 데이터를 복사하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


디스크에 쓸 수 없습니다

디스크에 작성할 때 발생하는 일반적인 오류입니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	디스크 드라이브 문이 제대로 닫혀 있지 않습니다.

이동식 디스크인 경우 디스크 문이 닫혀있는지 확인하십시오. 필요할 경우 제대로 닫으십시오.

•	디스크의 위 아래를 바꾸어 삽입하였습니다.

디스크를 올바르게 다시 넣으십시오.

•	디스크가 제대로 포맷되지 않았습니다.

현재 들어 있는 데이터를 지워도 되면 다시 포맷하십시오.

•	네트워크 문제가 발생하였습니다.

네트워크를 다시 연결하십시오.

•	특정 용량의 디스크를 기록할 수 없는 드라이브에 삽입하였습니다.

다른 드라이브를 사용하거나 드라이브에서 읽을 수 있는 디스크에 원하는 데이터를 복사하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


예기치 않은 오류가 발생하였습니다. Microsoft 고객기술지원부에 문의하십시오

이 상황은 경우에 따라 치명적일 수도 아닐 수도 있습니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	호스트 응용 프로그램이나 Visual Basic에서 뜻밖의 오류가 발생하였습니다.

이 오류는 심각하지 않습니다. 그러나 오류 번호를 적어두었다가 Microsoft 고객기술지원부에 알리십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


찾는 문자열에서 대괄호의 짝이 맞지 않습니다

여는 괄호는 짝이 되는 닫는 괄호가 있어야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	찾는 문자열에서 여는 괄호로 열었지만 짝이 되는 닫는 괄호가 없습니다.

적당한 위치에 닫는 괄호를 넣으십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


인식할 수 없는 프로젝트 언어입니다

로드한 프로젝트에 대해 지정한 코드 로케일을 현재 이 응용 프로그램에서 지원하지 않습니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	코드 로케일을 지원하는 시스템에서 프로젝트를 만들었지만 코드 로케일을 인식하지 못하는 시스템으로 옮겨졌습니다. 예를 들면 현재 시스템에 있는 ole2nls.dll이 코드 로케일을 인식하지 못하는 버전일 수 있습니다.

현재 시스템에 적절한 동적 연결 라이브러리(DLL)를 설치하십시오.

•	프로젝트의 올바른 개체 라이브러리가 없습니다.

사용할 수 있는 올바른 개체 라이브러리가 있는지 확인하십시오. 예를 들면 경로에 디렉터리가 들어 있는지 확인하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


사용자 정의 형식은 ByVal로 전달될 수 없습니다

값에 의해서가 아니라 기본인 참조에 의해서만 사용자 정의 형식을 전달할 수 있습니다. 호출할 때까지 이 오류가 보고되지 않을 수도 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	사용자 정의 형식을 나타내는 매개 변수의 정의 부분에 ByVal 키워드를 넣었습니다.

ByVal 키워드를 삭제하십시오. 호출자에게 변경 사항이 다시 전달되지 않도록 하려면 형식의 Dim 임시 변수를 사용하여 임시 변수를 프로시저에 전달해 주십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


사용자 정의 형식이 정의되지 않았습니다

Visual Basic에서 데이터 형식을 만들 수 있지만 먼저 Type...End Type 문 또는 제대로 등록된 개체 라이브러리나 형식 라이브러리에서 정의해야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	정의되지 않은 데이터 형식을 가진 변수 또는 인수를 선언하려고 하였습니다. 또는 알 수 없는 클래스 또는 개체 이름을 지정하였습니다.

모듈에서 Type 문을 사용하여 새 데이터 형식을 정의하십시오. 클래스 참조를 만들려면 클래스가 프로젝트에 표시되어야 합니다. 프로그램에 있는 클래스를 참조할 경우 프로젝트에 지정된 이름의 클래스 모듈이 있어야 합니다. 형식 이름 또는 개체 이름의 철자를 확인하십시오.

•	선언하려는 형식이 다른 모듈에 있지만 Private으로 선언되었습니다.

형식의 정의 부분을 Public이 될 수 있는 표준 모듈로 이동시키십시오.

•	형식은 유효하지만, 형식이 정의된 개체 라이브러리 또는 형식 라이브러리가 Visual Basic에 등록되지 않았습니다.

참조 대화 상자를 표시한 다음 적당한 개체 라이브러리 또는 형식 라이브러리를 선택하십시오. 예를 들면 참조 대화 상자에서 Data Access Object를 선택하지 않은 경우 Database, Recordset, TableDef는 인식되지 않고 코드에서 이것을 참조하여 오류를 일으킵니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


구성원이 없는 사용자 정의 형식을 사용할 수 없습니다

사용자 정의 형식에는 하나 이상의 요소가 있어야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Type...End Type 정의 부분에서 빈 사용자 정의 형식을 지정하였습니다.

필요 없는 주석 구분 기호에 대한 Type 문을 확인하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


변수가 정의되지 않았습니다

인쇄 오류가 발생할 때 모듈이 변수를 선언하지 않는 것을 막고 부주의로 새 변수를 만들지 않기 위해 Option Explicit 문을 사용합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	명시적 변수 선언을 요구하기 위해 Option Explicit 문을 사용했으나 변수를 선언하지 않고 사용하였습니다.

변수를 명시적으로 선언하거나 변수의 철자를 변경하여 원하는 변수와 일치시키십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


이 구문에서는 아직 변수가 작성되지 않았습니다

먼저 변수를 만들어야 조사식 창 또는 직접 실행 창에서 표시하고 직접 실행 창에서 변수에 값을 지정할 수 있습니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	중단 모드에서 적어도 한 단계씩 실행 명령을 실행하기 전에 코드에서 입력한 지역 변수 값을 표시하려고 하였습니다.

코드를 한 단계씩 실행하여 새 문장을 컴파일하십시오.

•	대화 상자를 사용하여 프로시저를 이동시켜 프로시저에서 추가한 지역 변수값을 표시하려고 하였습니다.

프로시저에 실제로 반환해야 컨텍스트에서 변수를 표시할 수 있습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


변수가 필요합니다. 이 식에 지정할 수 없습니다

일반적으로 이 오류는 지정할 수 없는 부분에 값을 지정할 때 발생합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Len 함수에서 수식을 인수로 사용하려고 하였습니다.

Len 함수는 수식, 숫자 문자, 이진 수식을 받아들이지 않고 문자열이나 숫자 변수, 문자식, 사용자 정의 형식의 변수를 받아들입니다.

•	Input #, Let, Get, Put에 대한 인수로 함수 또는 식을 호출하였습니다. 예를 들면 배열 변수에 유효한 참조처럼 보이는 인수를 사용했지만 같은 이름의 함수 호출입니다.

Input #, Let, Get, Put은 함수 호출을 인수로 사용할 수 없습니다.

•	이전에 상수로 선언한 식별자에 값을 지정하려고 하였습니다.

식별자에 대해 다른 이름을 선택하십시오.

•	For...Next 문에서 변수 이외의 것을 루프 카운터로 사용하려고 하였습니다.

카운터로 변수를 사용하십시오.

•	읽기 전용 속성 또는 하나 이상의 변수가 있는 식(예: X + Y)에 값을 지정하려고 하였습니다. 그러면 메모리 위치에 값을 지정합니다. 지정한 식은 기록할 수 있는 한 위치를 나타내야 합니다.

데이터를 사용할 수 있는 하나의 변수 이름에 다시 지정하십시오.

•	형식 라이브러리에서 상수로 정의된 선언되지 않은 변수를 사용하려고 하였습니다.

변수의 다른 이름을 사용하거나 분명하게 선언하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


경고: 사용자 정의 언어 설정이 호환되지 않습니다

모든 언어의 설정을 옮겨서 사용할 수 있는 것은 아닙니다. 다음은 경고의 발생 원인과 해결 방법입니다.

•	코드에서 사용자 정의 언어 설정을 하였습니다.

사용자 정의 언어/국가 설정을 선택하면 코드에서 사용된 언어 규약은 시스템의 제어판에서 설정한 언어 규약과 일치합니다. 사용자 정의 코드 로케일 설정을 사용할 수는 있지만 설정이 다른 시스템 또는 다른 로케일에서는 코드가 작동하지 않습니다. 호스트 응용 프로그램은 응용 프로그램이 실행되는 시스템의 제어판 설정 사항을 기준으로 문자열을 분석합니다.

대상 시스템의 제어판 설정이 코드를 작성한 시스템의 설정과 같지 않으면 호스트 응용 프로그램이 분석한 문자열이 동작하지 않습니다. 예를 들면 코드는 로케일 별 소수점 구분 기호에 따라 다릅니다. 그러므로 코드를 다른 사용자에게 보내지 않을 경우 사용자 정의 언어 설정을 사용해서는 안됩니다. 다른 사용자에게 코드를 보낼 경우 이미 정의된 로케일을 사용하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Wend에는While이 필요합니다

모든 Wend 문 앞에 대응되는 While 문이 있어야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	앞부분에 While 문을 사용하지 않고 Wend 문을 사용하였습니다.

While...Wend 루프 내에 종료되지 않는 루프가 중첩되어 오류를 발생시키는지 확인하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


While에는 Wend가 필요합니다

대응되는 Wend 문 없이 While 문을 사용하였습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	While...Wend 구문을 열었으나 닫지 않았습니다.

외부 While...Wend 문 내에 제대로 일치되지 않는 While...Wend 문이 있는지 확인하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


With 개체는 사용자 정의 형식, Object 또는 Variant이어야 합니다

With...End With 블록을 모든 형식의 변수와 사용할 수는 없습니다. 다음은 오류의 발생 원인과 해결 방법입니다.

•	With 블록 내에 있는 개체가 포함된 Object 형식, 사용자 정의 형식 또는 Variant 형식이 아닌 변수를 사용하려고 하였습니다.

철자가 틀린 개체 이름, 사용자 정의 형식 또는 Variant 변수가 있는지 확인하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


배열의 차원 수가 잘못되었습니다

배열의 선언에서 정의한 것과 같은 차원에 해당하는 인덱스로 된 배열을 참조해야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	실제 포함된 것과 다른 차원의 수가 있는 배열을 참조하였습니다. 예를 들면 Dim X(5)(1차원 배열)로 정의된 배열에서 X(2,4)(2차원 배열)로 참조하면 이 오류가 발생합니다.

배열의 선언부를 확인하고 선언부에서 각 차원에 대해 하나의 인덱스를 포함시키십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


이 동작은 프로젝트를 재설정할 것입니다. 그래도 계속하시겠습니까?

중단 모드에서 코드를 편집할 수 있지만, 몇 가지 사항을 편집하고 나면 실행을 계속할 수 없습니다. 다음은 오류 발생 원인과 해결 방법입니다.

•	실행을 중단시키는 편집을 하려고 하였습니다. 예를 들면 정적 변수를 선언하였습니다.

예를 선택하면 실행이 종료되어 코드를 편집할 수 있습니다. 아니오를 선택하면 중단된 부분부터 코드를 계속 실행할 수 있습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


#End If를 사용하여 #If 블록을 종료해야 합니다

#If 문은 조건부 컴파일 방향 전환입니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	#If 블록이 #End If로 종료되지 않습니다.

해당 위치에 #End If를 추가하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


전용 개체 모듈은 공용 개체 모듈에서의 매개 변수로, Public 프로시저의 반환 형식으로, 공용 데이터 구성원으로 또는 공용 사용자 정의 형식 필드로 사용할 수 없습니다

이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	전용 개체 모듈을 공용 개체 모듈에서의 매개 변수로, public 프로시저의 반환 형식으로, 데이터 구성원으로 또는 공용 사용자 정의 형식 필드로 사용하려 했으며 이는 허용되지 않습니다.


공용 개체 모듈에 정의된 공용 사용자 정의 형식은 클래스 모듈에서 Public 프로시저의 매개 변수나 반환 형식으로 또는 공용 사용자 정의 형식 필드로만 사용할 수 있습니다

이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	클래스 모듈의 Public 프로시저에 대한 매개 변수나 반환 형식 또는 공용 사용자 정의 형식의 필드로 공용 사용자 정의 형식을 사용하려 했습니다. 공용 개체 모듈에서 정의된 공용 사용자 정의 형식만 이 방법으로 사용할 수 있습니다.


개체 라이브러리가 잘못되었거나 찾을 수 없는 개체 정의에 대한 참조를 포함하고 있습니다

이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	개체 라이브러리가 잘못되었거나 찾을 수 없는 개체 정의에 대한 참조를 포함하고 있습니다.


선택적 인수가 아닙니다(오류 번호 449)

인수의 형식과 수는 필요한 형식과 수에 일치해야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	인수의 수가 정확하지 않습니다.

모든 필수 인수를 제공하십시오. 예를 들면 Left 함수는 두 개의 인수를 필요로 합니다. 하나는 작업 중인 문자열을 나타내고, 나머지 하나는 문자열의 왼쪽에서부터 반환할 문자의 개수를 나타냅니다. 두 인수 모두 선택 인수가 아니기 때문에 두 인수 모두가 필요합니다.

•	생략한 인수는 선택적 인수가 아닙니다.

프로시저 선언에서 Optional로 선언된 경우 인수는 사용자 정의 프로시저 호출에서 제외될 수 있습니다. 호출에 인수를 제공하거나 정의에서 매개 변수 Optional을 선언하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


DLL 호출 규정이 잘못되었습니다(오류 번호 49)

동적 연결 라이브러리(DLL) 또는 매킨토시 코드 리소스 루틴에 전달되는 인수는 루틴에서 필요한 것과 정확히 일치해야 합니다. 호출 규정은 인수의 수, 형식, 순서를 다룹니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	프로그램에서 잘못된 형식의 인수를 전달한 DLL(Windows의 경우) 또는 코드 리소스(매킨토시의 경우)의 루틴을 호출하였습니다.

모든 인수 형식이 호출하는 루틴의 선언부에서 지정한 것과 일치하는지를 확인합니다.

•	프로그램에서 잘못된 개수의 인수를 전달한 DLL(Windows의 경우) 또는 코드 리소스(매킨토시의 경우)의 루틴을 호출하였습니다.

호출하는 루틴의 선언부에서 지정한 것과 같은 수의 인수를 전달하는지를 확인합니다.

•	프로그램이 DLL의 루틴을 호출하면서 StdCall 호출 규정을 사용하지 않습니다.

DLL 루틴이 값에 의한 전달 호출이 필요하면 루틴의 선언부에서 지정한 인수에 대해 ByVal을 지정했는지를 확인합니다.

•	Windows DLL의 선언문에 CDecl이 포함되었습니다.

CDecl 키워드는 매킨토시에서만 적용됩니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


파일 모드가 잘못되었습니다(오류 번호 54)

파일 내용을 조작하는 데 사용하는 문은 파일이 열린 모드에 적합한 것이어야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Put이나 Get 문에서 순차 파일을 지정하였습니다.

Put이나 Get은 Random이나 Binary 액세스로 열린 파일만을 참조할 수 있습니다.

•	Print # 문에서 Output이나 Append 이외의 액세스 모드로 열린 파일을 지정하였습니다.

파일에 데이터를 놓는데 다른 문을 사용하거나 적절한 모드로 파일을 다시 엽니다.

•	Input # 문에서 Input 이외의 액세스 모드로 열린 파일을 지정하였습니다.

파일에 데이터를 놓는데 다른 문을 사용하거나 Input 모드로 파일을 다시 엽니다.

•	읽기 전용 파일에 쓰기를 시도하였습니다.

파일의 읽기/쓰기 상태를 변경하거나 쓰기를 포기합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


파일 이름 또는 번호가 잘못되었습니다(오류 번호 52)

지정된 파일에 액세스하는 과정에서 오류가 발생할 수 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	문이 참조하는 파일의 파일 번호 또는 파일 이름은 다음 사항에 해당합니다.

•	Open 문에서 지정되지 않았거나 Open 문에서 지정되었더라도 그 이후에 닫혔습니다.

Open 문에서 파일 이름을 지정합니다. Close 문을 인수 없이 실행한 경우 의도와 상관없이 현재 열린 파일을 모두 닫아서 파일 번호를 모두 사용할 수 없게 되는 경우가 생길 수 있다는 것에 주의하십시오.

•	파일 번호 범위(1 - 511)를 벗어났습니다.

코드 알고리즘으로 파일 번호를 생성하는 경우에는 파일 번호가 유효한 것인지를 확인합니다.

•	잘못된 이름이나 번호가 있습니다.

파일 이름은 Basic 명명 규칙 외에 운영 체제에서 정하는 형식에도 맞아야 합니다. Microsoft Windows의 경우에는 파일과 디렉터리의 이름을 정할 때에 다음의 규정을 따릅니다.

•	파일이나 디렉터리의 이름은 지정한 이름과 생략 가능한 확장명의 두 부분으로 구성될 수 있습니다. 이 두 부분은 myfile.new처럼 마침표를 사용하여 구분합니다.

•	이름에는 255문자까지 사용할 수 있습니다.

•	이름은 문자 또는 숫자로 시작해야 합니다. 이름은 대/소문자를 구분하지 않으므로 대문자와 소문자 모두 사용할 수 있습니다. 그러나 큰따옴표("), 아포스트로피('), 슬래시(/), 백슬래시(\), 콜론(:), 세로줄(|)과 같은 문자는 제외됩니다.

•	이름에 공백을 포함시킬 수 있습니다.

•	CON, AUX, COM1, COM2, COM3, COM4, LPT1, LPT2, LPT3, PRN, NUL과 같은 이름은 이미 예약되어 있으므로, 파일이나 디렉터리 이름으로는 사용할 수 없습니다. 예를 들면 Open 문에서 파일 이름을 PRN으로 하면 Print # 문이 기본 프린터를 지시하고 Write # 문은 Open 문에서 지정한 파일의 파일 번호를 지시합니다.

•	다음에 나열된 것은 형식에 맞는 Microsoft Windows 파일 이름의 예입니다.

LETTER.DOC

My Memo.Txt

BUDGET.92

12345678.901

Second Try.Rpt

•	매킨토시 파일 이름의 경우에는 콜론(:)을 제외한 모든 기호를 사용할 수 있으며 공백도 포함할 수 있습니다. Null 문자(Chr(0))는 파일 이름으로 사용할 수 없습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


레코드 길이가 잘못되었습니다(오류 번호 59)

Get이나 Put 문에서 레코드 변수 길이는 해당 Open 문에서 지정한 것과 일치해야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	레코드 변수의 길이가 해당 Open 문에서 지정된 것과 다릅니다.

레코드 변수의 형식을 결정하는 사용자 정의 형식의 고정 길이 변수 크기의 합이 Open 문의 Len 절 값과 일치해야 합니다. 다음의 예제에서는 RecVar가 적절한 형식의 변수라고 가정합니다. Len 함수를 사용해서 다음과 같이 길이를 지정할 수 있습니다.

Open MyFile As #1 Len = Len(RecVar)

•	Put 문에 있는 변수가 변수 길이 문자열이거나 문자열을 포함합니다.

Put으로 랜덤 액세스 파일에 위치시킨 변수 길이 문자열에는 항상 2바이트의 설명자가 추가되기 때문에 변수 길이 문자열은 Open 문의 Len 절에서 지정한 레코드 길이보다 두 문자 이상 짧아야 합니다.

•	Put 문에 있는 변수가 Variant이거나 Variant를 포함합니다.

변수 길이 문자열의 경우와 마찬가지로 Variant 데이터 형식에도 2바이트의 설명자가 필요합니다. 변수 길이 문자열을 포함하는 variant에는 4바이트의 설명자가 필요합니다. 그러므로 Variant 내에 있는 변수 길이 문자열의 경우에는 문자열의 길이가 Len 절에서 지정한 레코드 길이보다 4바이트 이상 짧아야 합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


레코드 번호가 잘못되었습니다(오류 번호 63)

파일 액세스 시도 중 오류가 발생하였습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Put이나 Get 문에 있는 레코드 번호가 0 이하입니다.

레코드 번호를 생성하는 데에 사용된 계산을 확인합니다. 레코드 번호를 포함하거나 레코드 번호를 계산하는 데에 사용되는 변수의 이름이 정확한지 확인합니다. 모듈에 Option Explicit을 적절히 위치시키지 않으면, 잘못된 변수 이름이 내부적으로 선언되어 0으로 초기화됩니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


필요한 임시 파일을 작성할 수 없습니다(오류 번호 322)

실행 파일을 만들려면 임시 파일을 만들어야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	TEMP 환경 변수에서 지정한 디렉터리를 포함하는 디스크에 여유 공간이 없습니다.

공간이 부족한 디스크에서 파일을 삭제하거나 TEMP 환경 변수에서 다른 드라이브를 지정하십시오.

•	TEMP 환경 변수에서 지정하는 드라이브나 디렉터리가 잘못되었거나 읽기 전용입니다.

TEMP 환경 변수에 사용할 수 있는 드라이브를 지정하거나 현재 지정되어 있는 드라이브나 디렉터리에서 읽기 전용 제한을 삭제하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


요청된 작업을 수행할 수 없습니다(오류 번호 17)

동작의 수행 결과 프로젝트의 현재 상태에 이상이 생기는 경우 해당 동작은 수행할 수 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	요청된 동작의 수행으로 프로젝트의 현재 상태에 이상이 생겼습니다. 예를 들면 프로그램이 중단 모드에 있는데 참조 대화 상자를 사용해서 새 프로젝트나 개체 라이브러리에 참조 부분을 추가하려고 하면 오류가 발생합니다.

현재 코드의 실행을 중단하고 동작을 다시 시도하십시오.

•	현재 실행 중인 코드를 프로그램에서 수정하였습니다. 예를 들면 코드가 디스크 파일에 있는 코드를 현재 실행 중인 모듈로 읽어 들이려 합니다.

프로젝트 내에 있는 모듈이 실질적으로 실행 중이 아닌 경우에는 수정이 가능하지만 실행 중인 모듈은 수정할 수 없습니다. 수정을 하려면 모듈 실행을 멈춘 후 추가 또는 변경 작업을 수행하고 다시 실행을 시작해야 합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


다른 드라이브로 이름을 변경할 수 없습니다(오류 번호 74)

Name 문은 현재 드라이브로 파일의 이름을 변경합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Name 문을 사용해서 파일을 다른 드라이브로 옮기려 하였습니다.

FileCopy 명령을 사용해서 파일을 다른 드라이브로 복사한 후 Kill 문으로 원래의 파일을 삭제하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


파일을 TEMP 디렉터리에 저장할 수 없습니다(오류 번호 735)

구성 요소의 임시 정보를 디스크에 저장하는 경우가 종종 발생합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	구성 요소가 TEMP라는 이름의 디렉터리를 찾을 수 없습니다.

TEMP라는 이름의 디렉터리를 작성한 후 TEMP 환경 변수를 그 경로에 맞게 설정하십시오.

•	TEMP 디렉터리가 있는 드라이브 또는 분할 영역에 정보를 저장할 공간이 충분하지 않습니다.

필요 없는 파일을 삭제하여 드라이브에 공간을 만들어 주거나 다른 분할 영역에 TEMP 디렉터리를 작성한 후 TEMP 환경 변수를 그 경로에 따라 설정하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


클래스는 자동화를 지원하지 않습니다(오류 번호 430)

모든 개체가 자동화 인터페이스를 사용하는 것은 아닙니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	GetObject나 CreateObject 함수를 호출할 때에 지정한 클래스를 찾기는 했지만 프로그램 가능한 인터페이스에 노출되지 않았습니다.

개체가 자동화를 지원하지 않으면 코드를 사용해서 개체의 기능을 제어할 수 없습니다. 개체를 작성한 응용 프로그램의 설명서에서 그 클래스의 개체에 대한 자동화 제한 여부를 확인하십시오.

•	프로젝트를 .dll에서 .exe로 또는 그 반대로 변경하였습니다. 예를 들어 이미 컴파일되고 등록된 .dll 서버가 있고 프로젝트 형식을 .exe로 변경할 경우 이미 시스템에 등록된 .dll과 .exe가 개체 작성을 막습니다. 기존 .dll이나 .exe를 수동으로 등록 해제하여 이 문제를 방지해야 합니다.

이 오류는 프로젝트 호환성 조합과 .exe에서 .dll로의 프로젝트 변경으로 인해 발생합니다. 프로젝트 호환성에 있어 CLSID는 보존되지만 IID는 보존되지 않습니다. CLSID는 보존되므로, 클래스는 진행중인 서버와 로컬 서버로 등록되어 종료됩니다. 인스턴스가 작성될 때 진행 중인 서버가 선택됩니다. 인터페이스 조회가 발생할 때 .dll은 IID가 새 것이므로 지원하지 않습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


코드 리소스 잠금 시 오류가 발생하였습니다(오류 번호 455)

이 오류는 매킨토시에서만 발생합니다. 코드 리소스에 액세스하는 경우 잠금 설정을 해야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	코드 리소스 내에 있는 프로시저를 호출하였습니다. 코드 리소스는 발견되었으나 리소스를 잠그려 할 때에 오류가 발생하였습니다.

Hlock에서 반환하는 오류 메시지를 확인합니다. 예를 들면 "빈 핸들이 잘못되었습니다."나 "프리 블록에서 잘못되었습니다."라는 오류 메시지가 있을 수 있습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


코드 리소스를 찾을 수 없습니다(오류 번호 454)

이 오류는 매킨토시에서만 발생합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	코드 리소스의 프로시저를 호출했는데, 코드 리소스를 발견할 수 없습니다.

리소스가 사용 가능하고 정확하게 참조되었는지 확인하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


원격 프로세스를 위한 형식 라이브러리나 개체 라이브러리 속성 연결이 소실되었습니다(오류 번호 442)

원격 액세스 중, 즉 다른 프로세스의 일부이거나 다른 컴퓨터에서 실행 중인 개체에 액세스할 때, 개체 정보를 포함한 라이브러리로의 연결이 끊어집니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	원격 프로세스의 개체 라이브러리나 형식 라이브러리로의 연결이 소실되었습니다.

다시 연결하려면 다음 단계를 따르십시오.

1. 자동화 개체를 다시 시작합니다.

2. 이 도움말 항목에 연결된 오류 대화 상자에서 확인을 눌러서 참조 대화 상자를 표시합니다.

3. 소실된 참조 문이 왼쪽에 표시되는 MISSING이라는 말과 함께 나타납니다.

4. 소실된 참조 문을 제거합니다.

5. 참조 대화 상자에서 1단계에서 시작한 개체의 확인란을 누릅니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


장치 입출력 오류입니다(오류 번호 57)

외부 장치는 예기치 못한 오류를 발생시키는 경우가 종종 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	프로그램에서 프린터나 디스크 드라이브 등의 장치를 사용하는 중 입력이나 출력 오류가 발생하였습니다.

장치가 정확하게 작동하는지 여부를 확인한 후 작업을 재시도하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


사용할 수 없는 장치입니다(오류 번호 68)

이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	액세스하려는 장치가 온라인 상태가 아니거나 존재하지 않습니다.

장치의 전원과 컴퓨터와 장치를 연결하는 케이블을 확인하십시오. 네트워크를 통해 프린터에 연결하는 경우 컴퓨터와 프린터 사이에 논리적인 연결이 성립되어 있는지를 확인합니다. 예를 들면 LPT1과 네트워크 프린터 ID를 연관시키는 연결이 있습니다.

•	네트워크 연결이 끊어졌을 수도 있습니다.

네트워크 연결을 다시 한 후 동작을 시도합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


디스크에 여유 공간이 없습니다(오류 번호 61)

이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Print #, Write # 또는 Close 작업을 완료하기에 충분한 공간이 디스크에 남아 있지 않습니다.

파일을 일부 다른 디스크로 옮기거나 삭제하십시오.

•	필요한 파일을 만들기에 충분한 공간이 디스크에 남아 있지 않습니다.

파일을 일부 다른 디스크로 옮기거나 삭제하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


디스크가 준비되지 않았습니다(오류 번호 71)

이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	지정된 드라이브에 디스크가 없습니다.

드라이브에 디스크를 넣은 후 동작을 다시 시도하십시오.

•	지정된 드라이브의 드라이브 문이 열려 있습니다.

드라이브 문을 닫은 후에 동작을 다시 시도하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


0으로 나누었습니다(오류 번호 11)

0으로는 나눌 수 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	식에서 제수로 사용되는 값이 0입니다.

식에 있는 변수의 철자를 확인하십시오. 철자가 틀린 변수 이름은 0으로 초기화되는 숫자 변수를 묵시적으로 만들 수 있습니다. 식의 변수에 대해 실행된 이전 작업, 특히 다른 프로시저에서 해당 프로시저에 인수로 전달된 것을 확인하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


DLL을 불러오는 중 오류가 발생하였습니다(오류 번호 48)

동적 연결 라이브러리(DLL)는 Declare 문의 Lib 절에서 지정한 라이브러리입니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	실행 DLL파일이 아닙니다.

파일이 원본 텍스트 파일인 경우 실행 DLL 폼으로 컴파일되고 연결되어야 합니다.

•	Microsoft Windows DLL 파일이 아닙니다.

그 파일과 동등한 Microsoft Windows DLL을 얻어야 합니다.

•	Microsoft Windows 보호 모드와 호환되지 않는 이전 버전의 Microsoft Windows DLL 파일입니다.

DLL 파일의 업데이트된 버전을 얻어야 합니다.

•	존재하지 않는 다른 DLL 파일을 DLL 파일에서 참조하였습니다.

참조된 DLL 파일을 구하여 다른 DLL 파일에 사용할 수 있도록 합니다.

•	DLL 파일이나 참조된 DLL 파일 중 하나가 경로에 지정된 디렉터리에 있지 않습니다.

DLL을 참조된 디렉터리로 옮기거나 현재 디렉터리를 경로에 지정하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


파일이 이미 존재합니다(오류 번호 58)

이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	이 오류는 실행 모드에서 발생하며 새 파일 이름이 이미 존재하는 파일 이름과 일치하는 경우에 발생합니다. Name 문을 예로 들 수 있습니다.

위의 경우 Name 문에서 새 파일 이름을 지정하거나 Name 문을 실행하기 전에 이전의 파일을 삭제하십시오.

•	다른 이름으로 저장 명령을 사용해서 현재 열려 있는 프로젝트를 저장하려 했으나 그 프로젝트 이름이 이미 존재합니다.

다른 프로젝트 위에 덮어쓰는 경우가 아니면 다른 프로젝트 이름을 사용하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


파일이 이미 열려 있습니다(오류 번호 55)

Open이나 다른 작업이 발생하기 전에 파일을 닫아야 하는 경우입니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	순차 출력 모드 Open 문이 이미 열려 있는 파일에 실행되었습니다.

순차적 액세스의 한 형식에 대하여 열려 있는 파일은 다른 형식에 대하여 열기 전에 닫아 주어야 합니다. 예를 들면 Input에 사용하기 위해 열었던 파일을 Output용으로 다시 열 경우에는 반드시 먼저 열었던 것을 닫아야 합니다.

•	Kill, SetAttr, Name 등의 문이 열린 파일을 참조하였습니다.

문을 실행하기 전에 파일을 닫아야 합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


지정된 파일을 찾을 수 없습니다(오류 번호 53)

지정한 곳에서 파일을 찾을 수 없는 경우가 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Kill, Name, Open 등의 문이 존재하지 않는 파일을 참조하였습니다.

파일 이름과 지정된 경로의 철자를 확인하십시오.

•	동적 연결 라이브러리(DLL) 또는 매킨토시 코드 리소스를 호출하려 했지만 라이브러리 또는 리소스 파일 이름을 찾을 수 없습니다.

파일 이름과 지정된 경로의 철자를 확인하십시오.

•	개발 환경에서 존재하지 않는 텍스트 파일을 로드하거나 프로젝트를 열려고 할 경우 이 오류가 발생합니다.

프로젝트 이름이나 파일 이름, 지정된 경로의 철자를 확인하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


For 루프를 초기화하지 않았습니다(오류 번호 92)

For 루프의 카운터를 초기화해야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	For...Next 루프의 중간에 점프하였습니다.

루프에 대한 점프를 삭제하십시오. For...Next 루프 내부에 레이블을 두는 것은 좋지 않습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


파일 끝을 넘는 입력값입니다(오류 번호 62)

파일 끝 위치는 넘어갈 수 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Input #이나 Line Input # 문이 모든 데이터가 이미 읽혀진 파일이나 빈 파일에서 내용을 더 읽으려 합니다.

파일의 끝 위치를 찾으려면, EOF 함수를 Input # 문 바로 앞에 사용하십시오.

•	Binary 액세스용으로 열린 파일에 EOF 함수를 사용하였습니다.

EOF 함수는 순차적인 Input 액세스용으로 열린 파일에 대해서만 동작합니다. Binary 액세스용으로 열린 파일에는 Seek과 Loc을 사용하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


내부 오류입니다(오류 번호 51)

이 오류가 Error 문이나 Raise 메서드에 의해 생성되지 않은 것인지 확인하십시오. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Visual Basic 내부에서 기능 이상이 생겼습니다.

이 호출이 Error 문이나 Raise 메서드에서 생성된 것이 아닌 경우에는 Microsoft 고객기술지원부에 연락하여 메시지가 나타난 상황을 알려야 합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


클립보드 형식이 잘못되었습니다(오류 번호 460)

클립보드는 지정된 형식의 데이터만을 수용합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	구성 요소의 데이터를 클립보드에 놓으려 하였습니다. 데이터가 클립보드와 호환되지 않는 형식입니다.

구성 요소로부터 데이터를 전송할 수 있는지 확인하려면 구성 요소에 대한 설명서를 참조하여 클립보드를 사용하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


파일 형식이 잘못되었습니다(오류 번호 321)

디스크 파일에는 독점적인 형식으로 저장된 데이터가 있을 수 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	파일을 구성 요소로 로드하려고 시도하였으나 파일의 데이터 형식이 구성 요소와 호환되지 않습니다.

디스크 파일 데이터의 형식이 올바른지와 구성 요소가 하나의 형식에서 다른 형식으로의 변환을 지원하는지 여부를 확인하려면 구성 요소에 관한 설명서를 참조하십시오.

•	구성 요소 데이터를 파일에 저장하려고 하였으나 데이터의 형식이 파일의 형식과 호환되지 않습니다.

구성 요소가 하나의 형식에서 다른 형식으로의 변환을 지원하는지 여부를 확인하려면 구성 요소에 관한 설명서를 참조하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


서수가 잘못되었습니다(오류 번호 452)

#num 구문을 사용하여 동적 연결 라이브러리(DLL) 호출에 프로시저 이름 대신 숫자를 사용하도록 하였습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	num 식을 서수로 변환하려는 시도가 실패하였습니다.

식이 유효한 숫자를 나타내는지 또는 이름으로 프로시저를 호출하는지 확인합니다.

•	지정된 num이 DLL 내의 함수를 지정하지 않았습니다.

num이 DLL 내의 유효한 함수를 식별하는지 확인합니다.

•	형식 라이브러리에 잘못된 선언이 있어 잘못된 서수를 내부에서 사용하였습니다.

코드에 주석을 달아 문제의 원인이 되는 프로시저 호출을 고립시킵니다. 해당 프로시저에 Declare 문을 쓰고 형식 라이브러리 제조업체에 문의하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


패턴 문자열이 잘못되었습니다(오류 번호 93)

찾기의 Like 작업에서 지정된 패턴 문자열이 잘못된 경우입니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	닫는 대괄호가 없는 [a-b와 같은 잘못된 문자 목록 식입니다.

목록 식에 유효한 문자를 찾아 보십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


프로시저 호출 또는 인수가 잘못되었습니다(오류 번호 5)

호출의 일부가 완성되지 않는 경우도 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	인수가 허용된 값의 범위를 넘었습니다. 예를 들면 Sin 함수는 일정 범위 안에 들어가는 값만을 허용합니다. 2,147,483,648보다 작은 양수는 허용되지만 2,147,483,648이 되면 이 오류가 발생합니다.

인수에 허용된 범위를 확인하십시오.

•	이 오류는 현재 플랫폼에 유효하지 않은 프로시저를 호출하려고 해도 발생할 수 있습니다. 예를 들면 프로시저가 Microsoft Windows나 매킨토시 등 여러 플랫폼 중 한 곳에서만 사용할 수 있는 경우도 있습니다.

프로시저의 플랫폼 관련 정보를 확인하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


속성 배열 인덱스가 잘못되었습니다(오류 번호 381)

속성값은 값의 배열로 이루어져 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	구성 요소의 속성 배열 값이 취할 수 있는 값의 하한선은 0이고 상한선은 배열의 구성원 수에서 1을 뺀 값과 같습니다. 또 다른 방법은 하한선을 1로 두고 상한선을 배열의 구성원 수와 같게 하는 것입니다.

인덱스가 지정된 속성에 맞는 범위 내에 있는지 확인하려면 구성 요소에 관한 설명서를 참조하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


TNull의 사용이 잘못되었습니다(오류 번호 94)
Null의 사용이 잘못되었습니다(오류 번호 94)

Null은 데이터 항목에 유효한 데이터가 들어있지 않다는 것을 나타내는 데에 사용되는 Variant 하위 형식입니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	다음과 같이 Null인 식이나 Variant 변수의 값을 얻으려고 하였습니다.

MyVar = Null

For Count = 1 To MyVar

. . .

Next Count

변수가 유효한 값을 포함하는지 확인합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


명명된 인수를 찾을 수 없습니다(오류 번호 448)

명명된 인수가 프로시저 프로시저 정의에 나타나지 않으면 프로시저 요청에 사용되지 않을 수 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	명명된 인수를 지정하였으나 프로시저가 그 이름으로 인수를 받아들이도록 정의되지 않았습니다.

인수 이름의 철자를 확인하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를 , 매킨토시의 경우에는 Help키를 누르십시오.


속성 배열 인덱스가 필요합니다(오류 번호 385)

이 속성값은 단일 값보다는 배열로 이루어지는 경향이 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	액세스하려는 속성 배열에 인덱스를 지정하지 않습니다.

적합한 인덱스의 범위를 찾으려면 구성 요소 설명서를 참조하십시오. 속성 액세스 문에 적절한 인덱스를 지정하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


개체는 현재의 로케일 설정을 지원하지 않습니다(오류 번호 447)

모든 개체가 모든 로케일 설정을 지원하지는 않습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	현재 프로젝트의 로케일 설정을 지원하지 않는 개체에 액세스하려 합니다. 예를 들면 현재 프로젝트의 로케일 설정이 프랑스어(캐나다)로 되어 있다면 액세스하려는 개체에서도 이 로케일 설정을 지원해야 합니다.

개체가 지원하는 로케일 설정을 확인하십시오.

•	개체는 동적 연결 라이브러리(DLL) 또는 매킨토시 코드 리소스의 국가별 언어 지원에 따라 영향을 받습니다. 예를 들면 OLE2NLS.DLL같은 경우는 날짜가 지나서 쓸모없을 수도 있습니다.

현재의 프로젝트 로케일 설정을 지원하는 최근 버전의 DLL을 얻어야 합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


개체는 명명된 인수를 지원하지 않습니다(오류 번호446)

개체 모두가 명명된 인수를 지원하지는 않습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	명명된 인수를 지원하지 않는 메서드가 있는 개체에 액세스하려 하였습니다.

이 개체에서 메서드를 수행할 경우에는 인수의 위치로 지정합니다. 인수 위치와 형식에 관해 자세한 정보를 얻으려면 개체 설명서를 참조하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를 , 매킨토시의 경우에는 Help키를 누르십시오.


개체는 이 기능을 지원하지 않습니다(오류 번호 445)

모든 개체가 모든 기능을 다 지원하는 것은 아닙니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	이 개체에서 지원하지 않는 메서드나 속성을 참조하였습니다.

개체에 대한 자세한 정보를 얻고 속성과 메서드의 철자를 확인하려면 개체 설명서를 참조하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를 , 매킨토시의 경우에는 Help키를 누르십시오.


TProperty let 프로시저가 정의되지 않고 property get프로시저가 개체를 반환하지 않습니다(오류 번호 451)
Property let 프로시저가 정의되지 않고 property get프로시저가 개체를 반환하지 않습니다(오류 번호 451)

속성이나 메서드, 작업의 일부는 Collection 개체에만 적용될 수 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	컬렉션에 대해 독점적인 작업이나 속성을 지정하였으나 개체가 컬렉션이 아닙니다.

개체나 속성 이름의 철자를 확인하거나 해당 개체가 Collection 개체라는 것을 확인하십시오. 개체를 컬렉션에 추가하는 데에 사용한 Add 메서드를 살펴서 구문이 정확하고 식별자의 철자가 정확한지를 확인하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


개체가 필요합니다(오류 번호 424)

속성과 메서드에 대한 참조가 독점적인 개체 수식어를 필요로 하는 경우가 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	개체 속성이나 메서드를 참조하였으나 유효한 개체 수식어를 제공하지 않습니다.

개체 수식어가 없으면 지정하십시오. 예를 들면 폼의 모듈에서 폼 속성을 참조하는 경우에는 개체 수식어를 생략할 수 있지만 표준 모듈에서 속성을 참조하는 경우에는 수식어를 확실하게 지정해 주어야 합니다.

•	개체 수식어를 사용했지만 개체로 인식되지 않습니다.

개체 수식어의 철자와 개체가 프로그램의 참조하는 부분에 나타나는지 확인하십시오. Collection 개체의 경우에는 Add 메서드가 나타날 때마다 모든 구성원의 구문과 철자가 맞는지를 확인합니다.

•	유효한 개체 수식어를 사용했지만 호출의 다른 부분에 오류가 있습니다.

호스트 응용 프로그램의 파일 열기 명령으로 지정된 인수처럼 경로가 잘못되면 오류가 발생합니다. 인수를 확인하십시오.

•	개체 참조를 지정하는 데에 Set 문을 사용하지 않습니다.

CreateObject 호출에서 반환값을 Variant 변수로 지정하는 경우 Set 문이 생략되어도 오류가 생기지 않을 수 있습니다. 다음의 코드 예제에서는 내재적인 Microsoft Excel 인스턴스가 만들어지고 기본 속성("Microsoft Excel" 문자열)은 Variant RetVal로 반환되어 지정됩니다. RetVal을 개체 참조 문으로 사용하려는 순차적인 시도는 이 오류를 발생시킵니다.

Dim RetVal	' 내부적으로 Variant입니다.

' 기본 속성이 Type 8 Variant RetVal에 지정되었습니다.

RetVal = CreateObject("Excel.Application")

RetVal.Visible = True	' 여기에서 오류가 발생합니다.

개체 참조 문을 지정할 때에는 Set 문을 사용합니다.

•	드문 경우지만 이상이 없는 개체에 잘못된 기능을 수행하려고 할 경우에도 이 오류가 발생합니다. 예를 들면 읽기 전용 속성에 값을 지정하려고 하면 이 오류가 발생합니다.

개체 설명서에서 수행하려는 기능이 잘못된 기능이 아닌지 확인하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


개체 변수 또는 With 블록 변수가 설정되어 있지 않습니다(오류 번호 91)

개체 변수를 작성하는 작업은 두 단계로 이루어집니다. 먼저 할 일은 개체 변수를 선언하는 것입니다. 그 다음으로는 Set 문을 사용해서 개체 변수에 유효한 참조를 지정합니다. 마찬가지로 With 문 도입 부분을 실행해서 With...End With 블록을 초기화합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	사용하려는 개체 변수가 유효한 개체를 참조하지 않았습니다.

개체 변수에 대한 참조를 지정합니다. 예를 들면 다음의 코드에서 Set 문이 제외되면 MyObject 참조 부분에서 오류가 발생하게 됩니다.

Dim MyObject As Object	' 개체 변수를 작성합니다.

Set MyObject = Sheets(1)	' 유효한 개체 참조를 작성합니다.

MyCount = MyObject.Count	' MyCount에 Count 값을 지정합니다.

•	사용되려는 개체 변수가 Nothing으로 설정되었습니다.

Set MyObject = Nothing	' 개체를 해제합니다.

MyCount = MyObject.Count	' 해제된 개체를 참조합니다.

개체 변수에 대한 참조를 다시 지정합니다. 예를 들면 개체에 새로운 참조 문을 설정할 경우에는 새로운 Set 문을 사용합니다.

•	개체는 유효하지만 해당 개체가 설명되어 있는 개체 라이브러리가 참조 대화 상자에서 선택되어 있지 않아서 설정할 수 없습니다.

참조 추가 대화 상자에서 개체 라이브러리를 선택합니다.

•	GoTo 문의 대상이 With 블록 안에 있습니다.

With 블록으로 점프하는 것은 좋지 않습니다. With 문 도입 부분의 실행으로 블록이 초기화되어야 합니다.

•	다음 문 설정 명령을 선택하면서 With 블록 내에 줄을 지정하였습니다.

With 블록은 With 문을 실행해서 초기화해야 합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


자동화 오류입니다(오류 번호 440)

자동화 개체에 액세스할 경우에 특수한 종류의 오류가 발생할 수 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	메서드를 실행하는 중이나 개체 변수의 속성을 읽거나 설정하는 중에 오류가 발생하였습니다. 오류는 개체를 작성하는 응용 프로그램에서 보고됩니다.

Err 개체의 속성을 확인해서 오류의 원인과 성질을 결정합니다. 문 액세스 직전에 On Error Resume Next 문을 사용하고 문 액세스 후에 바로 오류를 확인하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


개체가 이 속성 또는 메서드를 지원하지 않습니다(오류 번호 438)

모든 개체가 모든 속성과 메서드를 지원하는 것은 아닙니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	이 자동화 개체에 존재하지 않는 속성이나 메서드를 지정하였습니다.

해당 개체의 설명서에서 개체에 대한 자세한 정보를 얻고 속성과 메서드의 철자를 확인하십시오.

•	Friend 프로시저가 후기 바인딩으로 호출되도록 지정하였습니다.

Friend 프로시저의 이름은 컴파일 모드에서 알려져야 합니다. 후기 바인딩 호출에서는 나타날 수 없습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


메모리가 부족합니다(오류 번호 7)

사용 가능한 것보다 많은 양의 메모리가 요구되었거나 64K 세그먼트 경계에 걸린 경우입니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	응용 프로그램이나 문서, 원본 파일이 너무 많이 열려 있습니다.

열린 응용 프로그램이나 문서, 원본 파일 중 필요 없는 것을 닫습니다.

•	모듈이나 프로시저의 크기가 너무 큽니다.

지나치게 큰 모듈이나 프로시저를 작은 단위로 나눕니다. 이 방법으로 메모리 용량 자체가 부족한 문제를 해결할 수는 없지만 64K 세그먼트 경계에 걸리는 일은 막을 수 있습니다.

•	Microsoft Windows를 표준 모드에서 실행하고 있습니다.

Microsoft Windows를 확장 모드에서 다시 시작하십시오.

•	Microsoft Windows를 확장 모드에서 사용하고 있지만 가상 메모리를 모두 사용하였습니다.

디스크 공간을 늘려서 가상 메모리를 더 크게 해 주거나 최소한으로 사용할 수 있는 공간을 확보하십시오.

•	메모리 상주 프로그램을 실행 중입니다.

메모리 상주 프로그램을 제거하십시오.

•	장치 드라이버를 너무 많이 로드하였습니다.

불필요한 장치 드라이버를 제거하십시오.

•	Public 변수에 사용할 공간이 부족합니다.

Public 변수의 수를 줄입니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


스택 공간이 부족합니다(오류 번호 28)

스택은 실행 프로그램의 요구에 따라 동적으로 확대나 축소가 될 수 있는 메모리의 작업 영역입니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	활성화되어 있는 Function, Sub, Property 프로시저 호출이 너무 많습니다.

프로시저가 너무 깊이 중첩되어 있지 않은지 확인하십시오. 이런 일은 자기 자신을 호출하는 재귀 프로시저의 경우에 특히 일어나기 쉽습니다. 재귀 프로시저가 적절하게 종료되는지 확인하십시오. 호출 대화 상자를 사용해서 스택에서 활성된 프로시저를 살핍니다.

•	지역 변수가 요구하는 지역 변수 공간이 사용할 수 있는 것보다 큽니다.

몇 개의 변수를 모듈 수준에서 선언하십시오. Property나 Sub, Function 키워드의 앞에 Static을 붙여서 프로시저의 모든 변수를 정적으로 선언할 수도 있습니다. 프로시저에서 Static 문을 사용하여 Static 변수를 개별적으로 선언할 수도 있습니다.

•	고정 길이 문자열이 너무 많습니다.

고정 길이 문자열은 프로시저에서 비교적 빠르게 액세스할 수 있지만 문자열 데이터 자체가 스택에 위치하기 때문에 길이가 변하는 문자열보다 스택 공간을 더 많이 차지합니다. 고정 길이 문자열의 일부를 길이가 변하는 문자열로 다시 정의합니다. 프로시저 내에서 길이가 변하는 문자열을 선언할 경우 스택에 저장되는 것은 문자열 설명자 뿐(데이터 자체는 해당되지 않습니다)입니다. 문자열을 스택 공간을 요구하지 않는 모듈 차원에서 정의할 수도 있습니다. 모듈 차원에서 선언된 변수는 기본적으로 Public 변수가 되므로 문자열은 모듈 상의 모든 프로시저에서 볼 수 있게 됩니다.

•	DoEvents 함수 호출이 너무 많이 중첩되었습니다.

호출 대화 상자를 사용해서 스택에서 활성된 프로시저를 봅니다.

•	코드에서 이벤트를 계단식으로 전환하였습니다.

계단식 이벤트는 이미 스택에 있는 프로시저를 호출하는 이벤트의 전환으로 발생합니다. 계단식 이벤트는 종료되지 않은 재귀 프로시저와 비슷하지만 호출이 코드의 독점적인 호출이 아니라 Visual Basic에 의해 일어나기 때문에 그보다 명확하게 드러나지 않습니다. 호출 대화 상자를 사용해서 스택에서 활성된 프로시저를 봅니다.

호출 대화 상자를 표시하려면 디버그 창에서 프로시저 상자 오른쪽에 있는 호출 단추를 선택하거나 호출 명령을 선택합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


문자열 공간이 부족합니다(오류 번호 14)

Visual Basic에서는 아주 긴 문자열을 사용할 수 있습니다. 하지만 다른 프로그램에서의 요청과 문자열을 조작하는 방법 때문에 이 오류가 발생하기도 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	계산 과정에서 임시 문자열을 만드는 식을 사용하면 이 오류가 발생할 수 있습니다. 예를 들면 어떤 운영 체제에서는 다음의 코드가 문자열 공간 부족 오류를 일으키기도 합니다.

MyString = "Hello"

For Count = 1 To 100

MyString = MyString & MyString

Next Count

문자열을 다른 이름의 변수로 지정하십시오.

•	시스템의 메모리가 부족해서 문자열을 지정할 수 없습니다.

메모리에서 불필요한 응용 프로그램을 제거해서 공간을 확보하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


숫자가 너무 큽니다(오류 번호 6)

지정 대상의 한계를 넘어가도록 지정하려고 하는 경우에 이 오류가 발생합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	지정이나 계산, 데이터 형식 변환의 결과가 그 형식의 변수에 허용된 범위 내에서 나타낼 수 없을 정도로 큽니다.

좀 더 큰 범위의 값을 허용하는 종류의 변수로 값을 지정하십시오.

•	속성 지정 값이 속성에서 받아들일 수 있는 범위를 벗어났습니다.

지정된 값이 속성의 범위에 맞는지를 확인하십시오.

•	계산에서 이 숫자를 사용하려고 시도하여 숫자가 강제로 정수가 되었지만 결과가 정수보다 큽니다. 예는 다음과 같습니다.

    Dim x As Long

    x = 2000 * 365   ' 오류: 숫자가 너무 큽니다.

이 상황을 해결하려면 아래와 같이 숫자를 입력하십시오.

    Dim x As Long

    x = CLng(2000) * 365

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


경로를 찾을 수 없습니다(오류 번호 76)

파일의 경로에는 지정 드라이브와 파일 위치까지의 디렉터리, 하위 디렉터리가 포함됩니다. 경로는 상대적으로도 그리고 절대적으로도 지정할 수 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Open, MkDir, ChDir, RmDir 등 파일이나 디스크 액세스 중 운영 체제가 지정된 경로를 찾을 수 없습니다.

경로를 다시 지정하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


경로/파일 액세스 오류입니다(오류 번호 75)

Open, MkDir, ChDir, RmDir 등 파일이나 디스크 액세스 작업 중 운영 체제에서 경로나 파일 연결에 실패하는 경우가 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	파일 지정 형식이 정확하지 않습니다.

파일 이름에는 완전한 형식의(절대적인) 경로나 상대적인 경로를 포함시킬 수 있습니다. 완전한 형식의 경로는 드라이브 이름으로부터 시작해서(경로가 다른 드라이브에 있을 경우) 루트로부터 파일까지의 정확한 경로를 나열합니다. 완전한 형식의 경로가 아닌 것은 모두 현재 드라이브와 디렉터리에 대해 상대적으로 표시한 것입니다.

•	파일을 저장하면 읽기 전용 파일을 덮어씁니다.

대상 파일의 읽기 전용 속성을 변경하거나 다른 이름으로 저장하십시오.

•	순차 Output이나 Append 모드에서 읽기 전용 파일을 열려고 합니다.

•	파일을 Input 모드에서 열거나 파일의 읽기 전용 속성을 변경하십시오.

•	데이터베이스 또는 문서 내에서 Visual Basic 프로젝트를 변경하려 하였습니다.

프로젝트의 디자인을 변경할 수 없습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


사용 권한이 없습니다(오류 번호 70)

쓰기 보호 장치가 있는 디스크에 쓰기를 시도하거나 잠금 상태인 파일에 액세스하려는 경우입니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	순차 Output이나 Append에서 쓰기 보호된 파일을 열려고 합니다.

Input 모드에서 파일을 열거나 파일의 읽기 전용 속성을 변경하십시오.

•	순차 Output이나 Append에서 쓰기 보호된 디스크 내부의 파일을 열려고 합니다.

디스크에서 쓰기 보호 장치를 제거하거나 파일을 Input 모드에서 여십시오.

•	다른 작업에서 잠금 상태로 둔 파일에 내용을 쓰려고 합니다.

다른 작업에서 잠금 상태를 해제할 때까지 기다렸다가 파일을 여십시오.

•	레지스트리에 액세스하려고 했지만 해당 레지스트리가 사용자 권한으로는 액세스가 허용되지 않습니다.

32비트 Microsoft Windows 시스템에서는 사용자가 시스템 레지스트리에 액세스할 수 있는 적절한 권한을 제시해야 합니다. 사용 권한을 변경하거나 시스템 운영자에게 변경을 요청하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


프린터 오류입니다(오류 번호 482)

이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	프린터에서 오류가 발생하였지만 파일을 보낸 컴퓨터에 다른 정보가 반환되지 않습니다.

프린터의 물리적인 상태를 검사하십시오. 컴퓨터와 프린터 사이에 연결이 잘 되어 있는지를 확인합니다. 대부분의 프린터에는 "용지 부족"이나 "오프라인" 등 오류에 관한 정보를 알릴 수 있는 장치가 마련되어 있습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Property Get은 실행 모드에서 실행할 수 없습니다(오류 번호 393)

모든 속성이 실행 모드에서 정보를 반환하는 것은 아닙니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	액세스하려는 속성이 실행 모드에서 읽기 전용입니다.

실행을 중단하고 디자인 모드에서 해당 속성을 보십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Property Get은 쓰기 전용 속성에 실행할 수 없습니다(오류 번호 394)

모든 속성이 값을 반환하는 것은 아닙니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	액세스하려는 속성이 정보를 반환하지 않습니다.

속성의 상태를 결정할 수는 없습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


속성이나 메서드를 찾을 수 없습니다(오류 번호 423)

개체 이름의 철자는 개체 라이브러리의 정의와 정확하게 일치해야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	object.method나 object.property를 참조했지만 method 또는 property가 정의되지 않았습니다.

object에 해당하는 이름의 철자가 잘못되었을 수 있습니다. object에 대해 속성과 메서드의 정의를 확인하려면 개체 찾아보기를 표시하십시오. 적절한 개체 라이브러리를 선택해서 사용 가능한 속성과 메서드의 목록을 봅니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


속성을 찾을 수 없습니다(오류 번호 422)

모든 개체가 같은 종류의 속성을 지원하는 것은 아닙니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	해당 개체가 지정된 속성을 지원하지 않습니다.

속성 이름의 철자를 확인하십시오. 또는 개체가 지원하는 속성이 "Caption" 속성인데 "텍스트" 속성 등 유사한 속성에 액세스하려고 하는 경우일 수도 있습니다. 개체 설명서를 참조하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Property Set은 실행 모드에서 작동할 수 없습니다(오류 번호 382)

실행 모드에서 속성을 참조할 수 없는 경우도 있습니다.이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	실행 모드에서 읽기 전용이거나 쓰기 전용인 속성에 대한 참조를 로드하려고 합니다.

참조는 쓰기나 읽기에 모두 사용할 수 있으므로 실행 모드에서 참조가 허용되려면 실행 모드에서 읽기와 쓰기를 모두 지원하는 속성이어야 합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Property Set은 읽기 전용 속성으로 사용될 수 없습니다(오류 번호 383)

실행 모드에서 속성을 참조할 수 없는 경우도 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	실행 모드에서 읽기 전용인 속성에 대한 참조를 로드하려 합니다.

참조는 쓰기나 읽기에 모두 사용할 수 있으므로 실행 모드에서 참조가 허용되려면 실행 모드에서 읽기와 쓰기를 모두 지원하는 속성이어야 합니다. 이 속성에서 사용할 수 있는 것은 Property Get 뿐입니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Property Set이 허가되지 않았습니다(오류 번호 387)

모든 속성이 참조 반환을 지원하는 것은 아닙니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	참조를 반환하지 않는 속성에 대한 참조를 가져오려고 합니다.

이 속성에 대한 액세스는 Property Let과 Property Get으로 제한하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


바꿀 문자열이 너무 깁니다(오류 번호 746)

바꾸기에 사용되는 문자열은 지정된 최대 길이를 넘어서는 안 됩니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	허용된 길이를 초과하는 바꿀 문자열을 지정합니다.

구성 요소 설명서에서 최대 길이에 대한 제한을 확인하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


오류가 없는 Resume입니다(오류 번호 20)

Resume 문은 오류 처리기에서만 나타나며 활성된 오류 처리기에서만 실행될 수 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Resume 문을 오류 처리기 외부에 두었습니다.

문을 오류 처리기 안으로 옮기거나 삭제하십시오.

•	오류가 발생하지 않았는데 코드가 오류 처리기 안으로 점프합니다.

줄 레이블의 철자가 잘못되었을 수 있습니다. 줄 레이블에 대한 점프는 프로시저를 가로질러 수행될 수 없으므로 오류 처리기를 나타내는 레이블에 대한 프로시저를 찾아보십시오. On Error GoTo 문이 아닌 GoTo 문의 대상으로 중복된 이름이 지정되어 있으면 의도한 대상에 맞도록 줄 레이블을 변경합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Return에 GoSub가 필요합니다(오류 번호 3)

Return 문에는 그에 대응되는 GoSub 문이 있어야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	GoSub 문과 짝이 되지 않는 Return 문을 사용합니다.

GoSub 문이 잘못 삭제되지 않았는지를 확인하십시오.

컴파일 모드에서 짝을 맞추는 For...Next나 While...Wend, Sub...End Sub 명령과 달리 GoSub와 Return은 실행 모드에서 짝을 맞춥니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


지정한 DLL 함수를 찾을 수 없습니다(오류 번호 453)

사용자 라이브러리 참조에서 동적 연결 라이브러리(DLL)가 발견되었지만 지정된 DLL 함수를 해당 DLL 파일에서 찾을 수 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	함수 선언에서 잘못된 서수를 사용합니다.

서수가 정확한지 확인하거나 함수를 이름으로 호출하십시오.

•	적절한 DLL 이름을 제공했지만 지정된 함수를 포함하는 버전이 아닙니다.

시스템에 올바른 버전이 있더라도 잘못된 버전이 들어있는 디렉터리가 올바른 버전의 디렉터리보다 상위에 있으면 잘못된 DLL 파일이 액세스됩니다. 시스템에 다른 버전이 있는지 확인하십시오. 이전 버전의 파일만 있는 경우에는 공급업체에서 최근 버전을 구입하십시오.

•	32비트 Microsoft Windows 플랫폼에서 작업하는 경우에는 DLL 이름과 별칭(사용된 경우)이 모두 정확해야 합니다.

DLL 이름과 별칭이 정확한지를 확인합니다.

•	32비트 DLL 중 일부는 Unicode와 ANSI 문자열을 모두 수용하는 조금 다른 버전의 함수를 포함합니다. 함수의 이름 끝에 "A"가 있는 것은 ANSI 버전을 나타냅니다. 함수의 이름 끝에 A "W"가 있는 것은 Unicode 버전을 나타냅니다.

함수에서 문자열 형의 인수를 취하는 경우에는 함수 이름 끝에 "A"를 붙여줍니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


식이 너무 복잡합니다(오류 번호 16)

부동 소수점 식에서 허용되는 하위 식의 수는 형식에 따라 달라집니다. 예를 들면 32비트 Microsoft Windows 운영 체제의 경우 한계는 8단계까지 중첩된 부동 소수점 식입니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	부동 소수점 식에 포함된 하위 식이 너무 많습니다.

오류 발생을 방지할 수 있게 식을 짧게 끊어줍니다.

메모   이전 버전의 Visual Basic에서는 "문자열 식이 너무 복잡합니다"에 해당하는 오류 번호가 16번이었습니다. 그 오류 조건은 더 이상 발생하지 않습니다. 하지만 이전의 오류를 잡아서 처리하는 코드가 있는 경우 해당 코드를 삭제해서 이 새로운 오류와의 혼선을 막아주십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


찾는 텍스트가 없습니다(오류 번호 744)

이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	지정한 텍스트를 찾을 수 없습니다.

텍스트가 존재하지 않습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


Sub, Function 또는 Property가 정의되지 않았습니다(오류 번호 35)

Sub, Function 또는 Property 프로시저가 호출되지 않습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	프로시저의 이름 철자가 잘못되었습니다.

철자를 확인하여 수정하십시오.

•	참조 대화 상자에서 프로젝트에 대한 참조를 정확하게 추가하지 않고 다른 프로젝트에서 프로시저를 호출하려고 합니다.

참조를 추가하려면

1. 참조 대화 상자를 표시합니다.

2. 호출할 프로시저를 포함하는 프로젝트의 이름을 찾습니다. 프로젝트 이름이 참조 대화 상자에 없으면 찾아보기 단추를 눌러서 찾아갑니다.

3. 프로젝트 이름의 왼쪽에 있는 확인란을 누릅니다.

4. 확인을 누릅니다.

•	지정된 프로시저가 호출 프로시저에서 보이지 않습니다.

한 모듈에서 Private로 선언된 프로시저는 그 모듈 밖의 프로시저에서 호출할 수 없습니다. Option Private Module이 영향력을 발휘하고 있으면 모듈 내의 프로시저는 다른 프로젝트에서 사용할 수 없습니다. 검색을 수행하여 프로시저를 찾습니다.

•	Windows 동적 연결 라이브러리(DLL) 루틴을 또는 매킨토시 코드 리소스 루틴을 선언했지만 지정된 라이브러리나 코드 리소스에 루틴이 없습니다.

•	루틴의 이름이나 서수(사용된 경우에만)를 확인합니다. DLL 파일 또는 매킨토시 코드 리소스의 버전이 올바른 것인지 확인하십시오. 해당 루틴이 최근 버전의 DLL 파일에만 있는 것일 수도 있습니다. 잘못된 버전의 파일이 위치한 디렉터리가 정확한 버전의 파일이 위치한 디렉터리보다 경로에서 먼저 발견되는 경우에는 잘못된 버전의 DLL 파일에 또는 매킨토시 코드 리소스에 액세스하게 됩니다. DLL 파일의 또는 매킨토시 코드 리소스의 이름을 올바르게 제공하였지만 지정한 함수가 포함된 버전이 아닙니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


아래 첨자 사용이 잘못되었습니다(오류 번호 9)

배열의 구성원과 컬렉션의 구성원은 정의된 범위 안에서만 액세스할 수 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	존재하지 않는 배열 구성원을 참조합니다.

아래 첨자가 사용할 수 있는 아래 첨자의 범위보다 크거나 작은 경우 또는 응용 프로그램의 이 부분에서 지정한 차원이 배열에 없는 경우가 있을 수 있습니다. 배열의 선언을 확인해서 상한과 하한을 점검하십시오. 차원이 새로 지정된 배열로 작업하는 경우에는 UBound나 LBound 함수를 사용해서 배열의 액세스를 제어합니다. 인덱스가 변수로 지정된 경우에는 변수 이름의 철자를 확인합니다.

•	배열을 선언했지만 구성원의 수를 지정하지 않았습니다. 예를 들면 다음과 같은 코드는 이러한 오류를 발생시킵니다.

Dim MyArray() As Integer

MyArray(8) = 234	' 9번 오류가 발생하였습니다.

Visual Basic에서는 지정되지 않은 배열의 범위를 내부적으로 0-10으로 정해 주지 않습니다. 배열의 구성원 수를 Dim이나 ReDim을 사용해서 정확하게 지정해야 합니다.

•	존재하지 않는 컬렉션의 구성원을 참조합니다.

인덱스 구성원을 지정하는 대신에 For Each...Next 구조를 사용해 보십시오.

•	아래 첨자의 단축형을 사용해서 내부적으로 잘못된 구성원을 지정하였습니다.

예를 들면 "!" 연산자를 컬렉션에 사용하는 경우 "!" 연산자는 내부적으로 키를 지정하게 됩니다. 그에 해당하는 예로는 object!keyname.value가 object.item(keyname).value과 같게 되는 경우가 있습니다. 이 경우 keyname이 컬렉션에서 잘못된 키를 나타내면 오류가 발생합니다. 이 오류를 수정하려면 컬렉션에 유효한 키 이름이나 인덱스를 사용하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


이 구성 요소는 이 이벤트 집합을 지원하지 않습니다(오류 번호 459)

모든 요소가 클라이언트에서 이벤트 받기를 지원하는 것은 아닙니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	지정한 이벤트 집합의 이벤트 원본으로 작동할 수 없는 구성 요소와 함께 WithEvents 변수를 사용하려고 하였습니다. 예를 들어 개체를 받고 첫째 개체를 구현하는 다른 변수를 작성할 수 있는 경우를 생각해 봅시다. 구현된 개체의 이벤트를 받을 수 있다고 사용자가 생각할 수도 있지만 전혀 그렇지 않습니다. Implements는 메서드와 속성에 대한 인터페이스만 구현합니다.

이벤트 원본으로 작동할 수 없는 구성 요소에 대한 이벤트를 받을 수 없습니다.

•	실행 모드에서는 ObjectEvent를 발생시키는데 필요한 형식 정보를 사용할 수 없기 때문에WithEvents는 Private UserControls에 대해서는 지원되지 않습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


DLL 응용 프로그램 클라이언트가 너무 많습니다(오류 번호 47)

Visual Basic의 동적 연결 라이브러리(DLL)는 동시에 50개 정도까지의 호스트 응용 프로그램 액세스만을 수용할 수 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	해당 응용 프로그램과 Visual Basic을 호스트로 하는(그 중 일부는 해당 응용 프로그램에서 액세스한 것일 수도 있음) 다른 응용 프로그램이 모두 동시에 Visual Basic DLL에 액세스하려고 합니다.

Visual Basic에 액세스하는 열린 응용 프로그램의 수를 줄입니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


파일이 너무 많습니다(오류 번호 67)

동시에 열릴 수 있는 디스크 파일의 수에는 한계가 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	MS-DOS 운영 체제: 운영 체제에서 허용하는 것보다 많은 수의 파일이 루트 디렉터리에 작성되었습니다.

MS-DOS 운영 체제에서는 루트 디렉터리에 작성할 수 있는 파일의 수를 보통 512개로 제한합니다. 응용 프로그램이 루트 디렉터리에서 파일을 열고, 닫고, 저장하는 경우 그러한 조작을 하위 디렉터리에서 하도록 프로그램을 변경하십시오.

•	MS-DOS 운영 체제: CONFIG.SYS 파일의 files= 설정에서 지정한 것보다 많은 수의 파일이 열려 있습니다.

CONFIG.SYS 파일의 files= 설정에서 지정된 수를 늘리고 컴퓨터를 재시동하십시오.

•	매킨토시: 프로그램에서 파일을 40개가 넘도록 열려고 합니다.

매킨토시에서는 표준 제한 파일 수가 40개입니다. 이 한계는 시동 블록의 MaxFiles 매개 변수를 수정하는 유틸리티를 사용해서 변경할 수 있습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


형식이 일치하지 않습니다(오류 번호 13)

Visual Basic은 값들을 변환하고 강제로 지정해서 이전의 버전에서는 할 수 없었던 데이터 형식 지정 작업을 할 수 있습니다. 하지만 아직 이 오류가 발생할 수 있고, 발생 원인과 해결 방법은 다음과 같습니다.

•	변수나 속성이 적절한 형식이 아닙니다. 예를 들면 정수 값을 요구하는 변수는 문자열 전체가 정수로서 인식되지 않으면 문자열 값을 수용할 수 없습니다.

서로 호환성이 있는 데이터 형식 사이에서만 값을 지정합니다. 예를 들면 Integer는 언제든지 Long으로 지정할 수 있고 Single은 언제나 Double로 지정할 수 있으며 어떤 형식이라도(사용자 정의 형식 제외) Variant로 지정할 수 있습니다.

•	개체가 단일한 속성이나 값을 요구하는 프로시저에 전달되었습니다.

적절한 단일 속성을 전달하거나 개체에 맞는 메서드를 호출하십시오.

•	다음과 같이 식이 있어야 할 곳에 모듈이나 프로젝트 이름이 사용되었습니다.

Debug.Print MyModule

표시할 수 있는 식을 지정하십시오.

•	다음과 같이 전통적인 Basic 오류 처리 방법을 Error 하위 형식(10, vbError)인 Variant 값에 혼합하려 합니다.

Error CVErr(n)

오류를 재현하려면 고유한 Visual Basic이나 사용자 정의 오류에 매핑한 후에 오류를 발생시킵니다.

•	CVErr 값을 Date로 변환할 수 없습니다. 예를 들면 다음과 같습니다.

MyVar = CDate(CVErr(9))

CVErr의 반환값을 그러한 값으로 매핑하려면 Select Case 문이나 그와 유사한 구조를 사용합니다.

•	실행 모드에서 이 오류가 나타나는 것은 식에 사용된 Variant가 잘못된 하위 형식에 해당하거나 배열을 포함하는 Variant가 Print # 문에 나타났습니다.

배열을 인쇄하려면 각 구성원을 개별적으로 나타내는 루프를 작성합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


사용자 인터럽트가 발생하였습니다(오류 번호 18)

실행을 중단하는 프로세스는 유용하게 사용할 수 있지만 처리하지 않고 남겨두는 경우에는 응용 프로그램을 종료시킬 수도 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Ctrl+Break나 기타 인터럽트 키를 눌렀습니다.

개발 환경에서 실행을 계속합니다. 실행 모드에서 이 조건이 발생하는 것에 대비하려면 오류를 적절하게 처리해야 합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


변수가 Visual Basic에서 지원하지 않는 형식을 사용하고 있습니다(오류 번호 458)

형식 라이브러리나 개체 라이브러리에 나타나는 모든 변수를 모든 프로그래밍 언어에 사용할 수 있는 것은 아닙니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Visual Basic에서 지원하지 않는 데이터 형식을 가지고 있는 형식 라이브러리나 개체 라이브러리에 정의된 변수를 사용하려고 합니다.

Visual Basic 프로그램에는 Visual Basic에서 인식되지 않는 형식의 변수를 사용할 수 없습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


인수의 수나 속성 지정이 잘못되었습니다(오류 번호 450)

프로시저애 대한 인수의 수는 프로시저의 정의에 나타난 매개 변수의 수와 일치해야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	프로시저에 대한 호출에 사용된 인수의 수가 프로시저에서 요구하는 인수의 수와 일치하지 않습니다.

호출에 있는 인수의 목록과 프로시저 선언이나 정의 부분을 비교하여 확인하십시오.

•	컨트롤 배열의 일부가 아닌 컨트롤에 인덱스를 지정합니다.

인덱스 지정이 인수로 해석되었으나 인덱스나 인수 중 어느 것도 필요하지 않은 경우에는 오류가 발생합니다. 인덱스 지정 부분을 삭제하거나 다음 단계를 따라서 컨트롤 배열을 작성합니다. 디자인 모드에서 컨트롤의 속성 시트나 속성 창에서 Index 속성을 0이 아닌 값으로 설정합니다.

•	읽기 전용 속성에 값을 지정하려고 했거나 Property Let 프로시저가 없는 속성에 값을 지정하려 합니다.

속성에 값을 지정하는 것은 값을 개체의 Property Let 프로시저에 인수로 전달하는 것과 같습니다. Property Let 프로시저를 적절하게 정의하십시오. 여기에는 그에 해당하는 Property Get 프로시저의 경우보다 인수가 하나 더 필요합니다. 속성이 읽기 전용인 경우에는 값을 지정할 수 없습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


ActiveX 구성 요소는 개체를 만들거나 이 개체에 참조 값을 반환할 수 없습니다(오류 번호 429)

개체를 작성하려면 개체의 클래스가 시스템 레지스트리에 등록되어야 하고 연관된 동적 연결 라이브러리(DLL)가 사용 가능한 상태라야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	클래스가 등록되지 않았습니다. 예를 들면 시스템 레지스트리에 클래스에 대한 언급이 없거나 클래스는 언급되어 있는데 잘못된 형식의 파일이나 파일을 지정한 경우입니다.

가능하면 개체의 응용 프로그램을 시작하십시오. 레지스트리 정보가 기한이 지났거나 잘못된 경우에는 응용 프로그램에서 레지스트리를 확인하여 정보를 수정해야 합니다. 응용 프로그램을 시작해도 문제를 해결할 수 없는 경우 응용 프로그램의 설정 프로그램을 다시 실행하십시오.

•	개체에서 요구하는 DLL 파일을 찾을 수 없거나 찾을 수 있더라도 손상되어 사용할 수 없습니다.

연관된 DLL 파일이 모두 사용 가능한지를 확인하십시오. 예를 들면 데이터 액세스 개체(DAO)는 형식에 따라 요구하는 지원 DLL 파일이 달라집니다. 그런 개체가 오류의 원인인 경우에는 설정 프로그램을 다시 실행해야 할 수도 있습니다.

•	개체가 컴퓨터에 있지만 사용이 허가된 자동화 개체이고 인스턴스화에 필요한 라이센스의 사용 가능성을 검증할 수 없습니다.

일부 개체는 구성 요소에서 컴퓨터에서 사용할 수 있도록 등록하였음을 검증하는 라이센스 키를 찾은 후에만 실행이 가능합니다. 적절하게 설치된 형식 라이브러리나 개체 라이브러리를 통해 참조가 이루어지면 자동으로 올바른 키가 제공됩니다.

실행하려는 시도가 CreateObject나 GetObject 호출의 결과로 일어난 것이면 개체에서 키를 찾아야 합니다. 이런 경우 개체에서는 시스템 레지스트리를 찾거나 확장명이 .lic인 파일 등과 같이 설치할 때 특수 파일을 살펴 봅니다. 키를 찾을 수 없는 경우 개체를 실행할 수 없습니다. 최종 사용자가 그 개체의 응용 프로그램을 잘못 설정해서 부주의로 필요한 파일을 삭제하거나, 시스템 레지스트리를 변경한 경우 개체가 키를 찾을 수 없게 됩니다. 키를 찾을 수 없으면 개체는 실행되지 않습니다. 이런 경우 개발자 시스템에서는 개체를 실행할 수 있지만 사용자 시스템에서는 실행할 수 없게 됩니다. 사용 허가를 받은 개체를 다시 설치해야 할 수도 있습니다.

•	GetObject 함수를 사용해서 Visual Basic으로 만들어진 클래스로 참조를 읽어 들이려 합니다.

GetObject는 Visual Basic으로 만들어진 클래스로 참조를 얻는데 사용할 수 없습니다.

•	개체로의 액세스가 확실히 거부되었습니다.

예를 들면 현재 사용 중이고 교착 상황을 방지하기 위해 잠금 상태에 있는 데이터 개체에 액세스를 시도하는 경우가 있습니다. 그런 경우에는 다른 때에 개체에 액세스할 수 있습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


속성값이 잘못되었습니다(오류 번호 380)

대부분의 속성은 일정 범위 안에 있는 특정한 형식의 값만 허용합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	부적합한 값이 속성에 지정되었습니다.

속성의 도움말 항목을 참조하여 속성에 대해 적당한 값의 형식과 범위를 결정하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


그림이 잘못되었습니다(오류 번호 481)

Picture 속성이나 Picture 개체에는 그림만 지정할 수 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	아이콘이나 비트맵, Microsoft Windows 메타 파일로 인식되지 않는 Picture 속성이나 Picture 개체에 어떤 것을 지정하려 합니다.

도움말 항목의 Picture 개체나 Picture 속성 부분을 참고해서 사용하는 개체에 적절한 그림 형식을 결정하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


리소스 파일에 잘못된 형식이 있습니다(오류 번호 325)

리소스 파일에 액세스할 때에는 검색할 리소스가 사용 가능한 형식이어야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	검색하려는 리소스 파일이 잘못된 형식이거나 파일 내에 있는 특정 리소스가 잘못된 형식입니다.

파일 내용이 손상된 경우 원본 디스크에서 파일을 다시 설치하십시오. 그래도 계속 오류가 발생하면 리소스 제공업체에 연락해서 새 파일이나 필요한 형식의 최근 버전 파일을 구입하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


이 키는 컬렉션의 요소와 이미 연결되어 있습니다(오류 번호 457)

키는 Add 메서드에 지정된 문자열로 컬렉션의 특정 구성원을 고유하게 지시합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	컬렉션의 구성원이 이미 컬렉션의 다른 구성원을 지시하고 있는 키를 지정하였습니다.

이 구성원에 대한 다른 키를 선택하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


이 배열은 고정되었거나 일시적으로 잠금 상태입니다(오류 번호 10)

모든 배열이 차원을 조정할 수 있는 것은 아닙니다. 특별하게 동적으로 선언된 배열이나 Variant 변수의 배열조차도 일시적으로 잠금 상태에 있을 수 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	ReDim을 사용해서 고정 길이 배열의 구성원 수를 변경하려 합니다. 예를 들면 다음의 코드에서는 고정 배열 FixedArr를 NextOne 프로시저의 SomeArr에서 받은 후 SomeArr의 크기를 조정하려고 합니다.

Sub FirstOne

Dim FixedArr(25) As Integer	' 고정 길이 배열을 작성하여

NextOne FixedArr()	' 다른 프로시저에 전달합니다.

End Sub

Sub NextOne(SomeArr() As Integer)

ReDim SomeArr(35)	' 여기에서 10번 오류가 발생하였습니다.

. . .

End Sub

배열이 프로시저 내에서 선언된 경우 ReDim으로 선언하거나 배열이 모듈 수준에서 선언된 경우 구성원의 수를 지정하지 않고 선언하여, 원래 배열을 고정 배열이 아닌 동적 배열로 만듭니다.

•	구성원 하나가 프로시저에 인수로 넘어간 모듈 수준의 동적 배열 차원을 다시 조정하려고 합니다. 예를 들면 다음의 코드에서, ModArray가 모듈 수준의 동적 배열이며 45번째 구성원이 참조에 의해 Test 프로시저에 전달됩니다.

Dim ModArray () As Integer	' 모듈 수준 동적 배열을 작성합니다.

. . .

Sub AliasError()

ReDim ModArray (1 To 73) As Integer

Test ModArray (45)	' 모듈 차원 배열의 구성원 하나를

' Test 프로시저에 전달합니다.

End Sub

Sub Test(SomeInt As Integer)

ReDim ModArray (1 To 40) As Integer  ' 여기에서 오류가 발생합니다.

End Sub

이 경우에는 모듈의 모든 프로시저에서 배열 구성원을 볼 수 있기 때문에 모듈 수준의 배열 구성원을 전달할 필요가 없습니다. 하지만 구성원이 전달되면 참조 매개 변수에 해당되는 메모리의 지정 해제를 막기 위해 배열이 잠금 상태에 들어가고 프로시저가 돌아왔을 때에 예측할 수 없는 동작을 하게 됩니다.

•	배열을 포함하는 Variant 변수에 값을 지정하려고 했지만 Variant가 현재 잠금 상태입니다. 예를 들면 코드에서 For Each...Next 루프를 사용해서 배열을 포함하는 variant 부분을 반복하도록 하면 배열은 루프에 들어감과 동시에 잠금 상태가 되고 루프에서 풀림과 동시에 잠금 상태가 해제됩니다.

SomeArray = Array(9,8,7,6,5,4,3,2,1)

For Each X In SomeArray

SomeArray = 301	' 배열 잠금으로 오류가 발생합니다.

Next X

반복 실행에 For Each...Next 대신 For...Next를 사용합니다. 배열이 For Each...Next 루프의 개체가 되면 배열을 읽을 수는 있지만 쓸 수는 없습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


자동화 작업 중 파일 이름이나 클래스 이름을 찾을 수 없습니다(오류 번호 432)

GetObject 함수에 필요한 것은 경로가 지정되어 있는 유효한 파일 이름이나 시스템에 등록된 클래스의 이름입니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	호출에서 파일 이름이나 클래스에 대해 GetObject 함수에 지정한 이름을 찾을 수 없습니다.

이름을 확인한 후 다시 시도합니다. class 매개 변수에 사용된 이름이 시스템에 등록된 것과 일치하는지를 확인합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


자동화 개체가 기본값을 갖고 있지 않습니다(오류 번호 443)

속성이나 메서드 없이 개체 이름을 지정하면 Visual Basic에서는 개체의 기본 구성원(속성이나 메서드)을 참조한다고 가정합니다. 하지만 모든 개체가 기본 구성원에 노출되지는 않습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Visual Basic에서 지정된 개체에 대한 기본 구성원을 결정할 수 없습니다.

개체 설명서를 확인해서 속성이나 메서드에 대해 정확한 지정 사항을 결정하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


원격 서버 시스템이 없거나 사용할 수 없습니다(오류 462)

CreateObject 함수는 유효한 서버를 필요로 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	서버 매개 변수는 지정되어 있지만 서버에 도달할 수 없거나 찾을 수 없습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


로컬 시스템에 등록되지 않은 클래스입니다(오류 463)

CreateObject 함수는 유효한 서버를 필요로 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	서버 매개 변수는 지정되어 있지만 지정된 클래스 progid(CreateObject 함수의 첫째 매개 변수)를 로컬 시스템에 등록하지 않았습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


메서드나 데이터 구성원을 찾을 수 없습니다(오류 461)

컬렉션, 개체 또는 사용자 정의 형식에 참조된 구성원이 들어 있지 않습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	개체나 구성원 이름의 철자가 틀렸습니다.

이름의 철자가 올바른지 확인하고 Type 문을 확인하거나 개체에 대한 온라인 설명서를 확인하여 구성원 이름과 개체나 구성원의 이름의 철자가 맞는지 확인하십시오.

•	범위를 벗어나는 컬렉션 인수를 지정하였습니다.

Count 속성을 확인하여 컬렉션 구성원이 있는지를 결정합니다. 컬렉션 인덱스는 0이 아니라 1부터 시작합니다. 따라서 Count 속성은 범위에서 가장 높은 수의 인덱스 번호를 반환합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


<Item>은(는) 유효한 컨트롤 형식이 아닙니다(오류 720)

유효한 ActiveX 구성 요소만 폼에 컨트롤로 지정할 수 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	유효한 컨트롤 구성 요소로 인식할 수 없는 ActiveX 구성 요소를 폼에 컨트롤로 지정하려 하였습니다.

ActiveX 컨트롤 구성에 대한 도움말 항목을 참조하여 적합한 컨트롤을 확인하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


예기치 않은 오류가 발생하여 종료합니다

예기치 않은 오류가 발생하여 Visual Basic에서 작업을 계속 수행할 수 없습니다. 이 오류는 하드웨어 문제이거나 시스템에 있는 다른 소프트웨어 문제일 수 있습니다.


1부터 32까지의 모든 숫자를 사용할 수 있습니다

허용된 범위를 벗어난 값으로 TabStop 너비를 설정하려 하였습니다. 이 필드에는 1과 32(포함) 사이의 숫자를 사용할 수 있습니다.


2부터 60까지의 모든 숫자를 사용할 수 있습니다

허용된 범위를 벗어난 값으로 모눈 너비나 모눈 높이를 설정하려 하였습니다. 이 필드에는 2와 60(포함) 사이의 숫자를 사용할 수 있습니다.


지정된 항목이 바이너리 폼이므로 Visual Basic에 로드할 수 없습니다

이전 버전의 Visual Basic으로 만든 바이너리 폼은 이 버전의 Visual Basic으로 로드할 수 없습니다. Visual Basic 버전 2.0과 3.0에서만 바이너리 폼을 ASCII로 변환할 수 있습니다. Visual Basic 2.0 또는 3.0이 있으면 버전 1.0으로 만든 폼을 로드한 다음 텍스트로 저장할 수 있습니다. 그 다음 Visual Basic에서 폼을 가져올 수 있습니다.


읽기 전용 프로젝트 파일입니다

이 프로젝트 파일에는 쓰기 작업을 할 수 없습니다. 쓰기 작업이 가능하도록 바꾸려면 다른 이름으로 저장하거나 읽기 전용 속성을 제거해야 합니다.


읽기 전용 파일입니다

쓰기 작업이 가능한 파일이 아닙니다. 쓰기 작업이 가능하도록 바꾸려면 다른 이름으로 저장하거나 읽기 전용 속성을 제거해야 합니다.


이 이름의 프로시저가 이미 존재합니다

같은 범위 내에 있는 프로시저 이름은 고유해야 합니다. 프로시저의 이름을 바꾸십시오.


지정된 프로젝트 파일에 잘못된 키 값이 포함되어 있습니다. 0부터 '항목3'까지 사용할 수 있습니다

키 값의 범위가 제한되었습니다. 키 값을 지정된 범위 내에서 사용하십시오.


프로젝트 이름이 너무 길어 잘립니다

프로젝트 이름이 허용된 범위를 초과한 경우, 최대 길이를 벗어난 부분은 잘립니다.


지정된 프로젝트 파일이 잘못된 키를 가지고 있으므로 프로젝트를 로드할 수 없습니다

프로젝트 파일에 잘못된 키가 들어 있을 때는 프로젝트를 로드할 수 없습니다.


지정된 항목은 잘못된 키입니다. 지정된 파일을 로드할 수 없습니다

파일에 잘못된 키가 들어 있을 때는 파일을 로드할 수 없습니다.


지정된 프로젝트 파일에는 잘못된 키 값이 포함되어 있습니다

지정된 키 값이 유효하지 않으므로 변경하십시오.


메모리가 부족하여 실행할 수 없으므로 종료합니다

메모리가 부족하여 Visual Basic을 실행할 수 없습니다. 다른 응용 프로그램을 닫고 다시 시도하십시오.


운영 체제의 버전이 맞지 않습니다. 지정된 Windows NT 3.51 빌드나 Windows 95가 필요합니다

이 버전의 Visual Basic을 실행하려면 지정된 빌드 번호의 Windows 95 또는 Windows NT 3.51을 실행해야 합니다.


지정된 시스템 오류가 발생하였습니다

시스템 또는 외부 구성 요소에 의해 생성된 오류가 Visual Basic에서 발생하였습니다.


지정된 파일은 현재 버전의 Visual Basic 에서 지원하지 않으므로 로드할 수 없습니다

Visual Basic version 1.0 또는 이 버전의 Visual Basic 이후의 버전에서 폼을 로드하려 하였습니다. 이러한 작업은 지원되지 않습니다.


지정된 프로젝트 파일이 손상되어 로드할 수 없습니다

Visual Basic에서 프로젝트 파일을 읽을 수 없습니다. 이 오류는 파일이 Visual Basic 이외의 편집기에서 수정된 경우에 발생할 수 있습니다. 문제를 해결하려면 파일의 모든 변경 사항을 실행 취소하십시오.


지정된 디자이너 캐시 파일에 쓸 수 없습니다. 로드한 일반 파일들을 사용하겠습니다

ActiveX 디자이너가 캐시 파일에 정보를 기록할 수 없으므로 디자이너가 캐시되지 않은 정보를 로드합니다.

다음에 Visual Basic을 시작할 때 성능을 향상시키기 위해 ActiveX 디자이너는 캐시 파일에 기록합니다. 디스크 공간이 부족하거나 드라이브에 대한 사용 권한이 없기 때문에 디자이너가 캐시 파일에 쓸 수 없습니다. 사용할 수 있는 디스크 공간이 충분한지, 드라이브에 쓸 수 있는 권한이 있는지 확인하십시오. 문제가 해결되지 않으면 ActiveX 디자이너 구입업체에 문의하십시오.


메모리가 부족하여 파일을 로드할 수 없습니다

메모리가 부족하여 Visual Basic에서 파일을 로드할 수 없습니다. 다른 응용 프로그램을 닫고 다시 시도하십시오.


중복된 프로시저 이름입니다

둘 이상의 프로시저를 동일한 이름으로 정의하였습니다(또는 정의하려고 하였습니다). 프로시저 중 하나의 이름을 바꾸십시오. 같은 프로시저의 중복된 Declare 문이 같은 Alias 절을 가지고 있는지 확인하십시오.


도움말을 표시할 수 없습니다

Windows 도움말 프로그램을 사용할 수 없습니다. MSDN 라이브러리 보기가 사용자의 컴퓨터에 있으면 경로가 정확한지 확인하십시오. 사용자 컴퓨터에 MSDN 라이브러리 보기를 설치해야 도움말을 볼 수 있습니다.


시스템 정보를 표시할 수 없습니다

Microsoft Visual Basic 정보 대화 상자에서 시스템 정보를 선택했을 때 Visual Basic이 시스템 정보를 표시할 수 없습니다. 시스템에 메모리가 부족한 경우가 아니면 필요한 파일이 손상되었거나 없어졌을 수 있습니다.


응용 프로그램 설명은 2000자 이하 길이여야 합니다

응용 프로그램 설명은 2000자를 넘을 수 없습니다. 설명에서 몇 개의 문자를 삭제하십시오.


인쇄할 항목을 지정해야 합니다

인쇄할 항목을 지정하지 않았습니다. 파일 메뉴에서 인쇄를 선택한 후 인쇄 대화 상자에서 Form 또는 Code 확인란 중 하나 이상을 선택해야 합니다.


지정된 이름이 잘못되었습니다

폼과 컨트롤 이름은 문자로 시작해야 하며 문자, 숫자, 밑줄(_)을 포함하여 40자를 넘을 수 없습니다.

폼 또는 컨트롤의 Name 속성은 실행 모드에서 레이블을 달거나 컨트롤의 내용을 표시하는 Label 속성 � Caption, Text, Value � 과 다르다는 점에 주의하십시오. 이러한 속성은 키워드로 제한될 수 있으며, 숫자로 시작될 수 있고 숫자나 영문자 이외의 문자도 포함할 수 있습니다.


지정된 이름이 기존의 모듈, 프로젝트 또는 개체 라이브러리와 충돌을 일으킵니다

이 오류의 원인은 다음과 같습니다.

•	이름이 충돌하는 개체를 가진 폼, User Control , User Document, Property Page를 로드하였습니다. 이 오류는 파일을 Visual Basic 외부에서 편집한 경우에 발생할 수 있습니다.

•	이 오류는 폼의 이름을 프로젝트, 다른 폼, 모듈 등과 같은 이름으로 바꾸는 경우에 발생할 수 있습니다. 또한 프로젝트 이름을 폼 또는 모듈과 같은 이름으로 바꾸는 경우에도 발생할 수 있습니다.


지금은 프로젝트 이름을 설정할 수 없습니다

프로젝트 이름을 지금은 설정할 수 없습니다.


지정한 ActiveX 구성 요소가 잘못 등록되었거나 없습니다

구성 요소를 시스템 레지스트리에 등록해야 합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	구성 요소의 레지스트리 정보가 잘못되어 구성 요소를 찾을 수 없습니다.

레지스트리를 올바르게 수정하십시오. 필요하다면 구성 요소를 다시 설치하십시오.

•	제거 프로그램을 사용하지 않고 삭제하여 구성 요소를 제거했습니다.

레지스트리에서 지정된 디렉터리의 구성 요소 파일을 바꾸십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


프로젝트가 보호되기 때문에 작업을 수행할 수 없습니다

프로젝트가 보호될 때 일부 작업이 금지됩니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	프로젝트가 실수로 보호되었습니다.

보호를 제거한 다음 작업을 다시 시도하십시오.

•	프로젝트가 의도적으로 보호되었습니다.

보호를 적용한 사용자가 보호를 제거한 후에 작업을 시도하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


현재 세션이 끝나기 전에는 새 기록을 시작할 수 없습니다

"중첩" 기록을 할 수 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	이미 실행 중인 기록을 가지고 있습니다.

새 기록을 시작하기 전에 현재 기록을 종료하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


지정된 개체를 제거하기 전에 내보내겠습니까?

폼과 모듈을 내보낸 다음 나중에 다시 로드할 수 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	프로젝트에서 폼 또는 모듈을 제거하고 있습니다.

모듈을 보존하려면 모듈을 내보내십시오. 그러면 나중에 모듈을 가져올 수 있습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


지정된 파일에 있는 폼 클래스는 Visual Basic for Applications에서 지원하지 않습니다. 파일을 로드할 수 없습니다

Visual Basic for Applications에서는 UserForm 폼 개체만을 지원합니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Visual Basic 이전 버전이나 Visual Basic 현재 독립형 버전에서 폼을 로드하려 하고 있습니다.

Visual Basic for Applications 내의 UserForm 도구를 사용하는 폼을 다시 디자인하는 것이 가장 쉽습니다. ASCII 형식으로 폼을 저장할 수 있으면 폼을 수정하고 가져올 수 있습니다. 그러나 다양한 폼 패키지의 형식과 한계를 완전히 이해해야 합니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


지정된 파일을 로드할 수 없습니다

Visual Basic for Applications에서 모든 파일을 로드할 수는 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	로드하려고 하는 파일이 Visual Basic에서 해석할 수 없는 형식을 가지고 있습니다. 또는 파일이 손상되었습니다.

파일을 로드할 수 없습니다.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


이 명령을 선택하면 디버거가 중단됩니다

일부 명령과 작업이 Visual Basic의 코드 분석을 중단시킵니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Static 변수를 선언하는 일부 편집 또는 새 모듈이나 폼을 추가하는 일부 명령은 실행 코드나 일시 중단 코드를 멈추게 합니다.

실행 코드를 중단하지 않으려면 명령을 추가하거나 실행하지 마십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


프로젝트를 저장해야 참조할 수 있습니다

저장하지 않은 프로젝트에 참조를 추가할 수 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	프로젝트가 저장되지 않았는 데 참조를 추가하려고 했습니다.

프로젝트를 저장한 다음 참조를 추가하십시오.

자세한 내용을 보려면 질문 중에서 원하는 항목을 선택하고 Windows의 경우에는 F1키를, 매킨토시의 경우에는 Help키를 누르십시오.


개체 사용이 잘못되었습니다(오류 425)

관련 범위 밖에서 개체를 사용할 때 대부분의 개체는 특정한 방법으로만 사용할 수 있습니다. 예를 들어 끌어다 놓기 이벤트로 전달된 개체 참조는 해당 이벤트의 구문에서만 사용할 수 있습니다.


이 프린터로는 폼 이미지를 인쇄할 수 없습니다(오류 486)

폼 이미지를 인쇄하려면 그래픽을 인쇄할 수 있는 프린터가 있어야 합니다.


지정된 개체는 Show()에 대한 소유 폼으로 사용될 수 없습니다(오류 371)

해당 개체를 Show 메서드와 함께 사용해야 합니다.


지정된 ActiveX 컨트롤을 찾을 수 없습니다(오류 363)

로드한 개체에 현재 프로젝트의 일부가 아닌 ActiveX 컨트롤이 들어 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	프로젝트의 일부가 아닌 ActiveX 컨트롤이 포함된 폼을 추가하기 위해 프로젝트의 .vbp 파일을 수동으로 편집하였습니다.

프로젝트를 로드한 후 파일 메뉴의 파일 추가 명령을 사용하여 프로젝트에 ActiveX 컨트롤을 추가하십시오.

•	이미 프로젝트의 일부인 ActiveX 컨트롤 대신 이전 버전의 ActiveX 컨트롤이 포함된 폼을 추가하기 위해 프로젝트의 .vbp 파일을 수동으로 편집하였습니다.

프로젝트를 로드한 후 폼에서 이전 버전을 삭제하고 이후 버전의 컨트롤을 폼에 넣으십시오.


ActiveX 구성 요소가 바르게 등록되지 않았습니다(오류 336)

ActiveX 구성 요소가 시스템 레지스트리에 제대로 등록되지 않았습니다.


명명된 데이터 값을 찾을 수 없습니다(오류 327)

데이터 값을 찾을 수 없습니다.


그림이 잘못되었습니다(오류 481)

잘못된 그래픽 형식이 Picture 속성에 지정되었습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	비트맵, 아이콘 또는 Windows 메타 파일 이외의 그래픽 형식을 폼 또는 컨트롤의 Picture 속성에 지정하려 하였습니다.

Picture 속성에 로드하려는 파일이 Visual Basic에서 지원하는 그래픽 파일인지 확인하십시오.


프린터 오류입니다(오류 482)

인쇄를 방해하는 여러 가지 문제가 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Windows 제어판에 설치된 프린터가 없습니다.

제어판을 열고 프린터 아이콘을 두 번 누른 후에 프린터 추가를 눌러 프린터를 설치하십시오.

•	프린터가 온라인 상태가 아닙니다.

물리적으로 프린터를 온라인으로 전환하십시오.

•	프린터에 용지가 걸렸거나 용지가 없습니다.

물리적으로 이 문제를 해결하십시오.

•	텍스트만 인쇄할 수 있는 프린터에서 폼을 인쇄하려 하였습니다.

설치된 프린터 중 그래픽을 인쇄할 수 있는 프린터로 전환하십시오.


프린터 드라이버가 지정된 속성을 지원하지 않습니다(오류 483)

사용 중인 프린터의 프린터 드라이버가 Printer 개체의 이 속성을 지원하지 않습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Printer 개체 속성의 영향은 프린터 제조업체에서 제공하는 드라이버에 따라 다릅니다. 일부 속성 설정 값은 영향력을 가지지 않을 수 있습니다. 또한 여러 개의 서로 다른 속성 설정 값이 모두 동일한 영향을 줄 수도 있습니다. 허용된 범위를 벗어난 설정 값은 오류를 발생시킬 수도 있습니다.

자세한 정보는 제조업체에서 제공하는 해당 프린터 설명서를 참조하십시오.


시스템의 프린터 정보를 읽어들이는데 문제가 발생하였습니다. 프린터 설정이 바르게 되었는지 확인하십시오(오류 484)

시스템에서 프린터 정보를 얻지 못하게 하는 여러 가지 문제가 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Windows 제어판에 설치된 프린터가 없습니다.

제어판을 열고 프린터 아이콘을 두 번 누른 후에 프린터 추가를 눌러 프린터를 설치하십시오.

•	프린터가 온라인 상태가 아닙니다.

물리적으로 프린터를 온라인으로 전환하십시오.

•	용지가 걸렸거나 용지가 없습니다.

물리적으로 이 문제를 해결하십시오.


그림 형식이 잘못되었습니다(오류 485)

로드하려는 리소스 파일 그림 형식이 개체의 지정된 속성과 맞지 않습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	LoadResPicture 메서드를 사용하여 폼의 Icon 속성으로 비트맵 리소스를 읽으려 하였습니다.

속성을 Picture 속성으로 바꾸거나 LoadResPicture의 format 인수를 vbResIcon으로 바꾸십시오.

•	LoadResPicture 메서드를 사용하여 MousePointer 속성이 아닌 개체 또는 컨트롤의 속성으로 커서 리소스를 읽으려 하였습니다.

속성 참조를 MousePointer로 바꾸십시오.


클립보드를 비울 수 없습니다(오류 520)

클립보드를 열었지만 비울 수 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	다른 응용 프로그램에서 클립보드를 사용하고 있으며 아직 해제하지 않았습니다.

코드에 이 문제 해결을 위한 오류 트랩을 설정하고 재시도와 취소 단추가 있는 메시지 상자에서 사용자가 잠시 멈춘 후 다시 시도할 수 있도록 하십시오.


클립보드를 열 수 없습니다(오류 521)

다른 응용 프로그램에서 클립보드를 이미 열었습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	다른 응용 프로그램에서 클립보드를 사용하고 있으며 아직 해제하지 않았습니다.

코드에 이 문제 해결을 위한 오류 트랩을 설정하고 재시도와 취소 단추가 있는 메시지 상자에서 사용자가 잠시 멈춘 후 다시 시도할 수 있도록 하십시오.


지정된 형식이 데이터 형식과 일치하지 않습니다(오류 461)

지정한 클립보드 형식과 실행 중인 메서드가 맞지 않습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	vbCFText 또는 vbCFLink가 아닌 클립보드 형식을 가진 GetText 메서드 또는 SetText 메서드를 사용하려 하였습니다.

이러한 메서드를 사용하기 전에 GetFormat 메서드를 사용하여 현재 클립보드의 내용이 지정된 형식과 일치하는지 시험해 보십시오.

•	vbCFBitmap, vbCFDIB, vbCFMetafile가 아닌 클립보드 형식을 가진 GetData 메서드 또는 SetData 메서드를 사용하려 하였습니다.

이러한 메서드를 사용하기 전에 GetFormat 메서드를 사용하여 현재 클립보드의 내용이 지정된 그래픽 형식과 일치하는지 시험해 보십시오.


클립보드 형식이 잘못되었습니다(오류 460)

지정한 클립보드 형식과 실행 중인 메서드가 맞지 않습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	vbCFText 또는 vbCFLink가 아닌 클립보드 형식을 가진 GetText 메서드 또는 SetText 메서드를 사용하려 하였습니다.

잘못된 형식을 삭제하고 사용 가능한 두 형식 중 하나를 지정하십시오.

•	vbCFBitmap, vbCFDIB, vbCFMetafile이 아닌 클립보드 형식을 가진 GetData 또는 SetData 메서드를 사용하려 하였습니다.

잘못된 형식을 삭제하고 사용 가능한 세 개의 그래픽 형식 중 하나를 지정하십시오.


이 구성 요소에 대한 라이센스 정보를 찾을 수 없습니다. 디자인 환경에서 이 기능을 사용할 수 있는 라이센스가 없습니다(오류 429)

ActiveX 컨트롤에 대한 라이센스가 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	디자인 모드에서 ActiveX 컨트롤을 폼에 넣으려 했거나 ActiveX 컨트롤을 가진 폼을 프로젝트에 추가하려 하였습니다. 그러나 레지스트리에서 연결된 정보를 찾을 수 없습니다.

레지스트리에 있는 정보가 삭제되었거나 손상되었을 수 있습니다. ActiveX 컨트롤을 다시 설치하거나 컨트롤 구입업체에 문의하십시오.


폼이 이미 표시되어 있으므로 모달로 표시할 수 없습니다(오류 400)

Show 메서드를 사용하여 볼 수 있는 폼을 모달로 표시할 수 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	style 인수가 1로 설정된 Show를 사용하려 하였습니다 � vbModal, 이미 볼 수 있는 폼에 있음

모달 폼으로 보여주기 전에 폼에서 Unload 문이나 Hide 메서드를 사용하십시오.


먼저 맨 위의 모달 폼을 닫거나 숨겨야 합니다(오류 402)

닫거나 숨기려는 모달 폼이 z 순서의 맨 위에 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	닫거나 숨기려는 모달 폼보다 다른 모달 폼이 z 순서가 높습니다.

우선 z 순서의 위쪽에 있는 모달 폼들에서 Unload 문 또는 Hide 메서드를 사용하십시오. 모달 폼은 style 인수가 1로 설정(vbModal)된 Show 메서드에 의해 표시되는 폼입니다.


이 개체를 로드하거나 언로드할 수 없습니다(오류 361)

Load 문이나 Unload 문에서 잘못된 개체 또는 컨트롤을 참조하였습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	Screen, Printer, Clipboard처럼 로드할 수 있는 개체가 아닌 개체를 로드하거나 언로드하려 하였습니다.

코드에서 오류를 일으키는 문장을 삭제하십시오.

•	컨트롤 배열의 일부가 아닌 기존 컨트롤을 로드하거나 언로드하려 하였습니다. 예를 들어 Name 속성이 Text1인 TextBox가 있다고 가정하면 Load Text1이 이러한 오류를 발생시킵니다.

코드에서 오류를 일으키는 문장을 삭제하거나 컨트롤 배열에 있는 컨트롤에 대한 참조를 바꾸십시오.

•	상위 메뉴의 Click 이벤트에서 Menu 컨트롤을 언로드하려 하였습니다.

다른 프로시저를 가진 Menu 컨트롤을 언로드하십시오.

•	Menu 컨트롤의 볼 수 있는 마지막 메뉴 항목을 언로드하려 하였습니다.

메뉴 항목을 언로드하기 전에 컨트롤 배열에 있는 다른 메뉴 항목에 대한 Visible 속성의 설정 값을 확인하십시오. 아니면 코드에서 오류를 일으키는 문장을 삭제하십시오.


이미 로드한 개체입니다(오류 360)

컨트롤 배열에 있는 컨트롤을 이미 로드하였습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	실행 모드에서 Load 문을 사용하여 컨트롤을 컨트롤 배열에 추가하려 했지만 참조한 인덱스 값이 이미 존재합니다.

인덱스 참조를 새 값으로 바꾸거나 코드에서 두 번 이상 동일한 인덱스 값을 참조하는 Load 문을 실행하고 있는지 확인하십시오.


폼을 찾을 수 없습니다(오류 424)

폼을 찾지 못하였습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

Add 메서드를 사용하여 폼을 UserForms 컬렉션에 추가하려 했지만 해당 이름의 폼 클래스가 없습니다. 예를 들어 UserForms.Add "MyForm"에서 MyForm은 존재하지 않습니다.

메모   클래스 이름을 프로젝트에서 사용할 수 있도록 하십시오.


이 구문 내에서는 언로드할 수 없습니다(오류 365)

어떤 경우에는 폼 또는 폼에 있는 컨트롤을 언로드할 수 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	폼 또는 Paint 이벤트를 가진 폼에 있는 컨트롤의 Paint 이벤트에 Unload 문이 있습니다.

Paint 이벤트에서 Unload 문을 제거하십시오.

•	ComboBox의 Change, Click, DropDown 이벤트에 Unload 문이 있습니다.

이벤트에서 Unload 문을 제거하십시오.

•	HScrollBar 또는 VScrollBar 컨트롤의 Scroll 이벤트에 Unload 문이 있습니다.

이벤트에서 Unload 문을 제거하십시오.

•	Data, Form, MDIForm, PictureBox 컨트롤의 Resize 이벤트에 Unload 문이 있습니다.

이벤트에서 Unload 문을 제거하십시오.

•	MDI 하위 폼을 삭제하려는 MDIForm의 Resize 이벤트에 Unload 문이 있습니다.

이벤트에서 Unload 문을 제거하십시오.

•	Data 컨트롤의 RePosition 이벤트 또는 Validate 이벤트에 Unload 문이 있습니다.

이벤트에서 Unload 문을 제거하십시오.

•	OLE Container 컨트롤의 ObjectMove 이벤트에 Unload 문이 있습니다.

이벤트에서 Unload 문을 제거하십시오.


지정된 시스템 DLL을 로드할 수 없습니다(오류 298)

운영 체제에서 제공하는 DDEML.DLL, VERSION.DLL, WINSPOOL.DRV 등의 .dll 파일을 찾을 수 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	파일이 올바른 경로에 없습니다.

DLL이 Windows System 경로에 있는지 확인하십시오.

•	DLL이 손상되었거나 삭제되었습니다.

DLL을 다시 로드하십시오.

•	메모리 또는 교체 공간이 부족합니다.

다른 응용 프로그램을 닫고 사용할 수 있는 메모리를 늘이십시오.


파일 이름에 문자 입출력 장치 이름을 사용할 수 없습니다(오류 320)

Visual Basic에서는 파일에 문자 장치 드라이버와 동일한 이름을 사용할 수 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	AUX, CON, COM1, COM2, LPT1, LPT2, LPT3, LPT4, NUL 등의 파일 이름을 사용하려 하였습니다.

파일에 다른 이름을 지정하십시오.


파일 형식이 잘못되었습니다(오류 321)

Visual Basic 폼 파일이 손상되었습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	폼에 손상된 ActiveX 컨트롤이 있습니다.

폼의 ActiveX 컨트롤을 바꾸십시오.

•	현재 버전의 ActiveX 컨트롤에 있는 속성 수와 예상한 속성 수가 일치하지 않습니다.

ActiveX 컨트롤을 이전 버전이나 이후 버전으로 바꾸십시오.


잘못된 매개 변수입니다. 배열을 기록할 수 없습니다(오류 328)

비정상적인 매개 변수가 메서드에 전달되었습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	User Control의 WriteProperties 이벤트에서 PropBag.WriteProperty X를 수행하려 하였습니다. 여기에서 X는 배열입니다. 이것은 지원되지 않습니다.

배열의 각 요소에 개별적으로 기록해야 합니다.


시스템 레지스트리에 액세스할 수 없습니다(오류 335)

폼을 읽거나 시스템 레지스트리에 기록하려다가 실패하였습니다.


ActiveX 구성 요소를 찾을 수 없습니다(오류 337)

필요한 .exe 또는 .dll 파일을 찾을 수 없습니다.


ActiveX 구성 요소 실행이 잘못되었습니다(오류 338)

ActiveX 구성 요소의 .exe 파일을 제대로 실행하지 못하였습니다. 레지스트리에 있는 정보와 관련된 문제일 수 있습니다.


개체가 언로드되었습니다(오류 364)

폼이 _Load 프로시저에서 언로드되었습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	_Load 프로시저에 Unload 문을 가진 폼을 내포적으로 로드하였습니다. 예를 들어 다음은 YourForm을 이미 로드한 경우에 내포적으로 로드하게 됩니다.

MyForm.BackColor = YourForm.BackColor.

Form_Load 프로시저에서 Unload 문을 제거하십시오.


지정된 파일은 더 이상 유효하지 않습니다. 이 프로그램은 이후 버전을 필요로 합니다(오류 368)

오래된 버전의 ActiveX 컨트롤이 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	현재 버전의 ActiveX 컨트롤에 있는 속성 수가 예상한 속성 수와 맞지 않습니다.

이후 버전의 ActiveX 컨트롤로 바꾸십시오.


속성 값이 잘못되었습니다(오류 380)

속성에 부적당한 값을 할당하였습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	개체 또는 컨트롤의 속성 중 하나를 허용된 범위를 벗어난 값으로 설정하였습니다.

속성 값을 유효한 설정 값으로 바꾸십시오. 예를 들어 MousePointer 속성은 0 � 15 또는 99의 정수로 설정해야 합니다.


지정된 속성은 실행 모드에서 설정할 수 없습니다(오류 382)

이 속성은 실행 모드에서 읽기 전용입니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	디자인 모드에서만 설정할 수 있는 값을 가진 속성을 설정하거나 변경하려 하였습니다.

코드에서 속성에 대한 참조를 삭제하거나 실행 모드에서만 속성 값을 반환하도록 참조를 변경하십시오.


지정된 속성은 읽기 전용입니다(오류 383)

이 속성은 디자인 모드와 실행 모드에서 읽기 전용입니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	읽기 전용 값을 가진 속성을 설정하거나 변경하려 하였습니다.

코드에서 속성에 대한 참조를 삭제하거나 실행 모드에서만 속성 값을 반환하도록 참조를 변경하십시오.


지정된 속성은 실행 모드에서 읽을 수 없습니다(오류 393)

이 속성은 디자인 모드에서만 사용할 수 있습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	디자인 모드에만 액세스할 수 있는 속성을 실행 모드에서 읽으려고 하였습니다.

코드를 변경하고 속성에 대한 참조를 삭제하십시오.


지정된 속성은 쓰기 전용입니다(오류 394)

이 속성은 읽을 수 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	속성은 읽을 수 없습니다. 예를 들어 ctl.property = 3은 정상적이지만 "Print ctl.property"는 오류를 발생시킵니다.

코드를 변경하고 속성에 대한 참조를 삭제하십시오.


개체 사용 권한이 없습니다(오류 419)

지정된 개체에 대해 필요한 사용 권한이 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	현재는 이 개체를 액세스할 수 있는 권한이 없습니다.

할당된 사용 권한을 바꾸려면 시스템 관리자 또는 개체를 만든 사람에게 문의하십시오.


AutoRedraw 이미지를 만들 수 없습니다(오류 480)

Visual Basic에서 폼이나 그림을 자동으로 다시 그리기 위한 지속적인 비트맵을 만들 수 없습니다. 이 오류의 발생 원인과 해결 방법은 다음과 같습니다.

•	AutoRedraw 속성에 대한 메모리가 부족하여 True로 설정할 수 없습니다.

AutoRedraw 속성을 False로 설정하고 Paint 이벤트 프로시저에서 사용자 자신의 다시 그리기 작업을 수행하거나, PictureBox 컨트롤이나 Form 개체를 더 작게 만들고 AutoRedraw를 True로 설정하여 작업을 다시 시도합니다.


메모리가 부족합니다(오류 31001)

지정된 작업에 대해 시스템이 충분한 메모리 또는 디스크 공간을 할당하거나 액세스할 수 없습니다.


개체가 없습니다(오류 31004)

존재하지 않는 개체에서 작업을 수행하려고 하였습니다.


클래스가 설정되지 않았습니다(오류 31018)

Action = 0으로 설정(CreateEmbed 메서드)했을 때 원본 문서(SourceDoc 속성)를 지정하지 않으면 Class 속성은 시스템에서 사용할 수 있는 클래스 이름으로 설정되어야 합니다.

디자인 모드에서 사용할 수 있는 클래스 이름 목록을 표시하려면 OLE 컨테이너 컨트롤을 마우스 오른쪽 단추로 누르고 Insert Object 명령을 선택합니다.


개체를 활성화할 수 없습니다(오류 31027)

개체의 원본 문서를 로드할 수 없거나 개체를 만든 응용 프로그램을 사용할 수 없습니다.

이 오류는 연결된 개체를 활성화하려고 했을 때(Action = 7로 설정) SourceDoc 속성에서 지정한 파일이 삭제되었거나 더 이상 존재하지 않는 경우에 발생합니다.

또한 이 오류는 개체를 활성화했을 때(Action = 7로 설정) Verb 속성에서 지정한 동작이 유효하지 않은 경우에도 발생합니다. 개체를 제공하는 일부 응용 프로그램은 응용 프로그램 상태에 따라 서로 다른 동사를 지원합니다. 응용 프로그램에서 지원하는 모든 동사는 ObjectVerbs 속성 목록에 표시됩니다. 그러나 일부 동사는 현재 상태의 응용 프로그램에서 사용할 수 없을 수도 있습니다.


포함 개체를 만들 수 없습니다(오류 31032)

개체를 만들고 있는 응용 프로그램이 SourceDoc 속성에 지정된 대로 개체를 만들 수 없습니다.

예를 들어 이 오류는 스프레드시트 개체를 포함시키는 데 SourceDoc가 스프레드시트 프로그램이 읽기에는 너무 큰 스프레드시트를 지정한 경우에 발생합니다.


파일 저장 오류입니다(오류 31036)

Visual Basic이 지정된 파일에 개체를 기록할 수 없습니다(Action = 11 또는 18로 설정). 이 오류가 발생할 수 있는 원인은 다음과 같습니다.

•	FileNumber 속성이 잘못되었습니다.

•	지정된 파일이 Binary 모드로 열리지 않았습니다.

•	디스크 공간이 부족합니다.


파일 로드 오류입니다(오류 31037)

지정된 파일을 읽다가 오류가 발생하였습니다(Action = 12로 설정). 이 오류가 발생할 수 있는 원인은 다음과 같습니다.

•	FileNumber 속성이 잘못 되었습니다.

•	파일이 Binary 모드로 열리지 않았습니다.

•	파일이 제대로 저장되지 않았습니다(Action = 11로 설정).

•	파일이 손상되었습니다.

•	유효한 OLE 개체의 시작 부분에서 파일 위치를 찾지 못하였습니다.


지정된 행에서: 지정된 폼 이름이 유효하지 않으므로 로드할 수 없습니다

ASCII 파일에 Visual Basic에서 사용할 수 없는 문자열을 가진 폼이 들어 있습니다. 폼은 로드되지 않습니다.


지정된 행에서: 지정된 포함 개체를 만들 수 없습니다

텍스트 파일에서 폼, User Control, User Document, Property Page를 로드할 때는 포함 개체를 만들 수 없습니다. 예를 들어, Microsoft Word 문서를 폼에 삽입했다가 Microsoft Word를 시스템에서 삭제한 경우에 이 오류가 발생합니다. 이 메시지는 오류 로그 파일에 기록됩니다.


지정된 행에서: 라이센스를 찾을 수 없으므로 포함 개체를 만들 수 없습니다

텍스트 파일에서 폼, User Control, User Document, Property Page를 로드할 때는 라이센스 파일을 찾을 수 없기 때문에 포함 개체를 만들 수 없습니다. 이 개체를 사용하려면 라이센스가 있어야 합니다. 자세한 정보는 개체 구입업체에 문의하십시오. 이 메시지는 오류 로그 파일에 기록됩니다.


지정된 행에서: 지정된 항목은 컨트롤의 최대 중첩 수준을 초과합니다

ASCII 파일에 7 수준 이상 중첩되는 컨트롤이 들어 있습니다.


지정된 행에서: 메뉴가 모든 컨트롤에 선행되어야 하므로 지정된 컨트롤을 로드할 수 없습니다

ASCII 폼 파일의 잘못된 위치에 컨트롤이 나타났습니다. 모든 컨트롤은 메뉴보다 먼저 로드해야 합니다.


지정된 행에서: 지정된 상위 메뉴는 구분선으로 로드할 수 없습니다

ASCII 파일에 상위 또는 최상위 메뉴가 메뉴 구분선으로 정의된 Menu 컨트롤이 있습니다. 최상위 메뉴는 메뉴 구분선이 될 수 없습니다. 구분선을 설정할 수 없습니다.


지정된 행에서: 지정된 메뉴에서 Checked 속성을 설정할 수 없습니다. 상위 메뉴에 확인 표시할 수 없습니다

Checked 속성이 True로 설정된 최상위 Menu 컨트롤이 ASCII 폼 파일에 있습니다. 최상위 메뉴에는 확인 표시할 수 없습니다. Menu 컨트롤은 로드하지만 Checked 속성이 설정되지 않습니다.


지정된 행에서: 지정된 메뉴에서 Shortcut 속성을 설정할 수 없습니다. 상위 메뉴는 바로 가기 키를 가질 수 없습니다

바로 가기 키가 정의된 최상위 Menu 컨트롤이 ASCII 폼 파일에 있습니다. 최상위 메뉴는 바로 가기 키를 가질 수 없습니다. Menu 컨트롤은 로드하지만 Shortcut 속성이 설정되지 않습니다.


지정된 행에서: 지정된 폼 이름은 이미 사용 중이므로 이 폼을 로드할 수 없습니다

ASCII 파일에 다른 응용 프로그램에서 이미 사용 중인 이름을 가진 폼이 있습니다. 폼은 로드되지 않습니다.


지정된 항목에 서로 충돌을 일으키는 속성이 있습니다. 기본값이 사용됩니다

폼, User Control, Property Page, User Document, Class Module에 있는 일부 속성 문장이 형식에 필요한 설정 값과 충돌합니다. 예를 들어, 폼의 VB_PredeclaredId 속성은 항상 True여야 합니다. 이 오류는 파일을 Visual Basic 이외의 편집기에서 수정한 경우에 발생할 수 있습니다.


지정된 항목은 읽기 전용 파일입니다

읽기 전용 파일을 저장하려고 하였습니다. 읽기 전용 파일은 프로젝트 탐색기에 [image] 로 표시됩니다. 읽기 전용 파일은 저장할 수 없으므로 다른 이름으로 저장을 사용하십시오.


지정된 행에서: 지정된 참조를 작성할 수 없습니다

지정한 줄에 나타난 참조를 작성할 수 없습니다.


지정된 행에서: 지정된 파일을 로드할 수 없습니다

구문 오류 때문에 Visual Basic이 파일을 분석하거나 로드할 수 없습니다. 또한 폼 이름이 충돌하기 때문에 ASCII 폼을 로드할 수 없습니다. 폼을 로드하지 않으며 폼 이름도 프로젝트 탐색기에 표시되지 않습니다.

이 오류를 일으키는 파일이 올바른 형식의 유효한 ASCII 폼인지와 프로젝트 내의 다른 폼에 충돌이 없는지를 확인하십시오.


로드하는 중 오류가 발생하였습니다

자세한 내용은 오류 로그를 확인하십시오.


지정된 항목을 로드할 수 없습니다. 추가 기능 목록에서 이를 삭제하시겠습니까?

Visual Basic이 추가 기능 관리자 대화 상자의 사용 가능한 추가 기능 목록에서 선택하려는 추가 기능을 로드할 수 없습니다. 예를 눌러 목록에서 삭제하거나 아니오를 눌러 목록에 그대로 남겨 두십시오. 두 경우 모두 추가 기능을 로드할 수는 없습니다.


시스템 레지스트리에 등록되어 있지 않으므로 지정된 항목을 Visual Basic에서 로드할 수 없습니다. 모든 추가 기능이 바르게 설치되었는지 확인하십시오

Visual Basic이 추가 기능 관리자 대화 상자의 사용 가능한 추가 기능 목록에서 선택하려는 추가 기능을 로드할 수 없습니다. 그것은 시스템 레지스트리에 잘못 등록되었거나 등록되어 있지 않기 때문입니다.


로드 오류를 더 보시겠습니까?

다른 오류를 더 보려면 확인을 누르고 아니면 취소를 누르십시오.


지정된 항목을 로드할 수 없습니다

구문 오류 때문에 Visual Basic이 파일을 분석하거나 로드할 수 없습니다. 또한 폼 이름이 충돌하기 때문에 ASCII 폼을 로드할 수 없습니다. 폼을 로드하지 않으며 폼 이름도 프로젝트 탐색기에 표시되지 않습니다.

이 오류를 일으키는 파일이 올바른 형식의 유효한 ASCII 폼인지와 프로젝트 내의 다른 폼에 충돌이 없는지를 확인하십시오.


버전 번호가 누락되었거나 잘못되었습니다

버전 표시를 찾을 수 없거나 지정된 버전을 인식할 수 없습니다. 첫 줄이 빈 칸이거나 ASCII 형태의 주석이 아니며 정확한 버전을 지정했는지 확인하십시오.


지정된 항목은 지정된 프로젝트가 참조하고 있으므로 업데이트할 수 없습니다

지정된 컨트롤을 둘 이상의 프로젝트에서 참조하였습니다. 한 프로젝트에 대해서만 업데이트하면 다른 프로젝트에서는 유효하지 않게 됩니다.


컨트롤이나 참조가 사용 중이므로 삭제할 수 없습니다

삭제하려는 ActiveX 컨트롤 또는 참조를 프로젝트에 있는 폼 중 하나에서 사용하고 있습니다. 우선 폼에서 컨트롤 또는 참조된 개체를 삭제하고 목록에서 선택을 취소하십시오.


지금 종료할 수 없습니다

Visual Basic이 실행 모드이거나 중단 모드일 때는 Windows를 종료할 수 없습니다. 또한 대화 상자 또는 메시지 상자가 표시된 상태에서도 Windows를 종료할 수 없습니다.


지정된 항목 로드 오류. 속성을 로드하는 데 오류가 발생하였습니다. 계속하시겠습니까?

그 이름이 프로젝트에 이미 있는 폼과 충돌하는 컨트롤을 가진 폼을 로드하려고 하였습니다. 예를 들어 Form1 컨트롤이 들어 있는 Form2를 로드하면 이 오류가 발생합니다.


지정된 항목 로드 오류. 오류가 있어서 컨트롤을 로드할 수 없습니다. 계속하시겠습니까?

다른 오류가 발생한 후에 이 오류 메시지가 나타납니다. 그 오류에 대한 적당한 처리 후에 이 오류 메시지를 보게 됩니다. 그대로 컨트롤을 로드하려면 예를 누르고 누르고 로드하지 않으려면 아니오를 누르십시오.


지정된 항목은 이전 파일 형식입니다. 저장하면 새로운 형식으로 저장됩니다

이 파일은 이전 버전의 Visual Basic으로 만든 파일입니다. 이 파일을 저장하면 현재 버전의 파일 형식으로 저장됩니다.


지정된 항목은 이미 프로젝트 내에 존재합니다

지정한 파일을 이미 프로젝트에서 사용하고 있습니다. 한 프로젝트에 동일한 파일을 여러 번 추가할 수 없습니다. 또한 프로젝트에 있는 파일과 같은 이름으로 파일을 저장할 수도 없습니다.


로드하는 동안에 오류가 발생하였습니다. 자세한 내용은 지정된 항목을 참조하십시오

ASCII 폼 파일에서 예상하지 못한 오류가 발생하였습니다. Visual Basic은 오류에 대한 더 자세한 정보를 제공할 수 있도록 로그 파일을 작성합니다. 이 로그 파일을 확인하고 문제의 심각성을 결정해야 합니다. 이러한 오류를 안전하게 무시할 수 있는 경우도 있지만(예, Version number missing or invalid...), 오류 때문에 기대한 대로 폼이 실행되지 않을 수도 있습니다(예, Class MyClass in control MyControl was not a loaded control class).


문자열 값이 너무 길어 처리할 수 없으므로 폼 로드를 중지하였습니다

로드한 폼에 포함된 문자열이 너무 길어서 처리할 수 없습니다.


프로젝트 내에서 하나 이상의 파일이 변경되었습니다. 지금 변경 사항을 저장하시겠습니까?

코드 문장이나 속성 설정 값 중 하나가 프로젝트에 있는 하나 이상의 파일에서 변경되었지만 아직 저장되지 않았습니다. 지금이 다른 프로젝트를 로드하기 전에 바뀐 내용을 저장할 수 있는 마지막 기회입니다.


지정된 항목을 등록할 수 없습니다

지정한 파일을 시스템 레지스트리에 등록할 수 없습니다. 이 오류는 Visual Basic 개발 환경의 구성 요소가 사용하는 형식 라이브러리와 관련이 있으며, 시스템 레지스트리에 있는 지정된 파일의 항목이 손상되었거나, DLL 자체가 없어졌거나 손상되었음을 나타냅니다.


다른 응용 프로그램에서 이 프로그램의 한 개체에 액세스 중입니다. 지금 프로그램을 종료하면 이 프로그램에서 오류가 발생할 수 있습니다. 지금 프로그램을 종료하시겠습니까?

현재 실행 중인 Visual Basic 프로그램에 있는 자동화 개체를 하나 이상의 다른 응용 프로그램에서 사용하고 있습니다. 프로그램을 종료하면 다음 응용 프로그램에서 오류가 발생할 수 있습니다. 프로그램을 종료하려면 예를 누르고 작업을 계속 수행하려면 아니오를 누르십시오.


지정된 항목의 속성 중 하나 이상이 잘못되었습니다. 속성의 일부 또는 전부가 바르게 설정되어 있지 않을 수도 있습니다

지정한 프로젝트 파일에 있는 하나 이상의 속성 설정 값이 잘못 되었습니다. 이 오류는 프로젝트 파일의 경우에만 발생합니다.


지정된 항목에서 이름이 충돌을 일으킵니다. 지정된 이름을 사용하겠습니다

폼, User Control, Property Page, User Document의 원본 파일에서 폼 이름이 두 번 나타납니다. 이 오류는 파일을 Visual Basic 이외의 편집기로 수정한 경우에 발생할 수 있습니다.


지정된 행에서: 지정된 컨트롤 이름이 잘못되었습니다

ASCII 파일에 Visual Basic에서 사용할 수 있는 문자열이 아닌 컨트롤 이름이 있습니다. 컨트롤은 로드하지 않습니다.


지정된 행에서: 지정된 속성 이름은 유효하지 않습니다

ASCII 파일에 해당 컨트롤에 대해 올바르지 않은 속성 이름이 있습니다.


지정된 행의 항목 속성은 " "로 묶여 있는 문자열이어야 합니다

ASCII 폼 파일에서 속성 이름이 있어야 하는 부분에 인용 부호가 있는 문자열이 나타났습니다. 속성 이름에는 인용 부호("")가 들어갈 수 없습니다.


지정된 행에서: 지정된 속성은 잘못된 속성 인덱스를 가지고 있습니다

ASCII 파일에 255를 넘는 속성 인덱스를 가진 속성 이름이 들어 있습니다.


지정된 행에서: 지정된 속성을 로드할 수 없습니다

ASCII 파일에 알 수 없는 속성이 들어 있습니다. 이 속성은 폼을 로드할 때 무시됩니다.


지정된 행에서: 지정된 속성은 " "로 묶여 있어야 합니다

ASCII 파일에 인용 부호("") 안에 들어가야 하는 속성이 있지만 인용 부호가 없습니다. 폼 설명에서 이 줄은 무시됩니다.


지정된 행에서: 지정된 속성은 잘못된 값을 가지고 있습니다

이 컨트롤에 대한 값이 올바르지 않은 속성이 ASCII 파일에 들어 있습니다. 속성은 기본값으로 설정됩니다.


지정된 행에서: 지정된 속성은 유효하지 않은 파일 참조를 가지고 있습니다

Visual Basic이 지정된 디렉터리에서 찾을 수 없는 파일에 대한 참조가 ASCII 파일에 들어 있습니다.


지정된 행에서: 지정된 속성을 설정할 수 없습니다

Visual Basic이 지정된 컨트롤의 속성을 ASCII 파일에 있는 폼 설명에 나타난 대로 설정할 수 없습니다.


지정된 행에서: 지정된 컨트롤의 지정된 클래스는 로드한 컨트롤 클래스가 아닙니다

ASCII 파일에 Visual Basic이 인식하지 못하는 컨트롤 클래스가 있습니다. 이 클래스를 포함하는 사용자 정의 컨트롤을 프로젝트에 추가하십시오.


지정된 행에서: 인덱스 속성을 찾을 수 없으며 지정된 컨트롤이 이미 존재합니다

컨트롤에 인덱스가 없고 이미 로드한 컨트롤과 동일한 이름을 가지고 있기 때문에 이 컨트롤을 로드할 수 없습니다.


지정된 행에서: 컨트롤 이름이 너무 길어서 지정된 대로 잘립니다

ASCII 파일에 40자를 넘는 컨트롤 이름이 있습니다. 컨트롤은 40자로 잘린 이름으로 로드하게 됩니다.


지정된 행에서: 클래스 이름이 너무 길어서 지정된 대로 잘립니다

ASCII 파일에 40자를 넘는 클래스 이름이 있습니다. 클래스는 40자로 잘린 이름으로 로드하게 됩니다.


지정된 행에서: 구문 오류: 지정된 속성에 등호(=)가 없습니다

ASCII 파일에 있는 속성 이름과 값 사이에 등호(=)가 없습니다. 속성은 로드되지 않습니다.


지정된 행에서: 유효한 컨테이너가 아닌 컨트롤을 포함하고 있으므로 지정된 컨트롤을 로드할 수 없습니다

컨트롤을 올바른 컨테이너가 아닌 컨트롤로 로드하려 하였습니다.


지정된 행에서: 이미 사용 중인 이름이므로 지정된 컨트롤을 로드할 수 없습니다

ASCII 텍스트 파일에서 이름을 붙인 컨트롤의 이름을 응용 프로그램에서 이미 사용하고 있기 때문에 로드할 수 없습니다.


지정된 행에서: 지정된 파일의 컨트롤 클래스가 누락되었거나 잘못되었습니다

ASCII 파일의 폼 설명에 알 수 없는 컨트롤 클래스가 들어 있거나 클래스 이름이 Visual Basic에서 사용할 수 있는 문자열이 아닙니다.


지정된 행에서: 지정된 파일의 컨트롤 이름이 누락되었거나 잘못되었습니다

ASCII 파일의 폼 설명에 알 수 없는 컨트롤 이름이 들어 있거나 컨트롤 이름이 Visual Basic에서 사용할 수 있는 문자열이 아닙니다.


지정된 행에서: 라이센스를 찾을 수 없으므로 지정된 컨트롤을 로드할 수 없습니다

텍스트 파일에서 폼, User Control, User Document, Property Page를 로드하는 중에는 ActiveX 컨트롤을 만들 수 없습니다. 컨트롤이 없어졌거나 손상되었을 수 있습니다. 컨트롤을 다시 설치한 후에 시도하십시오. 이 메시지는 오류 로그 파일에 기록됩니다.


지정된 행에서: 지정된 CLSID는 잘못되었습니다

텍스트 파일에서 Form, User Control, User Document, Property Page를 로드하는 중에는 개체를 로드할 수 없습니다. 파일에 지정된 CLSID가 유효하지 않습니다. Font 개체와 같은 속성인 개체에만 적용됩니다. 이 메시지는 오류 로그 파일에 기록됩니다.


지정된 항목에 참조를 작성할 수 없습니다

파일을 로드하는 중에 참조를 생성하다가 오류가 발생하였습니다. 그러므로 참조는 추가되지 않았습니다.


지정된 항목을 로드할 수 없습니다. 이미 사용 중인 이름입니다

지정된 종류의 두 항목을 동시에 로드할 수 없습니다.


ChDir 문 예제

아래 예제에서는 ChDir 문을 사용하여 현재 디렉터리나 폴더를 변경합니다.

' 현재 디렉터리나 폴더를 "MYDIR"로 변경합니다.

ChDir "MYDIR"

' "C:"가 현재 드라이브라고 가정합니다. 다음 문을 변경합니다.

' 드라이브 "D:"에 기본 값 디렉터리. "C:"가 현재 드라이브로 남아 있습니다.

ChDir "D:\WINDOWS\SYSTEM"


ChDrive 문 예제

아래 예제에서는 ChDrive 문을 사용하여 현재 드라이브를 변경합니다.

ChDrive "D"	' "D"를 현재 드라이브로 만듭니다.


CurDir 함수 예제

아래 예제에서는 CurDir 함수를 사용하여 현재 경로를 반환합니다.

' C 드라이브에 현재 경로는 "C:\WINDOWS\SYSTEM"로 가정합니다.

' D 드라이브에 현재 경로는 "D:\EXCEL"로 가정합니다.

' C가 현재 드라이브라고 가정합니다.

Dim MyPath

MyPath = CurDir	' "C:\WINDOWS\SYSTEM"을 반환합니다.

MyPath = CurDir("C")	' "C:\WINDOWS\SYSTEM"을 반환합니다.

MyPath = CurDir("D")	' "D:\EXCEL"을 반환합니다.


Dir 함수 예제

아래 예제에서는 Dir 함수를 사용하여 어떤 파일과 디렉터리가 존재하는지 확인합니다.

Dim MyFile, MyPath, MyName

' 만일 MyFile = Dir("C:\WINDOWS\WIN.INI")이 존재하면 "WIN.INI"를 반환합니다.

' 지정된 확장자로 파일 이름을 반환합니다. 둘 이상의 *.ini 파일이 존재하면, 찾은 첫번째 파일을 반환합니다.

MyFile = Dir("C:\WINDOWS\*.INI")

' 같은 디렉터리에서 그 다음 *.INI 파일을 반환할 인수 없이 Dir을 다시 호출합니다.

MyFile = Dir

' 숨겨진(hidden) 속성을 가진 *.TXT 파일을 먼저 반환합니다.

MyFile = Dir("*.TXT", vbHidden)

' 디렉터리를 나타내는 C:\에서 이름을 표시합니다.

MyPath = "c:\"	' 경로를 설정합니다.

MyName = Dir(MyPath, vbDirectory)	' 첫번째 항목을 검색합니다.

Do While MyName <> ""	' 루프(loop)를 시작합니다.

' 현재 디렉터리와 포함하는 디렉터리를 무시합니다.

If MyName <> "." And MyName <> ".." Then

' MyName이 디렉터리인지 확인하기 위해서 비트 비교를 합니다.

If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then

Debug.Print MyName	' 항목만 표시합니다.

End If	' 그것은 디렉터리를 표시합니다.

End If

MyName = Dir	' 다음 항목을 읽어들입니다.

Loop


Environ 함수 예제

아래 예제에서는 Environ 함수를 사용하여 환경 문자열 표에서 입력 번호와 PATH 문의 길이를 지원합니다.

Dim EnvString, Indx, Msg, PathLen	' 변수를 선언합니다.

Indx = 1	' 1로 인덱스를 초기화합니다.

Do

EnvString = Environ(Indx)	' 환경 변수를 읽어들입니다.

If Left(EnvString, 5) = "PATH=" Then	' PATH 항목을 확인합니다.

PathLen = Len(Environ("PATH"))	' 길이를 읽어들입니다.

Msg = "PATH entry = " & Indx & " and length = " & PathLen

Exit Do

Else

Indx = Indx + 1	' PATH 항목이 아닙니다.,

End If	' 증가.

Loop Until EnvString = ""

If PathLen > 0 Then

MsgBox Msg	' 메시지를 표시합니다.

Else

MsgBox "No PATH environment variable exists."

End If


FileCopy 문 예제

아래 예제에서는 FileCopy 문을 사용하여 하나의 파일을 다른 파일로 복사합니다. 이 예제에서는 SRCFILE이 일부 데이터를 포함하는 파일이라고 가정합니다.

Dim SourceFile, DestinationFile

SourceFile = "SRCFILE"	' 원본 파일 이름을 정의합니다.

DestinationFile = "DESTFILE"	' 대상 파일 이름을 정의합니다.

FileCopy SourceFile, DestinationFile	' 원본을 대상에 복사합니다.


FileDateTime 함수 예제

아래 예제에서는 FileDateTime 함수를 사용하여 파일이 만들어졌거나 최근 수정된 날짜와 시간을 결정합니다. 나타내는 날짜와 시간의 유형은 사용자 시스템의 국가별 설정값에 기초합니다.

Dim MyStamp

' TESTFILE이 February 12, 1993 4:35:47 PM에 마지막 수정되었다고 가정합니다.

' 영국/미국 지역 설정을 가정합니다.

MyStamp = FileDateTime("TESTFILE")	' "2/12/93 4:35:47 PM"을 반환합니다.


FileLen 함수 예제

아래 예제에서는 FileLen 함수를 사용하여 바이트 단위의 파일 길이를 반환합니다. 이 예제에서는 TESTFILE이 일부 데이터를 포함하는 파일이라고 가정합니다.

Dim MySize

MySize = FileLen("TESTFILE")	' 파일 길이(바이트)를 반환합니다.


GetAttr 함수 예제

아래 예제에서는 GetAttr 함수를 사용하여 파일과 디렉터리나 폴더의 속성을 결정합니다.

Dim MyAttr

' 파일 TESTFILE이 숨겨진 속성 설정을 가지고 있음을 가정합니다.

MyAttr = GetAttr("TESTFILE")	' 2를 반환합니다.

' 숨겨진 속성이 TESTFILE에 설정되면 0이 아닌 값을 반환합니다.

Debug.Print MyAttr And vbHidden

' 파일 TESTFILE이 숨겨진 속성과 읽기 전용 속성 설정을 가지고 있음을 가정합니다.

MyAttr = GetAttr("TESTFILE")	' 3을 반환합니다.

' 숨겨진 속성이 TESTFILE에 설정되면 0이 아닌 값을 반환합니다.

Debug.Print MyAttr And (vbHidden + vbReadOnly)

' MYDIR이 디렉터리나 폴더라고 가정합니다.

MyAttr = GetAttr("MYDIR")	' 16을 반환합니다.


Kill 문 예제

아래 예제에서는 Kill 문을 사용하여 디스크에서 파일을 삭제합니다.

' TESTFILE이 몇개의 데이터를 포함하고 있는 파일이라고 가정합니다.

Kill "TestFile"	' 파일을 삭제합니다.

' 현재 디렉터리에 모든 *.TXT 파일을 삭제합니다.

Kill "*.TXT"


MkDir 문 예제

아래 예제에서는 MkDir 문을 사용하여 디렉터리나 폴더를 만듭니다. 드라이브가 지정되어 있지 않으면 새 디렉터리나 폴더가 현재 드라이브에 만들어집니다.

MkDir "MYDIR"	' 새 디렉터리나 폴더를 만드십시요.


Name 문 예제

아래 예제에서는 Name 문을 사용하여 파일의 이름을 바꿉니다. 이 예제에서는 지정된 디렉터리나 폴더가 이미 존재한다고 가정합니다.

Dim OldName, NewName

OldName = "OLDFILE": NewName = "NEWFILE"	' 파일 이름을 정의합니다.

Name OldName As NewName	' 파일 이름을 변경합니다.

OldName = "C:\MYDIR\OLDFILE": NewName = "C:\YOURDIR\NEWFILE"

Name OldName As NewName	' 파일을 이동하고 이름을 변경합니다.


QBColor 함수 예제

아래 예제에서는 QBColor 함수를 사용하여 ColorCode에 의해 지시된 색으로 MyForm으로서 전달되는 폼의 BackColor 속성을 변경합니다. QBColor는 0 에서 15 사이의 정수값을 허용합니다.

Sub ChangeBackColor (ColorCode As Integer, MyForm As Form)

MyForm.BackColor = QBColor(ColorCode)

End Sub


RGB 함수 예제

아래 예제에서는 어떻게 RGB 함수가 사용되어 RGB 색 값을 나타내는 모든 숫자를 반환하는지 보여줍니다. 색 지정을 허용하는 것은 응용 프로그램 메서드와 속성에 사용됩니다. 개체 MyObject와 그 속성은 설명 목적으로만 사용됩니다. 만일 MyObject가 존재하지 않거나 색 속성을 갖고 있지 않다면 오류가 발생합니다.

Dim RED, I, RGBValue, MyObject

Red = RGB(255, 0, 0)	' 빨강에 대한 값을 반환합니다.

I = 75	' 오프셋을 초기화합니다.

RGBValue = RGB(I, 64 + I, 128 + I) 	' RGB(75, 139, 203)와 같습니다.

MyObject.Color = RGB(255, 0, 0)	' 빨강에 MyObject의 색 속성을 설정합니다.


RmDir 문 예제

아래 예제에서는 RmDir 문을 사용하여 존재하는 디렉터리나 폴더를 제거합니다.

' MYDIR가 빈 디렉터리나 폴더라고 가정합니다.

RmDir "MYDIR"	' MYDIR를 삭제합니다.


SetAttr 문 예제

아래 예제에서는 SetAttr 문을 사용하여 파일에 대한 속성을 지정합니다.

SetAttr "TESTFILE", vbHidden	' 숨겨진 속성을 설정합니다.

SetAttr "TESTFILE", vbHidden + vbReadOnly	' 숨겨진 속성과 읽기 전용 속성을 설정합니다.


ChDir 문

현재 디렉터리나 폴더를 변경합니다.

구문

ChDir path

필수적인 요소인 path 인수는 어떤 디렉터리나 폴더가 새로운 기본 디렉터리나 폴더가 되는지를 식별하는 문자식입니다. 이 path에는 드라이브 이름이 포함될 수 있으며, 드라이브를 지정하지 않으면 ChDir은 현재 드라이브의 기본 디렉터리나 폴더를 변경합니다.

참고

ChDir 문은 기본 디렉터리를 변경하지만 기본 드라이브를 변경하지는 않습니다. 예를 들어 다음 예제에서 기본 드라이브가 C라면, 드라이브 D의 기본 디렉터리로 변경되지만 C는 그대로 기본 드라이브로 남아 있게 됩니다.

ChDir "D:\TMP"

Power 매킨토시에서 기본 드라이브는 언제나 path에 지정된 드라이브로 변경됩니다. 완전한 경로 정보는 볼륨 이름으로 시작하고 상대적 경로는 콜론(:)으로 시작합니다. ChDir 함수는 경로에 지정된 별칭을 경로에서 해석합니다.

ChDir "MacDrive:Tmp"	' 매킨토시의 경우

상대적 디렉터리를 변경하면 Microsoft Windows와 매킨토시에서 다른 기호가 사용됩니다.

ChDir ".."	' Microsoft Windows에서는 상위 디렉터리로 이동합니다.

ChDir "::"	' 매킨토시에서는 상위 디렉터리로 이동합니다.


ChDrive 문

현재 드라이브를 변경합니다.

구문

ChDrive drive

필수적인 요소인 drive 인수는 존재하는 드라이브를 지정하는 문자식입니다. 길이가 0인 문자열("")을 사용하면 현재 드라이브가 변경되지 않습니다. drive 인수가 다중 문자열이면 ChDrive는 첫째 문자만을 사용합니다.

매킨토시에서 ChDrive 함수는 현재 폴더를 지정된 드라이브의 루트 폴더로 변경합니다.


CurDir 함수

현재 경로를 나타내는 Variant(String)를 반환합니다.

구문

CurDir[(drive)]

선택적인 요소인 drive 인수는 기존 드라이브를 지정하는 문자식입니다. 드라이브를 지정하지 않았거나 drive가 길이가 0인 문자열("")이면 CurDir 함수는 현재 드라이브의 경로를 반환합니다. 매킨토시에서 CurDir 함수는 지정된 drive를 무시하고 단순히 현재 드라이브의 경로를 반환합니다.


Dir 함수

지정한 패턴이나 파일 속성, 또는 드라이브 볼륨 레이블과 일치하는 파일, 디렉터리, 폴더 이름을 나타내는 String을 반환합니다.

구문

Dir[(pathname[, attributes])]

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

구성 요소	설명
pathname	선택적인 요소. 파일 이름을 지정하는 문자식이며, 디렉터리나 폴더, 드라이브가 포함될 수 있습니다. pathname을 찾지 못하면 길이가 0인 문자열("")을 반환합니다.
attributes	선택적인 요소. 상수 또는 수식이 되며, 그 합은 파일 속성을 지정합니다. attributes 인수가 생략되면 pathname과 일치하는 파일을 반환하지만 속성은 갖지 않습니다.
설정

attributes 인수는 다음과 같이 설정되어 있습니다.

상수	값	설명
vbNormal	0	속성이 없는 일반적인 파일을 지정합니다.(기본값).
vbReadOnly	1	읽기 전용 파일 속성을 지정합니다.
vbHidden	2	숨김 파일 속성을 지정합니다.
vbSystem	4	시스템 파일 속성을 지정합니다.
vbVolume	8	볼륨 레이블. 다른 속성이 지정되면 vbVolume 속성은 무시됩니다. 매킨토시에서는 사용할 수 없습니다.
vbDirectory	16	디렉터리나 폴더를 지정합니다.
vbAlias	64	지정된 파일 이름이 별칭입니다. 매킨토시에서만 사용할 수 있습니다.
메모   Visual Basic으로 이러한 상수들을 지정하며 코드에서 실제값 대신에 사용할 수 있습니다.

참고

Microsoft Windows에서 Dir 함수는 여러 파일을 지정하는 다중 문자 와일드카드(*) 문자와 단일 문자 와일드카드(?)의 사용을 지원합니다. 하지만 매킨토시에서 이 문자는 유효한 파일 이름 문자로 간주되고 여러 파일을 지정하는 와일드카드 문자로 사용할 수 없습니다.

매킨토시에서는 와일드카드 문자를 사용할 수 없기 때문에 파일 형식을 사용하여 파일 그룹을 식별합니다. 파일 이름을 사용하지 않고 MacID 함수를 사용하여 파일 형식을 지정할 수 있습니다. 예를 들어 다음은 현재 폴더에 있는 첫 텍스트 파일 이름을 반환하는 예입니다.

Dir("SomePath", MacID("TEXT"))

폴더의 모든 파일을 언급하려면 비어있는 문자열을 지정합니다.

Dir("")

Microsoft Windows에서 Dir 함수와 함께 MacID 함수를 사용하면 오류가 발생합니다.

256 보다 큰 attribute 값은 MacID 값으로 간주합니다.

Dir 함수를 처음 호출할 때 pathname을 지정해야 하고 그렇지 않으면 오류가 발생합니다. 파일 특성도 지정하려면 pathname을 반드시 포함시켜야 합니다.

Dir 함수는 pathname과 일치하는 첫째 파일 이름을 반환합니다. pathname과 일치하는 다른 추가적인 파일 이름을 가져오려면 Dir 함수를 인수없이 다시 호출하십시오. 일치하는 파일 이름이 없으면 Dir 함수는 길이가 0인 문자열("")을 반환합니다. 일단 길이가 0인 문자열이 반환되면 이후 호출에서는 pathname을 지정해야 하고, 그렇지 않으면 오류가 발생합니다. 현재 pathname과 일치하는 모든 파일 이름을 검색하지 않고 새 pathname 을 변경할 수 있습니다. 하지만 Dir 함수를 순환적으로 호출할 수는 없습니다. vbDirectory 특성과 Dir 함수를 함께 호출하면 연속적으로 하위 디렉터리를 반환하지 않습니다.

팁   파일 이름을 특별한 순서없이 검색했으므로 반환된 파일을 배열에 저장한 다음 배열을 정렬할 수 있습니다.


Environ 함수

운영 체제 환경 변수와 관련된 String을 반환합니다. 매킨토시에서는 사용할 수 없습니다.

구문

Environ({envstring | number})

Environ 함수 구문은 다음과 같이 명명된 인수로 구성되어 있습니다.

구성 요소	설명
envstring	선택적인 요소. 환경 변수 이름이 들어  있는 문자식입니다.
number	선택적인 요소. 환경 문자열 테이블의 환경 문자열 순서에 대응하는 수식입니다. number 인수는 수식이 될 수 있지만 평가하기 전에 정수로 반올림합니다.
참고

환경 문자열 표에 envstring이 없으면 길이가 0인 문자열("")이 반환됩니다. 환경 문자열 표에 envstring이 존재하면 Environ 함수는 지정된 envstring에 할당된 텍스트, 즉 그 환경 변수에 대해 환경 문자열 표의 등호(=) 다음에 오는 텍스트를 반환합니다.

number를 지정하면 환경 문자열 표에서 그 수가 가리키는 위치의 문자열을 반환합니다. 이 경우에 Environ 함수는  envstring을 포함하여 텍스트 모두를 반환합니다. 지정된 위치에 환경 문자열이 존재하지 않으면 Environ 함수는 길이가 0인 문자열을 반환합니다.


FileCopy 문

파일을 복사합니다.

구문

FileCopy source, destination

FileCopy 문은 다음과 같이 명명된 인수로 구성되어 있습니다.

구성 요소	설명
source	필수적인 요소. 복사할 파일 이름을 지정하는 문자식입니다. source에는 디렉터리나 폴더, 드라이브가 포함될 수 있습니다.
destination	필수적인 요소. 대상 파일 이름을 지정하는 문자식입니다. destination에는 디렉터리나 폴더, 드라이브가 포함될 수 있습니다.
참고

FileCopy 문을 사용하여 현재 열려 있는 파일을 복사하려고 시도하면 오류가 발생합니다.


FileDateTime 함수

파일이 생성되거나 마지막으로 수정된 날짜와 시간을 나타내는 Variant(Date)를 반환합니다.

구문

FileDateTime(pathname)

필수적인 요소인 pathname 인수는 파일 이름을 지정하는 문자식입니다. 이 pathname에는 디렉터리나 폴더, 드라이브가 포함될 수 있습니다.


FileLen 함수

파일 길이를 바이트 수로 지정하는 Long을 반환합니다.

구문

FileLen(pathname)

필수적인 요소인 pathname 인수는 파일을 지정하는 문자식입니다. 이 pathname에는 디렉터리나 폴더, 드라이브가 포함될 수 있습니다.

참고

FileLen  함수를 호출할 때 지정된 파일이 열려 있으면 반환되는 값은 그 파일을 열기 전의 파일 크기를 나타냅니다.

메모   열려 있는 파일의 길이를 알아보려면 LOF 함수를 사용합니다.


GetAttr 함수

파일, 디렉터리나 폴더 속성을 나타내는 Integer를 반환합니다.

구문

GetAttr(pathname)

필수적인 요소인 pathname 인수는 파일 이름을 지정하는 문자식입니다. 이 pathname에는 디렉터리나 폴더, 드라이브가 포함될 수 있습니다.

반환값

GetAttr 함수가  반환한 값은 다음 속성값들의 합입니다.

상수	값	설명
vbNormal	0	일반적인 파일
vbReadOnly	1	읽기 전용
vbHidden	2	숨김
vbSystem	4	시스템 파일 매킨토시에서는 사용할 수 없습니다.
vbDirectory	16	디렉터리나 폴더
vbArchive	32	마지막 백업 후에 파일이 변경되었습니다. 매킨토시에서는 사용할 수 없습니다.
vbAlias	64	지정된 파일 이름이 별칭입니다. 매킨토시에서만 사용할 수 있습니다.
메모   이러한 상수들은 Visual Basic에 의해 지정됩니다. 코드에서 이 이름을 실제 값 대신 사용할 수 있습니다.

참고

어떤 속성이 설정되었는지 결정하기 위해서는 And 연산자를 사용하여 GetAttr 함수가 반환한 값과 원하는 개개의 파일 속성값을 비트 비교합니다. 결과가 0이 아니면 명명된 파일에 그 속성이 설정된 것입니다. 예를 들면 문서 속성이 설정되지 않았다면 다음 And 식의 반환값은 0이 됩니다.

Result = GetAttr(FName) And vbArchive

백업 속성이 설정되어 있다면 0이 아닌 값을 반환합니다.


Kill 문

디스크에서 파일을 삭제합니다.

구문

Kill pathname

필수적인 요소인 pathname 인수는 삭제해야 할 하나 이상의 파일 이름을 지정하는 문자식입니다. pathname에는 디렉터리, 폴더, 드라이브를 모두 포함할 수 있습니다.

참고

Microsoft Windows에서 Kill 문은 여러 파일을 지정하는 다중 문자 와일드카드(*) 문자와 단일 문자 와일드카드(?)의 사용을 지원합니다. 하지만 매킨토시에서 이 문자는 유효한 파일 이름 문자로 간주되고 여러 파일을 지정하는 와일드카드 문자로 사용할 수 없습니다.

매킨토시에서는 와일드카드 문자를 사용할 수 없기 때문에 파일 형식을 사용하여 삭제할 파일 그룹을 식별합니다. 개별 파일 이름을 되풀이해서 사용하지 않고 MacID 함수를 사용하여 파일 형식을 지정할 수 있습니다. 예를 들어 아래 문은 현재 폴더에 있는 모든 텍스트 파일을 삭제합니다.

Kill MacID("TEXT")

Microsoft Windows에서 Kill 문과 함께 MacID 함수를 사용하면 오류가 발생합니다.

Kill 문을 사용하여 열려있는 파일을 삭제하려고 시도하면 오류가 발생합니다.

메모   디렉터리를 삭제하려면 RmDir 문을 사용합니다.


MkDir 문

새 디렉터리나 폴더를 작성합니다.

구문

MkDir path

필수적인 요소인 path 인수는 작성할 디렉터리나 폴더를 식별하는 문자식입니다. 이 path에는 드라이브가 포함될 수 있습니다. 드라이브를 지정하지 않는 경우 MkDir 문은 현재 드라이브에 새 디렉터리나 폴더를 생성합니다.


Name 문

디스크 파일, 디렉터리나 폴더의 이름을 변경합니다.

구문

Name oldpathname As newpathname

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

구성 요소	설명
oldpathname	필수적인 요소. 존재하는 파일 이름과 위치를 지정하는 문자식이며, 디렉터리나 폴더, 드라이브가 포함될 수 있습니다.
newpathname	필수적인 요소. 새 파일 이름과 위치를 지정하는 문자식이며, 디렉터리나 폴더, 드라이브가 포함될 수 있습니다. newpathname으로 지정된 파일 이름은 이미 존재해서는 안됩니다.
참고

Name 문은 파일 이름을 바꾸고 필요하면 파일을 다른 디렉터리나 폴더로 옮깁니다. Name 문은 드라이브에 상관 없이 파일을 옮길 수 있지만 newpathname과 oldpathname이 동일한 드라이브에 있을 때에만 기존 디렉터리나 파일 이름을 바꿀 수 있습니다. Name 문을 사용해서 파일이나 디렉터리, 폴더를 새로 만들 수는 없습니다.

열려 있는 파일에 대하여 Name을 사용하면 오류가 발생합니다. 파일 이름을 변경하기 전에 열려 있는 파일을 닫아야 합니다. Name 인수에는 다중 문자(*) 및 단일 문자(?) 와일드카드 문자가 있어서는 안됩니다.


QBColor 함수

지정된 색 번호에 대응하는 RGB 색 코드를 나타내는 Long을 반환합니다.

구문

QBColor(color)

필수적인 요소인 color 인수는 0�15 사이인 정수입니다.

설정

color 인수는 다음과 같이 설정되어 있습니다.

번호	색	번호	색
0	검정	8	회색
1	파랑	9	연한 파랑
2	녹색	10	연한 녹색
3	청록	11	연한 청록
4	빨강	12	연한 빨강
5	자홍	13	연한 자홍
6	노랑	14	연한 노랑
7	흰색	15	밝은 흰색
참고

color 인수는 이전 버전의 Basic(MS-DOS용 Microsoft Visual Basic, Basic 컴파일러)에서 사용하던 색 값을 나타냅니다. 최하위 바이트로 시작하여 반환되는 값은 Visual Basic이 사용하던 RGB 시스템에서 적당한 색을 설정하기 위해 사용하는 빨강, 녹색, 파랑 값을 지정합니다.


RGB 함수

RGB 색 값을 나타내는 Long 형식의 정수를 반환합니다.

구문

RGB(red, green, blue)

RGB 함수 구문은 다음과 같이 명명된 인수로 구성되어 있습니다.

구성 요소	설명
red	필수적인 요소. Variant (Integer). 0-255 사이의 수로 빨강 구성 요소를 나타냅니다.
green	필수적인 요소. Variant (Integer). 0-255 사이의 수로 녹색 구성 요소를 나타냅니다.
blue	필수적인 요소. Variant (Integer). 0-255 사이의 수로 파랑 구성 요소를 나타냅니다.
참고

색 사양을 받아들이는 응용 프로그램 메서드와 속성은 RGB 색 값을 나타내는 수를 받아들입니다. RGB 색 값은 빨강, 녹색, 파랑의 상대 농도를 지정하여 특정 색을 표시합니다.

RGB에 대해 255를 초과하는 인수의 값은 255로 간주합니다.

다음 표는 일부 표준색과 그 색에 들어 있는 빨강, 녹색, 파랑 값을 나열합니다.

색	빨강 값	녹색 값	파랑 값
검정	0	0	0
파랑	0	0	255
녹색	0	255	0
청록	0	255	255
빨강	255	0	0
자홍	255	0	255
노랑	255	255	0
흰색	255	255	255
이 함수에 의해 반환된 RGB 색 값은 매킨토시 운영 체제에서 사용하는 RGB 색 값과 호환되지 않습니다. 이 값은 매킨토시용 Microsoft 응용 프로그램 구문에서만 사용될 수 있습니다. 그러나 색 전달이 매킨토시 운영 체제를 직접 변경하는 경우에는 이 함수를 사용할 수 없습니다.


RmDir 문

기존의 디렉터리나 폴더를 삭제합니다.

구문

RmDir path

필수적인 요소인 path 인수는 삭제할 디렉터리나 폴더를 식별하는 문자식입니다. path에는 드라이브가 포함될 수 있으며, 드라이브를 지정하지 않으면 RmDir은 현재 드라이브의 디렉터리나 폴더를 삭제합니다.

참고

파일이 들어 있는 디렉터리나 폴더에서 RmDir를 사용하려 하면 오류가 발생합니다. 디렉터리나 폴더를 삭제하기 전에 먼저 Kill 문으로 모든 파일들을 삭제하십시오.


SetAttr 문

파일의 속성 정보를 설정합니다.

구문

SetAttr pathname, attributes

SetAttr 문은 다음과 같이 명명된 인수로 구성되어 있습니다.

구성 요소	설명
pathname	필수적인 요소. 파일 이름을 지정하는 문자식입니다. 디렉터리나 폴더, 드라이브가 포함될 수 있습니다.
attributes	필수적인 요소. 상수 또는 수식으로 그 합이 파일 속성을 지정합니다.
설정

attributes 인수는 다음과 같이 설정되어 있습니다.

상수	값	설명
vbNormal	0	표준(기본값)
vbReadOnly	1	읽기 전용
vbHidden	2	숨김
vbSystem	4	시스템 파일 매킨토시에서는 사용할 수 없습니다.
vbArchive	32	마지막 백업 후에 파일이 변경되었습니다.
vbAlias	64	지정된 파일 이름은 별칭입니다. 매킨토시에서만 사용할 수 있습니다.
메모   Visual Basic에서 이러한 상수들을 지정합니다. 코드에서 이 이름을 실제 값 대신 사용할 수 있습니다.

참고

열려 있는 파일의 속성을 설정하려고 시도하면 런타임 오류가 발생합니다.


Close 문 예제

아래 예제에서는 Output 용으로 열려진 세 가지 파일 모두를 닫기 위해 Close 문을 사용합니다.

Dim I, FileName

For I = 1 To 3	' 3회 반복합니다.

FileName = "TEST" & I	' 파일 이름을 작성합니다.

Open FileName For Output As #I	' 파일을 엽니다.

Print #I, "This is a test."	' 문자열을 파일에 기록합니다.

Next I

Close	' 세 개의 열려있는 파일을 모두 닫습니다.


EOF 함수 예제

아래 예제에서는 파일의 끝을 찾아내기 위해 EOF 함수를 사용합니다. 이 예제에서 MYFILE은 여러 행에 걸친 문자열로 이루어진 텍스트 파일이라고 가정합니다.

Dim InputData

Open "MYFILE" For Input As #1	' 입력을 위해 파일을 엽니다.

Do While Not EOF(1)	' 파일의 끝을 확인합니다.

Line Input #1, InputData	' 데이터 행을 읽어 들입니다.

Debug.Print InputData	' 직접 실행 창에 인쇄합니다.

Loop

Close #1	' 파일을 닫습니다.


FileAttr 함수 예제

아래 예제에서는 열려 있는 파일의 파일 모드와 파일 핸들을 반환하기 위해 FileAttr 함수를 사용합니다. 파일 핸들은 16비트 시스템에서만 반환됩니다. 32비트 시스템에서 2를 둘째 인수로 전달하면 오류가 발생합니다.

Dim FileNum, Mode, Handle

FileNum = 1	' 파일 번호를 지정합니다.

Open "TESTFILE" For Append As FileNum	' 파일을 엽니다.

Mode = FileAttr(FileNum, 1)	' 8을 반환합니다. Append 파일 모드입니다.

Handle = FileAttr(FileNum, 2)	' 파일 핸들을 반환합니다.

Close FileNum	' 파일을 닫습니다.


FreeFile 함수 예제

아래 예제에서는 다음으로 사용 가능한 파일 번호를 반환하기 위해 FreeFile 함수를 사용합니다. 루프 내에는 출력용으로 다섯 개의 파일이 열리며 각각의 파일에는 몇 가지 예제 데이터가 작성됩니다.

Dim MyIndex, FileNumber

For MyIndex = 1 To 5	' 5회 반복합니다.

FileNumber = FreeFile	' 사용하지 않은 파일

' 번호를 가져옵니다.

Open "TEST" & MyIndex For Output As #FileNumber	' 파일 이름을 작성합니다.

Write #FileNumber, "This is a sample."	' 출력 텍스트입니다.

Close #FileNumber	' 파일을 닫습니다.

Next MyIndex


Get 문 예제

아래 예제에서는 파일로부터 변수를 읽어들이기 위해 Get 문을 사용합니다. 이 예제에서 TESTFILE은 사용자 정의 형식인 Record 형으로 된 다섯 개의 레코드를 포함하는 파일로 가정합니다.

Type Record	' 사용자 정의 형식을 정의합니다.

ID As Integer

Name As String * 20

End Type

Dim MyRecord As Record, Position	' 변수를 선언합니다.

' 랜덤 엑세스를 위한 예제 파일을 엽니다.

Open "TESTFILE" For Random As #1 Len = Len(MyRecord)

' Get문을 사용하여 예제 파일을 읽습니다.

Position = 3	' 레코드 번호를 정의합니다.

Get #1, Position, MyRecord	' 셋째 레코드를 읽습니다.

Close #1	' 파일을 닫습니다.


Input # 문 예제

아래 예제에서는 파일로부터 두 개의 변수를 읽어들이기 위해 Input # 문을 사용합니다. 이 예제에서 TESTFILE은 Write # 문을 사용해 작성된 수 행의 데이터를 가진 파일로 가정합니다. 즉, 각 행에는 따옴표로 둘러싸인 문자열과 쉼표로 구분되는 숫자를 포함하고 있습니다. 예를 들면 "Hello", 234와 같습니다.

Dim MyString, MyNumber

Open "TESTFILE" For Input As #1	' 입력을 위해 파일을 엽니다.

Do While Not EOF(1)	' 파일의 끝까지 반복합니다.

Input #1, MyString, MyNumber	' 데이터를 두 변수에 읽어들입니다.

Debug.Print MyString, MyNumber	' 직접 입력 창에 데이터를 인쇄합니다.

Loop

Close #1	' 파일을 닫습니다.


Input 함수 예제

아래 예제에서는 파일로부터 한번에 하나의 문자를 읽어와 직접 실행 창에 출력하기 위해 Input 함수를 사용합니다. 이 예제에서 TESTFILE은 여러 행에 걸친 예제 데이터를 가진 텍스트 파일로 가정합니다.

Dim MyChar

Open "TESTFILE" For Input As #1	' 파일을 엽니다.

Do While Not EOF(1)	' 파일의 끝을 만날 때까지 반복합니다.

MyChar = Input(1, #1)	' 한 문자를 가져옵니다.

Debug.Print MyChar	' 직접 실행 창에 인쇄합니다.

Loop

Close #1	' 파일을 닫습니다.


Line Input # 문 예제

아래 예제에서는 순차 파일로부터 한 행을 읽어들여 변수에 지정하기 위해 Line Input # 문을 사용합니다. 이 예제에서 TESTFILE은 여러 행에 걸친 예제 데이터를 가진 텍스트 파일로 가정합니다.

Dim TextLine

Open "TESTFILE" For Input As #1	' 파일을 엽니다.

Do While Not EOF(1)	' 파일의 끝을 만날 때까지 반복합니다.

Line Input #1, TextLine	' 변수로 데이터 행을 읽어들입니다.

Debug.Print TextLine	' 직접 실행 창에 출력합니다.

Loop

Close #1	' 파일을 닫습니다.


Loc 함수 예제

아래 예제에서는 열려진 파일 내에 현재 읽기/쓰기 위치를 반환하기 위해 Loc 함수를 사용합니다. 이 예제에서 TESTFILE은 여러 행에 걸친 예제 데이터를 가진 텍스트 파일로 가정합니다.

Dim MyLocation, MyLine

Open "TESTFILE" For Binary As #1	' 방금 작성된 파일을 엽니다.

Do While MyLocation < LOF(1)	' 파일의 끝을 만날 때까지 반복합니다.

MyLine = MyLine & Input(1, #1)	' 문자를 변수로 읽어들입니다.

MyLocation = Loc(1)	' 파일 안의 현재 위치를 가져옵니다.

' 직접 실행 창에 인쇄합니다.

Debug.Print MyLine; Tab; MyLocation

Loop

Close #1	' 파일을 닫습니다.


Lock, Unlock 문 예제

아래 예제에서는 Lock과 Unlock 문을 사용하는 방법을 보여줍니다. 레코드가 수정되는 동안 그 레코드에 대한 다른 프로세스의 액세스은 허용되지 않습니다. 이 예제에서 TESTFILE은 사용자 정의 형식인 Record 형으로 된 다섯 개의 레코드를 포함하는 파일로 가정합니다.

Type Record	' 사용자 정의 형식을 정의합니다.

ID As Integer

Name As String * 20

End Type

Dim MyRecord As Record, RecordNumber	' 변수를 선언합니다.

' Open sample file for random access.

Open "TESTFILE" For Random Shared As #1 Len = Len(MyRecord)

RecordNumber = 4	' 레코드 번호를 정의합니다.

Lock #1, RecordNumber	' 레코드를 잠급니다.

Get #1, RecordNumber, MyRecord	' 레코드를 읽습니다.

MyRecord.ID = 234	' 레코드를 수정합니다.

MyRecord.Name = "John Smith"

Put #1, RecordNumber, MyRecord	' 수정된 레코드를 출력합니다.

Unlock #1, RecordNumber	' 현제 레코드의 잠금을 해제합니다.

Close #1	' 파일을 닫습니다.


LOF 함수 예제

아래 예제에서는 열려진 파일의 크기를 결정하기 위해 LOF 함수를 사용합니다. 이 예제에서 TESTFILE은 예제 데이터를 포함하고 있는 텍스트 파일로 가정합니다.

Dim FileLength

Open "TESTFILE" For Input As #1	' 파일을 엽니다.

FileLength = LOF(1)	' 파일의 길이를 구합니다.

Close #1	' 파일을 닫습니다.


Open 문 예제

아래 예제에서는 파일의 입출력이 가능하도록 하기 위하여 Open 문을 사용하는 다양한 방법을 보여줍니다.

다음 코드는 TESTFILE 파일을 순차-입력 모드로 엽니다.

Open "TESTFILE" For Input As #1

' 파일을 다른 모드로 다시 열기 전에 닫습니다.

Close #1

다음 예제에서는 쓰기 작업만을 위해 이진 모드로 파일을 엽니다.

Open "TESTFILE" For Binary Access Write As #1

' 파일을 다른 모드로 다시 열기 전에 닫습니다.

Close #1

다음 예제에서는 랜덤 모드로 파일을 엽니다. 파일에는 사용자 정의 형식인 Record 형으로 된 레코드를 포함하고 있습니다.

Type Record	' 사용자 정의 형식을 정의합니다.

ID As Integer

Name As String * 20

End Type

Dim MyRecord As Record	' 변수를 선언합니다.

Open "TESTFILE" For Random As #1 Len = Len(MyRecord)

' 파일을 다른 모드로 다시 열기 전에 닫습니다.

Close #1

이 예제 코드에서는 순차 출력용으로 파일을 열어 어떤 프로세스에서도 파일에 읽기나 쓰기를 할 수 있습니다.

Open "TESTFILE" For Output Shared As #1

' 파일을 다른 모드로 다시 열기 전에 닫습니다.

Close #1

이 예제 코드에서는 이진 모드로 읽기 위해 파일을 엽니다. 다른 프로세스는 이 파일을 읽을 수 없습니다.

Open "TESTFILE" For Binary Access Read Lock Read As #1


Print # 문 예제

아래 예제에서는 파일에 데이터를 쓰기 위해 Print # 문을 사용합니다.

Open "TESTFILE" For Output As #1	' 출력을 위해 파일을 엽니다.

Print #1, "This is a test"	' 텍스트를 파일에 출력합니다.

Print #1,	' 파일에 공란을 출력합니다.

Print #1, "Zone 1"; Tab ; "Zone 2"	' 두 인쇄 영역에 출력합니다.

Print #1, "Hello" ; " " ; "World"	' 문자열을 공백으로 구분합니다.

Print #1, Spc(5) ; "5 leading spaces "	' 5개의 공백으로 문자열을 구분합니다.

Print #1, Tab(10) ; "Hello"	' 10열에 단어를 인쇄합니다.

' Boolean, Date, Null과 Error 값을 할당합니다.

Dim MyBool, MyDate, MyNull, MyError

MyBool = False : MyDate = #February 12, 1969# : MyNull = Null

MyError = CVErr(32767)

' True, False, Null과 Error 시스템 설정에 따라 번역합니다.

' 날짜 문자열은 표준 약식 날짜 형식을 사용하여 적습니다.

Print #1, MyBool ; " is a Boolean value"

Print #1, MyDate ; " is a date"

Print #1, MyNull ; " is a null value"

Print #1, MyError ; " is an error value"

Close #1	' 파일을 닫습니다.


Put 문 예제

아래 예제에서는 파일에 데이터를 쓰기 위해 Put 문을 사용합니다. 사용자 정의 형식인 레코드(Record)형으로 된 다섯 개의 레코드가 파일에 작성됩니다.

Type Record	' 사용자 정의 형식입니다.

ID As Integer

Name As String * 20

End Type

Dim MyRecord As Record, RecordNumber	' 변수를 선언합니다.

' 임의적인 액세스를 위해서 파일을 엽니다.

Open "TESTFILE" For Random As #1 Len = Len(MyRecord)

For RecordNumber = 1 To 5	' 5회 반복합니다.

MyRecord.ID = RecordNumber	' ID를 정의합니다.

MyRecord.Name = "My Name" & RecordNumber	' 문자열을 기록합니다.

Put #1, RecordNumber, MyRecord	' 레코드를 파일에 기록합니다.

Next RecordNumber

Close #1	' 파일을 닫습니다.


Reset 문 예제

아래 예제에서는 열려진 모든 파일을 닫고 모든 파일 버퍼의 내용을 디스크에 작성하기 위해 Reset 문을 사용합니다. 문자열과 숫자 양쪽으로 Variant 변수 FileNumber를 사용하는 점에 주의하도록 합니다.

Dim FileNumber

For FileNumber = 1 To 5	' 5회 반복합니다.

' 출력을 위해 파일을 엽니다. 파일 번호는 #에 따라 나오는 번호를 파일 이름을 위한 문자열 TEST

' 안에 연속하여 기록합니다.

Open "TEST" & FileNumber For Output As #FileNumber

Write #FileNumber, "Hello World"	' 데이터를 파일에 기록합니다.

Next FileNumber

Reset	' 파일을 닫고 버퍼의 내용을 디스크에 기록합니다.


Seek 함수 예제

아래 예제에서는 현재 파일 위치를 반환하기 위해 Seek 함수를 사용합니다. 이 예제에서 TESTFILE은 사용자 정의 형식인 레코드(Record)형으로 된 레코드를 포함하는 파일로 가정합니다.

Type Record	' 사용자 정의 형식을 정의합니다.

ID As Integer

Name As String * 20

End Type

랜덤 모드로 열려진 파일에 대해서 Seek는 다음 레코드 번호를 반환합니다.

Dim MyRecord As Record	' 변수를 선언합니다.

Open "TESTFILE" For Random As #1 Len = Len(MyRecord)

Do While Not EOF(1)	' 파일의 끝을 만날 때까지 반복합니다.

Get #1, , MyRecord	' 다음 레코드를 읽습니다.

Debug.Print Seek(1)	' 직접 실행 창에 레코드 번호를 인쇄합니다.

Loop

Close #1	' 파일을 닫습니다.

Random 모드 이외의 다른 모드로 열려진 파일에 대해서는 Seek 함수는 다음 동작이 일어날 바이트 위치를 반환합니다. TESTFILE은 수 행의 문자열을 포함한 파일로 가정합니다.

Dim MyChar

Open "TESTFILE" For Input As #1	' 입력을 위해 파일을 엽니다.

Do While Not EOF(1)	' 파일의 끝까지 반복합니다.

MyChar = Input(1, #1)	' 데이터의 다음 문자를 읽어들입니다.

Debug.Print Seek(1)	' 직접 실행 창에 바이트 위치를 출력합니다.

Loop

Close #1	' 파일을 닫습니다.


Seek 문 예제

아래 예제에서는 파일 내에서 다음의 읽기나 쓰기 위치를 설정하기 위해 Seek 문을 사용합니다. 이 예제에서 TESTFILE은 사용자 정의 형식인 레코드(Record)형으로 된 레코드를 포함하는 파일로 가정합니다.

Type Record	' 사용자 정의 형식을 정의합니다.

ID As Integer

Name As String * 20

End Type

Random 모드로 열려진 파일에 대해서 Seek 문은  다음과 같은 레코드를 설정합니다.

Dim MyRecord As Record, MaxSize, RecordNumber	' Declare variables.

' 랜덤 파일 모드로 파일을 엽니다.

Open "TESTFILE" For Random As #1 Len = Len(MyRecord)

MaxSize = LOF(1) \ Len(MyRecord)	' 파일 안의 레코드 숫자를 구합니다.

' 루프를 실행하여 레코드의 처음부터 끝까지 모두 읽어들입니다.

For RecordNumber = MaxSize To 1 Step - 1

Seek #1, RecordNumber	' 위치를 설정합니다.

Get #1, , MyRecord	' 레코드를 읽습니다.

Next RecordNumber

Close #1	' 파일을 닫습니다.

Random 모드 이외의 다른 모드로 열려진 파일에 대해서는 Seek 함수는  다음 동작이 일어날 바이트 위치를 설정합니다. TESTFILE은 여러 행의 문자열을 포함한 파일로 가정합니다.

Dim MaxSize, NextChar, MyChar

Open "TESTFILE" For Input As #1	' 입력을 위해 파일을 엽니다.

MaxSize = LOF(1)	' 파일의 바이트 크기를 구합니다.

' 루프를 실행하여 레코드의 처음부터 끝까지 모두 읽어들입니다.

For NextChar = MaxSize To 1 Step -1

Seek #1, NextChar	' 위치를 설정합니다.

MyChar = Input(1, #1)	' 문자를 읽습니다.

Next NextChar

Close #1	' 파일을 닫습니다.


Spc 함수 예제

아래 예제에서는 파일과 직접 실행 창에서 출력의 위치를 지정하기 위해 Spc 함수를 사용합니다.

' Spc 함수는 Print # 문과 함께 사용할 수 있습니다.

Open "TESTFILE" For Output As #1	' 출력을 위해 파일을 엽니다. .

Print #1, "10 spaces between here"; Spc(10); "and here."

Close #1	' 파일을 닫습니다.

다음 문은 Print 메서드를 사용해 30개의 공백 다음에 문자열을 직접 실행 창에 인쇄합니다.

Debug.Print Spc(30); "Thirty spaces later..."


Tab 함수 예제

아래 예제에서는 파일과 직접 실행 창에서 출력의 위치를 지정하기 위해 Tab 함수를 사용합니다.

' Tab 함수는 Print # 문과 함께 사용할 수 있습니다.

Open "TESTFILE" For Output As #1	' 출력을 위해 파일을 엽니다.

' 20째

Print #1, "Hello"; Tab(20); "World."

' 인수를 생략하면 다음 인쇄 영역으로 커서가 이동합니다.

Print #1, "Hello"; Tab; "World"

Close #1	' Close file.

Tab 함수 역시 Print 메서드와 함께 사용합니다. 다음 문은 10째 열부터 문자열을 출력합니다.

Debug.Print Tab(10); "10 columns from start."


Width # 문 예제

아래 예제에서는 파일에 대한 출력 행의 너비를 설정하기 위해 Width # 문을 사용합니다.

Dim I

Open "TESTFILE" For Output As #1	' 출력을 위해 파일을 엽니다.

VBA.Width 1, 5	' 출력행의 너비를 5로 설정합니다.

For I = 0 To 9	'  10번 반복합니다.

Print #1, Chr(48 + I);	' 행마다 다섯 문자를 출력합니다.

Next I

Close #1	' 파일을 닫습니다.


Write # 문 예제

아래 예제에서는 순차 파일에 원본 데이터를 작성하기 위해 Write # 문을 사용합니다.

Open "TESTFILE" For Output As #1	' 출력을 위해 파일을 엽니다.

Write #1, "Hello World", 234	' 쉼표로 구분된 데이터를 작성합니다.

Write #1, ' 비어있는 행을 작성합니다.

Dim MyBool, MyDate, MyNull, MyError

' Boolean, Date, Null과 Error 값을 할당합니다.

MyBool = False : MyDate = #February 12, 1969# : MyNull = Null

MyError = CVErr(32767)

' Boolean 데이터는 #TRUE#나 #FALSE#로 작성됩니다. 날짜 문자열은

'일반적인 날짜 형식으로 작성됩니다. 예를 들면 #1994-07-13#

 '1994년 7월 13일을 나타냅니다. Null 데이터는 #NULL#로 작성됩니다.

' Error 데이터는 #ERROR errorcode#로 작성됩니다.

Write #1, MyBool ; " is a Boolean value"

Write #1, MyDate ; " is a date"

Write #1, MyNull ; " is a null value"

Write #1, MyError ; " is an error value"

Close #1	' 파일을 닫습니다.


Close 문

Open 문으로 연 파일에 대한 입/출력을 종료합니다.

구문

Close [filenumberlist]

선택 요소인 filenumberlist 인수는 다음 구문처럼 하나 이상의 파일 번호를 사용할 수 있습니다. 여기서 filenumber는 유효한 파일 번호입니다.

[[#]filenumber] [, [#]filenumber] . . .

참고

filenumberlist를 생략하면 Open 문으로 연 활성 파일들이 모두 닫힙니다.

Output 또는 Append를 위해 열었던 파일을 닫을 때 마지막 출력 버퍼는 그 파일에 대한 운영 체제 버퍼에 작성됩니다. 닫힌 파일과 관련된 버퍼 영역은 모두 해제됩니다.

Close 문을 실행하면 그 파일과 파일 번호 사이의 연관성도 종결됩니다.


EOF 함수

Random 또는 연속된 Input용으로 열린 파일의 끝에 도달하면 Boolean 값이 True인 Integer를 반환합니다.

구문

EOF(filenumber)

필수 요소인 filenumber 인수는 유효한 파일 번호가 들어 있는 Integer입니다.

참고

EOF 함수를 사용하면 파일의 끝 표시를 지난 곳에서 입력을 시도함으로써 생기는 오류를 피할 수 있습니다.

EOF 함수는 파일의 끝에 도달할 때까지 False 값을  반환합니다. Random 또는 Binary 액세스용으로 연 파일인 경우에 EOF는 마지막으로 실행된 Get 문이 전체 레코드를 읽을 수 없을 때까지 False를 반환합니다.

Binary 액세스용으로 연 파일인 경우에는 EOF 함수가 True를 반환할 때까지 Input 함수를 사용하여 파일을 읽으려고 시도하면 오류가 발생합니다. Input 함수를 사용하여 이진 파일을 읽을 때는 EOF 대신에 LOF 및 Loc 함수를 사용하고, EOF 함수를 사용할 때는 Get 함수를 사용합니다. Output용으로 열린 파일에서는 언제나 True를 반환합니다.


FileAttr 함수

Open 문을 사용하여 연 파일들의 파일 모드를 나타내는 Long 값을 반환합니다.

구문

FileAttr(filenumber, returntype)

FileAttr 함수 구문은 다음과 같이 명명된 인수로 구성되어 있습니다.

구성 요소	설명
filenumber	필수적인 요소. Integer이며 유효한 파일 번호입니다.
returntype	필수적인 요소. Integer이며 반환할 정보 형식을 나타내는 숫자입니다. 1로 지정하면 파일 모드를 나타내는 값을 반환하며, 16비트 시스템인 경우에 한하여 2로 지정하면 운영 체제 파일 핸들을 불러옵니다. Returntype 2는 32비트 시스템에서 지원되지 않으며 오류가 발생합니다.
반환값

returntype 인수가 1일 때 다음 반환값은 파일 액세스 모드를 나타냅니다.

모드	값
Input	1
Output	2
Random	4
Append	8
Binary	32


FreeFile 함수

Open 문에 사용할 수 있는 다음 번 파일 번호를 나타내는 Integer를 반환합니다.

구문

FreeFile(rangenumber)

선택 요소인 rangenumber 인수에는 다음 번 사용 가능한 번호가 반환되는 범위를 지정하는 Variant를 사용합니다. 기본값 0을 지정하면 1 - 255 범위에 있는 파일 번호를 반환하고, 1을 지정하면 256 - 511 범위에 있는 파일 번호를 반환합니다.

참고

FreeFile 함수를 사용하여 아직 사용되지 않은 파일 번호를 구합니다.


Get 문

열려 있는 디스크 파일에서 변수로 데이터를 읽어들입니다.

구문

Get [#]filenumber, [recnumber], varname

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

구성 요소	설명
filenumber	필수적인 요소. 유효한 파일 번호입니다.
recnumber	선택적인 요소. Variant(Long)이며 읽기 작업이 시작되는 레코드 번호(Random 모드 파일)나 바이트 번호(Binary 모드 파일)입니다.
varname	필수적인 요소. 데이터를 읽어들이는 유효한 변수 이름입니다.
참고

Get 문을 사용하여 읽은 데이터는 일반적으로 Put 문을 사용하여 파일에 기록됩니다.

파일의 첫째 레코드나 바이트는 위치 1에 있게 되고, 둘째 레코드나 바이트는 위치 2에, 그 이하도 마찬가지 방법으로 위치하게 됩니다. recnumber를 생략하면 마지막 Get 또는 Put 문 뒤에 오거나 마지막 Seek 함수가 가리키는 다음 번 레코드나 바이트를 읽습니다. 생략하는 경우에도 다음과 같이 쉼표로 구분해야 합니다.

Get #4,,FileBuffer

Random 모드로 열려 있는 파일의 경우에는 다음과 같은 규칙이 적용됩니다.

•	읽을 데이터의 길이가 Open 문의 Len 절에서 지정한 길이보다 작으면 Get 문은 레코드 길이만큼의 다음 레코드를 읽습니다. 앞 레코드와 다음 레코드 사이의 공간은 파일 버퍼에 존재하는 기존의 내용으로 채워집니다. 채워지는 데이터 양을 확실하게 결정할 수 없으므로 읽을 데이터의 길이와 레코드 길이를 일치시키는 것이 좋습니다.

•	변수가 가변 길이 문자열일 때 Get 문은 문자열 길이가 들어 있는 2바이트 설명자(descriptor)를 읽은 다음, 변수에 들어 갈 데이터를 읽습니다. 그러므로 Open 문의 Len 절로 지정하는 레코드 길이는 실제 문자열 길이보다 최소한 2바이트는 더 커야 합니다.

•	읽을 변수가 숫자 형식의 Variant이면 Get 문은 Variant의 VarType을 식별하는 2바이트를 읽은 다음, 변수에 데이터를 읽어들입니다. 예를 들어 VarType 3인 Variant를 읽을 때 Get 문은 Variant를 VarType 3(Long)으로 식별하는 2바이트와 Long 데이터가 들어 있는 4바이트를 합하여 모두 6바이트를 읽습니다. Open 문의 Len 절로 지정하는 레코드 길이는 변수 저장에 필요한 실제 바이트 수보다 최소한 2바이트는 더 커야 합니다.

메모   Get 문을 사용하여 디스크에서 Variant 배열은 읽을 수 있지만, 배열이 들어 있는 스칼라 Variant는 읽을 수는 없습니다. 디스크에서 개체를 읽을 때에도 Get 문을 사용할 수 없습니다.

•	변수가 VarType 8(String)의 Variant이면 Get은 VarType을 식별하는 2바이트와 문자열 길이를 식별하는 2바이트를 읽은 다음, 문자열 데이터를 읽습니다. Open 문의 Len 절로 지정하는 레코드 길이는 실제 문자열 길이보다 최소한 4바이트는 더 커야 합니다.

•	변수가 동적 배열이면 Get은 길이가 차원 수의 8 배에 2를 더한 것과 같은(즉, 2 + 8 * NumberOfDimensions) 설명자를 읽습니다. Open 문의 Len 절로 지정하는 레코드 길이는 배열 데이터를 읽는데 필요한 모든 바이트와 배열 설명자의 합보다 크거나 같아야 합니다. 예를 들어 다음과 같이 배열을 선언하면 배열을 디스크에 기록할 때에는 118바이트가 필요합니다.

Dim MyArray(1 To 5,1 To 10) As Integer

설명자에 18바이트(2 + 8 * 2), 데이터에 100바이트(5 * 10 * 2)가 필요하므로 총 118바이트가 필요합니다.

•	변수가 고정 크기 배열이면 Get 문은 데이터만 읽고 설명자는 읽지 않습니다.

•	변수가 가변 길이 문자열이나 Variant가 아닌 다른 형식의 변수이면 Get은 변수 데이터만 읽습니다. Open 문의 Len 절로 지정하는 레코드 길이는 읽을 데이터보다 크거나 같아야 합니다.

•	Get은 요소 사이에 채워지는 것이 없다는 점을 제외하면 각 요소를 개별적으로 읽은 것처럼 사용자 정의 형식 요소를 읽습니다. 디스크에서 Put 문으로 작성된 사용자 정의 형식의 동적 배열은 길이가 차원의 8배에 2를 더한 것과 같은(2 + 8 * NumberOfDimensions) 설명자 뒤에 나옵니다. Open 문의 Len 절로 지정하는 레코드 길이는 배열 및 그 설명자를 포함하여 개개의 요소를 읽는 데 필요한 바이트를 모두 합한 것보다 크거나 같아야 합니다.

Binary 모드로 연 파일의 경우 다음 사항을 제외하고는 모든 Random 규칙이 적용됩니다.

•	Open 문의 Len 절은 영향을 미치지 않습니다. Get 문은  디스크에서 연속적으로, 즉 레코드 사이를 채우지 않고 모든 변수를 연속적으로 읽습니다.

•	사용자 정의 형식 배열 이외의 배열인 경우 Get 문은 데이터만 읽고 설명자는 읽지 않습니다.

•	Get 문은 사용자 정의 형식이 아닌 가변 길이 문자열을 2바이트 길이의 설명자 없이 읽습니다. 바이트 수는 문자열에 있는 문자 수와 같습니다. 예를 들어 다음 예제는 파일 번호 1에서 10바이트를 읽습니다.

VarString = String(10," ")

Get #1,,VarString


Input # 문

열려 있는 순차 파일에서 데이터를 읽어 변수에 할당합니다.

구문

Input #filenumber, varlist

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

구성 요소	설명
filenumber	필수적인 요소. 유효한 파일 번호입니다.
varlist	필수적인 요소. 파일에서 읽은 값을 지정하는 변수 목록으로 쉼표로 구분되며, 배열이나 개체 변수는 될 수 없습니다. 그러나 배열 또는 사용자 정의 형식의 요소를 설명하는 변수는 사용할 수 있습니다.
참고

Input # 문으로 읽은 데이터는 대개 Write # 문을 사용하여 파일에 기록됩니다. Input 또는 Binary 모드로 연 파일을 사용하는 경우에만 Input # 문을 사용합니다.

읽어올 때 표준 문자열이나 숫자 데이터는 수정없이 변수에 지정됩니다. 다음 표는 그 외의 입력 데이터를 처리하는 방법을 보여줍니다.

데이터	변수에 지정되는 값
구분하는 쉼표 또는 공백 행	Empty
#NULL#	Null
#TRUE# 또는 #FALSE#	True 또는 False
#yyyy-mm-dd hh:mm:ss#	식으로 표현되는 날짜와 시간입니다.
#ERROR errornumber#	errornumber(변수는 오류로 표시된 Variant입니다.)
입력 데이터 안의 큰따옴표(" ") 기호는 무시됩니다.

메모   Input # 문에 사용할 문자열 안에 "1,2""X"와 같이 큰따옴표(" ") 기호를 넣지 마십시오. Input # 문은 이런 문자열을 두 개의 완전히 구분된 문자열로 해석합니다.

파일에 있는 데이터 항목은 varlist에 있는 변수와 같은 순서로 나타내야 하고 동일한 데이터 형식이어야 합니다. 변수는 숫자인데 데이터가 숫자가 아닌 경우, 변수에는 값 0이 지정됩니다.

데이터 항목을 입력하는 동안 파일의 끝(EOF)에 도달하면 입력은 종료되고 오류가 발생합니다.

메모   Input # 문을 사용하여 파일에서 변수로 정확하게 데이터를 읽으려면, Print # 문 대신 Write # 문을 사용하여 파일에 데이터를 기록하십시오. Write #을 사용하면 각 데이터 필드가 정확하게 구분됩니다.


Input 함수

Input 또는 Binary 모드로 연 파일에서 문자가 들어 있는 문자열을 반환합니다.

구문

Input(number, [#]filenumber)

Input 함수는 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
number	필수적인 요소. 반환할 문자 수를 지정하는 유효한 수식입니다.
Filenumber	필수적인 요소. 유효한 파일 번호입니다.
참고

Input 함수로 읽은 데이터는 대개 Print # 또는 Put을 사용하여 파일에 기록됩니다. Input 또는 Binary 모드로 연 파일의 경우에만 이 함수를 사용하십시오.

Input # 문과는 달리 Input 함수는 쉼표, 캐리지 리턴, 라인 피드, � � 기호, 앞쪽 공백 등을 포함하여 읽은 문자를 모두 반환합니다.

Binary 액세스용으로 연 파일의 경우 EOF 함수가 True를 반환하기 전에 Input 함수로 파일을 읽으려고 시도하면 오류가 발생합니다. Input 함수를 사용하여 이진 파일을 읽을 때에는 EOF 함수 대신 LOF와 Loc 함수를 사용하고, EOF 함수를 사용할 때에는 Get 함수를 사용하십시오.

메모   텍스트 파일에 들어 있는 바이트 데이터에 대해서는 InputB 함수를 사용하십시오. InputB 함수를 사용하는 경우 number는 반환할 문자 수가 아닌 반환할 바이트 수를 지정합니다.


Line Input # 문

열려 있는 순차 파일에서 하나의 행을 읽어서 String 변수에 지정합니다.

구문

Line Input #filenumber, varname

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

구성 요소	설명
filenumber	필수적인 요소. 유효한 파일 번호입니다.
varname	필수적인 요소. 유효한 Variant 또는 String 변수 이름입니다.
참고

Line Input # 문으로 읽은 데이터는 파일에서 대개 Print # 문을 사용하여 기록됩니다.

Line Input # 문은 캐리지 리턴(Chr(13)) 또는 캐리지 리턴 - 라인 피드(Chr(13) + Chr(10))의 열을 만날 때까지 파일에서 한 번에 한 문자씩 읽습니다. 캐리지 리턴 - 라인 피드 열은 문자열에 추가하지 않고 건너뜁니다.


Loc 함수

열려 있는 파일에서 현재의 읽기/쓰기 위치를 지정하는 Long 값을 반환합니다.

구문

Loc(filenumber)

필수 요소인 filenumber 인수에는 유효한 Integer 파일 번호가 사용됩니다.

참고

다음은 각 파일 액세스 모드의 반환값에 대한 설명입니다.

모드	반환값
Random	파일에서 읽거나 파일에 기록된 마지막 레코드 번호입니다.
Sequential	128로 나눈 바이트의 현재 위치입니다. 그러나 순차 파일의 경우 Loc 함수가 반환하는 정보는 사용하지 않으며 필요 없습니다.
Binary	읽거나 기록된 마지막 바이트 위치입니다.


Lock, Unlock 문

Open 문을 사용하여 연 파일의 일부 또는 전부에 대해 다른 프로세스가 액세스하는 것을 제어합니다.

구문

Lock [#]filenumber[, recordrange]
. . .

Unlock [#]filenumber[, recordrange]

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

구성 요소	설명
filenumber	필수적인 요소. 유효한 파일 번호입니다.
recordrange	선택적인 요소. 잠그거나 잠금 해제할 레코드 범위입니다.
설정

recordrange 인수는 다음과 같이 설정되어 있습니다.

recnumber | start To end

설정값	설명
recnumber	잠금 또는 잠금 해제가 시작되는 레코드 번호(Random 모드 파일) 또는 바이트 번호(Binary 모드 파일)입니다.
start	잠금 또는 잠금 해제할 첫째 레코드 또는 바이트 번호입니다.
end	잠금 또는 잠금 해제할 마지막 레코드 또는 바이트 번호입니다.
참고

여러 개의 프로세스가 동일한 파일에 액세스할 필요가 있는 환경에서 Lock 및 Unlock 문을 사용합니다.

Lock 및 Unlock 문은 항상 짝을 지어 사용되고 인수가 정확하게 일치해야 합니다.

파일의 첫째 레코드나 바이트는 위치 1에, 둘째 레코드나 바이트는 위치 2에, 그 이하도 마찬가지 방법으로 놓이게 됩니다. 하나의 레코드만 지정하면 그 레코드만 잠기거나 잠금 해제 됩니다. 레코드 범위를 지정하고 시작 레코드(start)를 생략하면 시작 레코드에서 범위의 끝(end)에 이르는 레코드를 모두 잠그거나 잠금 해제합니다. recnumber없이 Lock 문을 사용하여 파일 전체를 잠그고, recnumber없이 Unlock 문을 사용하여 파일 전체를 잠금 해제합니다.

파일이 순차 입력이나 출력을 위해 열려 있다면 Lock 문과 Unlock 문은 start와 end로 지정된 범위에 관계없이 파일 전체에 영향을 줍니다.

주의   파일을 닫거나 프로그램을 종료하기 전에 Unlock 문으로 잠금을 모두 풀어야 합니다. 잠금이 제대로 풀리지 않으면 예측할 수 없는 결과가 발생할 수 있습니다.


LOF 함수

Open 문으로 연 파일의 크기를 바이트 단위로 나타내는 Long을 반환합니다.

구문

LOF(filenumber)

필수 요소인 filenumber 인수는 유효한 파일 번호가 들어 있는 Integer입니다.

메모   FileLen 함수를 사용하면 열려 있지 않은 파일의 길이를 구할 수 있습니다.


Open 문

파일에 대한 입/출력을 가능하게 합니다.

구문

Open pathname For mode [Access access] [lock] As [#]filenumber [Len=reclength]

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

구성 요소	설명
pathname	필수적인 요소. 파일 이름을 지정하는 문자식입니다. 디렉터리나 폴더, 드라이브를 포함할 수 있습니다.
mode	필수적인 요소. 파일 모드(Append, Binary, Input, Output, Random)를 지정하는 키워드입니다. 지정하지 않으면 Random 액세스 용으로 파일을 엽니다.
access	선택적인 요소. 열려 있는 파일에서 허용되는 Read, Write, Read Write 등의 작업을 지정하는 키워드입니다.
lock	선택적인 요소. 다른 프로세스에 의해 열려 있는 파일에 허용하는 Shared, Lock Read, Lock Write, Lock Read Write 등의 작업을 지정하는 키워드입니다.
filenumber	필수적인 요소. 1에서 511 사이에 있는 유효한 파일 번호로 포괄적입니다. FreeFile 함수로 다음에 사용 가능한 파일 번호를 얻습니다.
reclength	선택적인 요소. 32,767(바이트)보다 작거나 같은 수입니다. 임의로 액세스하기 위해 연 파일의 경우 이 값은 레코드 길이가 되며, 순차 파일의 경우 이 값은 버퍼에 들어 있는 문자 수가 됩니다.
참고

파일에서 입/출력 작업을 수행하기 전에 먼저 파일을 열어야 합니다. Open 문은 입/출력용 버퍼를 파일에 지정하고 버퍼와 함께 사용할 액세스 모드를 결정합니다.

pathname으로 지정한 파일이 존재하지 않으면 이 파일은 Append, Binary, Input, Output, Random 모드로 파일을 열 때 생성됩니다.

다른 프로세스가 이미 파일을 열었고 지정한 액세스 형식이 허용되지 않으면 Open 연산은 실패하고 오류가 발생합니다.

mode가 Binary인 경우 Len 절은 무시됩니다.

중요   Binary, Input, Random 모드에서는 먼저 파일을 닫지 않고도 다른 파일 번호를 사용하여 파일을 열 수 있습니다. 그러나 Append와 Output 모드에서는 다른 파일 번호로 파일을 열기 전에 파일을 닫아야 합니다.


Print # 문

화면 포맷 데이터를 순차 파일에 작성합니다.

구문

Print #filenumber, [outputlist]

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

구성 요소	설명
filenumber	필수적인 요소. 유효한 파일 번호입니다.
outputlist	선택적인 요소. 인쇄할 식 또는 식의 목록입니다.
설정

outputlist 인수는 다음과 같이 설정되어 있습니다.

[{Spc(n) | Tab[(n)}] [expression] [charpos]

설정값	설명
Spc(n)	출력에 공백 문자를 삽입하는 데 사용되며, n은 삽입할 공백 문자의 개수입니다.
Tab(n)	절대 열 번호에 삽입 지점을 위치시키는 데 사용되며, n은 열 번호입니다. Tab을 인수없이 사용하면 다음 인쇄 영역이 시작하는 곳에 삽입 지점을 둡니다.
expression	인쇄할 수식이나 문자식입니다.
charpos	다음 번 문자의 삽입 지점을 지정합니다. 표시된 마지막 문자 바로 다음에 삽입 지점을 두려면 세미콜론을 사용합니다. 절대 열 번호에 삽입 지점을 두려면 Tab(n)을 사용하며, 다음 번 인쇄 영역이 시작하는 곳에 삽입 지점을 두려면 인수 없이 Tab을 사용합니다. Charpos을 생략하면 다음 문자가 다음 행에 인쇄됩니다.
참고

Print # 문으로  작성된 데이터는 파일에서 읽을 때 일반적으로 Line Input # 문이나 Input 문을 사용합니다.

outputlist가 생략되고 filenumber 다음에 목록 구분선만 있는 경우에는 파일에 공백 행이 인쇄됩니다. 빈 칸이나 세미콜론으로 여러 개의 식을 구분할 수 있으며, 빈 칸은 세미콜론과 같은 효과가 있습니다.

Boolean 데이터의 경우는 True나 False가 인쇄됩니다. True 및 False 키워드는 로케일에 관계없이 번역되지 않습니다.

Date 데이터는 시스템이 인식하는 표준 약식 날짜 형식으로 파일에 기록됩니다. 날짜나 시간 구성 요소가 0이거나 생략되면 제시된 부분만 파일에 기록됩니다.

outputlist 데이터가 Empty이면 파일에 아무 것도 기록되지 않습니다. 그러나 outputlist 데이터가 Null이면 파일에 Null이 기록됩니다.

Error 데이터인 경우는 Error errorcode가 출력됩니다. Error 키워드는 국가별 설정과 관계없이 번역되지 않습니다.

Print # 문으로 파일에 작성된 데이터는 모두 국가별로 인식됩니다. 즉, 적당한 소수 구분 기호를 사용하여 데이터의 서식이 지정됩니다.

Print #은 데이터 이미지를 파일에 기록하기 때문에 데이터가 정확하게 인쇄되도록 데이터를 구분해야 합니다. 다음 번 인쇄 영역으로 인쇄 위치를 이동하기 위해 인수 없이 Tab을 사용하면 Print # 문은 인쇄 필드 사이의 공백도 파일에 기록합니다.

메모   Input # 문으로 파일에서 데이터를 읽으려면 Print # 문 대신 Write # 문을 사용하여 파일에 데이터를 기록하십시오. Write # 문을 사용하면 각 데이터 필드를 적절히 구분하여 데이터의 무결성을 보장하므로 Input # 문으로 다시 그 데이터를 읽을 수 있습니다. Write # 문을 사용하면 어떤 국가에서도 데이터를 정확하게 읽을 수 있습니다.


Put 문

변수에서 데이터를 읽어서 디스크 파일에 기록합니다.

구문

Put [#]filenumber, [recnumber], varname

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

구성 요소	설명
filenumber	필수적인 요소. 유효한 파일 번호입니다.
recnumber	선택적인 요소. Variant(Long). 기록이 시작되는 레코드 번호(Random 모드 파일) 또는 바이트 번호(Binary 모드 파일)입니다.
varname	필수적인 요소. 디스크에 작성될 데이터가 들어 있는 변수 이름입니다.
참고

Put 문으로 기록된 데이터는 일반적으로 파일에서 Get 문을 사용하여 읽을 수 있습니다.

파일의 첫째 레코드나 바이트는 위치 1에, 둘째 레코드나 바이트는 위치 2에, 그 이하도 마찬가지 방법으로 기록됩니다. recnumber를 생략하면 마지막 Get 문이나 Put 문 뒤에 오거나 마지막 Seek 함수가 가리키는 다음 번 레코드나 바이트가 작성됩니다. 생략하는 경우에도 반드시 쉼표로 구분해야 합니다. 예를 들면 다음과 같습니다.

Put #4,,FileBuffer

Random 모드로 연 파일인 경우에는 다음 규칙이 적용됩니다.

•	기록되는 데이터 길이가 Open 문의 Len 절에서 지정한 길이보다 작으면 Put은 레코드 길이만큼 다음 레코드를 기록합니다. 한 레코드가 끝나는 곳과 다음 레코드가 시작되는 곳 사이의 공백은 파일 버퍼에 존재하는 내용으로 채워집니다. 채워지는 데이터 양이 확실하지 않으므로 일반적으로 레코드 길이를 기록되는 데이터 길이와 일치시키는 것이 좋습니다. 기록되는 데이터의 길이가 Open 문의 Len 절에서 지정한 길이보다 크면 오류가 발생합니다.

•	기록될 변수가 가변 길이 문자열이면 Put은 문자열 길이가 들어 있는 2바이트 설명자를 기록한 다음 변수를 작성합니다. Open 기록의 Len 절로 지정하는 레코드 길이는 실제 문자열 길이보다 최소 2바이트 더 커야 합니다.

•	기록되고 있는 변수가 숫자 형식으로 된Variant이면 Put 문은 Variant의 VarType을 식별하는 2바이트를 기록한 다음에 변수를 기록합니다. 예를 들어 VarType 3의 VarType를 기록하려면 Put 문은 Variant를 VarType 3(Long)으로 식별하는 2바이트와 Long 데이터가 들어 있는 4바이트, 총 6바이트를 기록합니다. Open 문의 Len 절로 지정한 레코드 길이는 변수를 저장하는데 필요한 실제 바이트 수보다 최소 2바이트 더 커야 합니다.

메모   Put 문으로 Variant 배열을 디스크에 기록할 수 있지만, 배열이 들어 있는 스칼라 Variant를 디스크에 기록할 때에는 Put 문을 사용할 수 없습니다. 개체를 디스크에 기록할 때에도 Put을 사용할 수 없습니다.

•	기록될 변수가 VarType 8(String) Variant이면 Put은 VarType을 식별하는 2바이트와 문자열 길이를 나타내는 2바이트를 기록한 다음, 문자열 데이터를 기록합니다. Open 문의 Len 절로 지정하는 레코드 길이는 실제 문자열 길이보다 최소 4바이트 더 커야 합니다.

•	기록될 변수가 동적 배열이면 Put은 길이가 차원 수의 8 배에 2를 더한 것과 같은(2 + 8 * NumberOfDimensions) 설명자를 기록합니다. Open 문의 Len 절로 지정하는 레코드 길이는 배열 데이터와 배열 설명자를 기록하는데 필요한 바이트를 모두 합한 것보다 크거나 같아야 합니다. 예를 들어 다음과 같이 배열을 선언하면 배열을 디스크에 기록할 때 118바이트가 필요합니다.

Dim MyArray(1 To 5,1 To 10) As Integer

•	설명자에 18바이트(2 + 8 * 2), 데이터에 100바이트(5 * 10 * 2)가 지정됩니다.

•	기록할 변수가 고정 크기 배열이면 Put은 데이터만 기록하고 설명자는 디스크에 기록하지 않습니다.

•	기록할 변수가 가변 길이 문자열이나 Variant가 아닌 다른 형식의 변수이면 Put은 변수 데이터만 기록합니다. Open 문의 Len 절로 지정하는 레코드 길이는 기록할 데이터 길이보다 크거나 같아야 합니다.

•	Put은 요소 사이에 채워지는 것이 없다는 점을 제외하면 각 요소를 개별적으로 기록한 것처럼 사용자 정의 형식의 요소를 기록합니다. 디스크에서 Put으로 기록된 사용자 정의 형식의 동적 배열은 길이가 차원의 8 배에 2를 더한 것과 같은(2 + 8 * NumberOfDimensions) 설명자 뒤에 나옵니다. Open 문의 Len 절로 지정하는 레코드 길이는 배열과 그 설명자를 포함하여 개개의 요소를 작성하는데 필요한 바이트를 모두 합한 것보다 크거나 같아야 합니다.

Binary 모드로 연 파일의 경우 다음을 제외하고는 Random 규칙이 모두 적용됩니다.

•	Open 문의 Len 절은 영향을 미치지 않습니다. Put 문은 모든 변수를 연속적으로, 즉 레코드 사이에 채워넣지 않고 디스크에 기록됩니다.

•	사용자 정의 형식 배열 이외의 배열인 경우 Put 문은 데이터만 기록하고 설명자는 기록하지 않습니다.

•	Put 문은 사용자 정의 형식 요소가 아닌 가변 길이 문자열을 2바이트 길이의 설명자 없이 기록합니다. 기록되는 바이트 수는 문자열의 문자 수와 같습니다. 예를 들어 다음 문은 파일 번호 1에 10바이트를 기록합니다.

VarString$ = String$(10," ")

Put #1,,VarString$


Reset 문

Open 문으로 연 디스크 파일을 모두 닫습니다.

구문

Reset

참고

Reset 문은 Open 문으로 연 활성 파일을 모두 닫고 모든 파일 버퍼의 내용을 디스크에 기록합니다.


Seek 함수

Open 문으로 열린 파일 안의 현재 읽기/쓰기 위치를 지정하는 Long 값을 반환합니다.

구문

Seek(filenumber)

필수 요소인 filenumber 인수는 유효한 파일 번호가 들어 있는 Integer를 사용합니다.

참고

Seek는 1에서 2,147,483,647(2^31 - 1와 동일함) 사이의 값을 반환하며 포괄적입니다.

다음은 각 파일 액세스 모드에 대한 반환값에 대해 설명합니다.

모드	반환값
Random	읽거나 기록할 다음 번 레코드 번호입니다.
Binary, Output, Append, Input	다음 작업에서 발생하는 바이트 위치로 파일의 첫째 바이트는 위치 1에, 둘째 바이트는 위치 2에, 그 이하도 마찬가지 방법으로 위치합니다.


Seek 문

Open 문으로 열린 파일 내의 다음 읽기/쓰기 작업을 수행할 위치를 설정합니다.

구문

Seek [#]filenumber, position

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

구성 요소	설명
filenumber	필수적인 요소. 유효한 파일 번호입니다.
position	필수적인 요소. 1 � 2,147,483,647 사이의 수로 다음 읽기/쓰기 작업이 발생할 위치를 나타냅니다.
참고

Get 및 Put 문에서 지정하는 레코드 번호는 Seek 문을 수행하여 얻은 파일 위치를 무시합니다.

만약 파일의 끝(EOF)을 지나서 Seek 연산을 수행한 다음 파일 쓰기를 하면 파일이 확장됩니다. 음수 또는 0 위치에 대해 Seek 연산을 하면 오류가 발생합니다.


Spc 함수

Print # 문이나 Print 메서드와 함께 사용되어 출력 위치를 정합니다.

구문

Spc(n)

필수 요소인 n 인수는 목록에 있는 다음 식을 표시 또는 인쇄하기 전에 삽입할 공백 수입니다.

참고

n이 출력 행 너비보다 작으면 인쇄된 공백 문자들 바로 뒤에 다음 번 인쇄 위치가 따라 나옵니다. n이 출력 행 너비보다 크면 Spc 함수는 다음과 같은 공식을 사용하여 다음 번 인쇄 위치를 계산합니다.

currentprintposition + (n Mod width)

예를 들어 현재 인쇄 위치가 24, 출력 행 너비가 80이고, Spc(90)이라고 지정하면 다음 인쇄는 위치 34(현재 인쇄 위치 + 90/80의 나머지)에서 시작될 것입니다. 현재 인쇄 위치와 출력 행 너비 사이의 차이가 n(또는 n Mod width)보다 작으면 Spc 함수는 다음 행이 시작하는 곳으로 건너뛰어 n -(width - currentprintposition)만큼 공백을 만듭니다.

메모   테이블 열이 넓은 문자를 수용할 만큼 넓은지 확인하도록 하십시오.

비례적으로 공백이 주어지는 글꼴과 함께 Print 메서드를 사용할 때 Spc 함수로 인쇄되는 공백 문자들의 너비는 항상 선택한 글꼴의 포인트 크기로 된 모든 문자 너비의 평균이 됩니다. 그러나 인쇄되는 문자 수와 그 문자들이 차지하는 고정 너비 열 수 사이에는 아무런 관계가 없습니다. 예를 들어 W 대문자는 둘 이상의 고정 너비 열을 차지하고 i소문자는 하나 이하의 고정 너비 열을 차지합니다.


Tab 함수

Print # 문이나 Print 메서드와 함께 사용되어 출력 위치를 정합니다.

구문

Tab[(n)]

선택 요소인 n 인수에는 목록에 있는 다음 번 식을 표시하거나 인쇄하기 전에 이동할 열 수를 사용합니다. 인수가 생략되면 Tab은 다음 번 인쇄 영역이 시작하는 곳으로 삽입 지점을 옮깁니다. 쉼표가 소수 구분 기호로 사용되는 로케일에서는 쉼표 대신 Tab을 사용할 수도 있습니다.

참고

현재 행의 현재 인쇄 위치가 n보다 크면 Tab은 다음 번 출력 행의 n번째 열로 건너뜁니다. n이 1보다 작으면 Tab은 인쇄 위치를 열 1로 옮깁니다. n이 출력 행의 너비보다 크면 Tab은 아래 공식을 사용하여 다음 번 출력 위치를 계산합니다.

n Mod width

예를 들어 width가 80 인데 Tab(90)을 지정하면 열 10(90/80의 나머지)에서 다음 인쇄를 시작할 것입니다. n이 현재 인쇄 위치보다 작으면 다음 행에 있는 계산된 인쇄 위치에서 인쇄하기 시작합니다. 계산된 인쇄 위치가 현재 인쇄 위치보다 크면 같은 행에 있는 계산된 인쇄 위치에서 인쇄하기 시작합니다.

출력 행에서 맨 왼쪽 인쇄 위치는 항상 1입니다. Print # 문으로 파일에 인쇄할 때 맨 오른쪽 인쇄 위치는 출력 파일의 현재 너비가 됩니다. 그 너비는 Width # 문으로 설정할 수 있습니다.

메모   테이블 열이 넓은 문자를 수용할 만큼 충분히 넓은지 확인하십시오.

Print 메서드와 함께 Tab 함수를 사용할 때 인쇄 모양은 고정 너비 열로 일정하게 나누어 집니다. 각 열의 너비는 선택한 글꼴의 포인트 크기로 된 모든 문자 너비의 평균입니다. 그러나 인쇄되는 문자 수와 그 문자들이 차지하는 고정 너비 열 수 사이에는 아무런 관계가 없습니다. 예를 들어 W대문자는 하나 이상의 고정 너비 열을 차지하고, i소문자는 하나 이하의 고정 너비 열을 차지합니다.


Width # 문

Open 문으로 연 파일에 출력 행의 너비를 지정합니다.

구문

Width #filenumber, width

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

구성 요소	설명
filenumber	필수적인 요소. 유효한 파일 번호입니다.
width	필수적인 요소. 0�255 사이의 수식으로 포괄적이며 새 행이 시작되기 전에 행에 나타나는 문자 수를 나타냅니다. width가 0이면 행 길이에 제한이 없습니다. width의 기본 값은 0입니다.


Write # 문

데이터를 순차 파일에 기록합니다.

구문

Write #filenumber, [outputlist]

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

구성 요소	설명
filenumber	필수적인 요소. 유효한 파일 번호입니다.
outputlist	선택적인 요소. 하나 이상의 쉼표로 구분되는 파일에 작성할 수식 또는 문자식입니다.
참고

Write # 문으로 기록된 데이터는 일반적으로 Input #을 사용하여 읽힙니다.

 outputlist가 생략되고 filenumber 뒤에 쉼표가 있으면 파일에 공백 행이 인쇄됩니다. 빈 칸, 세미콜론, 쉼표를 사용하여 여러 개의 식을 구분할 수 있습니다. 빈 칸은 세미콜론과 같은 효과가 있습니다.

데이터를 파일에 기록하기 위해 Write # 문을 사용할 때 로케일에 관계없이 Input # 문으로 데이터를 읽고 정확하게 해석하려면 다음과 같은 몇 가지 규칙들을 준수해야 합니다.

•	숫자 데이터는 항상 마침표를 소수 구분 기호로 사용하여 작성됩니다.

•	Boolean 데이터의 경우 #TRUE# 또는 #FALSE#가 인쇄됩니다. True 및 False 키워드는 국가에 관계없이 번역되지 않습니다.

•	Date 데이터는 일반적인 날짜 형식을 사용하여 파일에 기록됩니다. 날짜나 시간 구성 요소가 0이거나 생략되면 제시된 부분만 파일에 기록됩니다.

•	outputlist 데이터가 Empty이면 파일에 아무 것도 기록되지 않습니다. 그러나 Null 데이터의 경우는 #NULL#이 기록됩니다.

•	outputlist 데이터가 Null 데이터이면 파일에 #NULL#이 기록됩니다.

•	Error 데이터의 경우 #ERROR errorcode#가 출력됩니다. Error 키워드는 국가에 관계없이 번역되지 않습니다.

Print # 문과는 달리 Write # 문은 파일에 작성되는 문자열을 싸고 있는 인용 부호와 항목 사이에 쉼표를 삽입합니다. 목록에 구분 기호를 명시할 필요가 없습니다. Write # 문은 outputlist 의 마지막 문자를 파일에 기록한 다음, 개행 문자, 즉 캐리지 리턴�라인 피드(Chr(13) + Chr(10))를 삽입합니다.

메모   Input # 문에 사용할 문자열 안에 "1,2""X"와 같이 큰따옴표(" ") 기호를 넣지 마십시오. Input # 문은 이런 문자열을 두 개의 완전한 문자열로 해석합니다.


DDB 함수 예제

아래 예제에서는 초기 가치(InitCost), 유효 기간 이후의 폐물 이용 가치액(SalvageVal), 자산의 내구 연한(LifeTime), 감가상각액이 계산될 연 단위의 기간(Depr) 등이 주어진 지정된 분기에 대한 자산의 감가상각액을 반환하기 위해 DDB 함수를 사용합니다.

Dim Fmt, InitCost, SalvageVal, MonthLife, LifeTime, DepYear, Depr

Const YRMOS = 12	' l년 동안의 달 수.

Fmt = "###,##0.00"

InitCost = InputBox("자산의 초기 가치는 얼마입니까?")

SalvageVal = InputBox("내구 연한이 끝날 때의 자산 가치는 얼마입니까?")

MonthLife = InputBox("자산의 내구 연한은 몇 개월입니까?")

Do While MonthLife < YRMOS	' 기간이 1년 이상인가를 검사합니다.

MsgBox "자산의 유효 기간은 1년 또는 그 이상이 되어야 합니다."

MonthLife = InputBox("자산의 내구 연한은 몇 개월입니까?")

Loop

LifeTime = MonthLife / YRMOS	' 달을 년으로 변환합니다.

If LifeTime <> Int(MonthLife / YRMOS) Then

LifeTime = Int(LifeTime + 1)	' 가장 최근의 해로 반올림합니다.

End If

DepYear = CInt(InputBox("감가상각을 계산할 년수를 입력합니다."))

Do While DepYear < 1 Or DepYear > LifeTime

MsgBox "적어도 1년 이상이나" & LifeTime & "이하를 입력해야 합니다."

DepYear = InputBox("감가상각을 계산할 년수를 입력합니다.")

Loop

Depr = DDB(InitCost, SalvageVal, LifeTime, DepYear)

MsgBox DepYear & "년이 지난 후의 감가상각액은 " & Format(Depr, Fmt) &  "원입니다. "


FV 함수 예제

아래 예제에서는 분기당 이자율(APR / 12), 총 불입 회수(TotPmts), 불입액(Payment), 현 투자액(PVal), 기수불 또는 기말불 어느 쪽에 불입이 이루어지는지 가리키는 수(PayType) 등이 주어진 미래 투자액을 반환하기 위해 FV 함수를 사용합니다. 불입액은 현금의 지급을 나타내기 때문에 음수로 표현된다는 것을 기억하기 바랍니다.

Dim Fmt, Payment, APR, TotPmts, PayType, PVal, FVal

Const ENDPERIOD = 0, BEGINPERIOD = 1	' 기말불은 0, 기수불은 1 값을 가집니다.

Fmt = "###,###,##0.00"	' 금액 서식을 정의합니다.

Payment = InputBox("매달 얼마씩 저금할 계획입니까?")

APR = InputBox("연간 예상 이자율(%)을 입력합니다.")

If APR > 1 Then APR = APR / 100	' 적절한 형태인지 확인합니다.

TotPmts = InputBox("몇 달 동안 저금할 예정입니까?")

PayType = MsgBox("월말에 지불하겠습니까?", vbYesNo)

If PayType = vbNo Then PayType = BEGINPERIOD Else PayType = ENDPERIOD

PVal = InputBox("현재 저축금액은 얼마입니까?")

FVal = FV(APR / 12, TotPmts, -Payment, -PVal, PayType)

MsgBox "Your savings will be worth " & Format(FVal, Fmt) & "."


IPmt 함수 예제

아래 예제에서는 모든 불입액이 동일한 경우에 각 불입액에서 이자가 차지하고 있는 액수는 얼마인지 계산하기 위해 IPmt 함수를 사용합니다. 분기당 이자율(APR / 12), 이자가 나오기 위한 불입 기간(Period), 총 불입 회수(TotPmts), 현 융자액 또는 융자원금(PVal), 미래 융자액(FVal), 기수불 또는 기말불 중 어떤 방식으로 불입하는지 여부(PayType) 등이 주어집니다.

Dim FVal, Fmt, PVal, APR, TotPmts, PayType, Period, IntPmt, TotInt, Msg

Const ENDPERIOD = 0, BEGINPERIOD = 1	' 기말불은 0, 기수불은 1 값을 가집니다.

FVal = 0	' 일반적으로 대출금에 대해서는 0으로 주어집니다.

Fmt = "###,###,##0.00"	' 금액 서식을 정의합니다.

PVal = InputBox("얼마를 빌리겠습니까?")

APR = InputBox("대출금의 연간 이자율은 몇 퍼센트입니까?")

If APR > 1 Then APR = APR / 100	' 적절한 형태인지 확인합니다.

TotPmts = InputBox("몇 개월 동안 불입하겠습니까?")

PayType = MsgBox("월말에 지불하겠습니까?", vbYesNo)

If PayType = vbNo Then PayType = BEGINPERIOD Else PayType = ENDPERIOD

For Period = 1 To TotPmts	' 모든 이자의 합계를 계산합니다.

IntPmt = IPmt(APR / 12, Period, TotPmts, -PVal, FVal, PayType)

TotInt = TotInt + IntPmt

Next Period

Msg = "이 대출금의 이자 총액은" & Format(TotInt, Fmt)

Msg = Msg & "입니다."

MsgBox Msg	' 결과를 보여줍니다.


IRR 함수 예제

아래 예제에서는 IRR 함수가 Values( ) 배열 내에 포함된 다섯 가지의 연속적인 자금 흐름에 대한 내부 수익률을 반환합니다. 첫 번째 배열 요소는 사업 개시 비용을 나타내는 음수로 표현되는 자금입니다. 나머지 4 개의 자금 흐름은 그 후 4년 동안의 양수로 표현되는 자금 흐름을 나타냅니다. Guess는 예상 내부 수익률입니다.

Dim Guess, Fmt, RetRate, Msg

Static Values(5) As Double	' 배열을 설정합니다.

Guess = .1	' Guess 변수를 10%로 설정합니다.

Fmt = "#0.00"	' 백분율 유형을 정의합니다.

Values(0) = -50000000	' 사업 초기 비용 5000만원입니다.

' 연속 4연간의 소득을 반영하는 양의 값을 갖는 자금 흐름입니다.

Values(1) = 25000000 : Values(2) = 30000000

Values(3) = 35000000 : Values(4) = 40000000

RetRate = IRR(Values(), Guess) * 100	' 내부 이자율을 계산합니다.

Msg = "이러한 5가지 현금 유입에 대한 내부 배당금 이자율은 "

Msg = Msg & Format(RetRate, Fmt) & " %" & "입니다."

MsgBox Msg	' 내부 배당금 이자율을 표시합니다.


MIRR 함수 예제

아래 예제에서는 Values( ) 배열 내에 포함된 다섯 가지의 연속적인 자금 흐름에 대한 수정된 내부 수익률을 반환하기 위해 MIRR 함수를 사용합니다. LoanAPR은 융자에 대한 이자금이며, InvAPR은 재투자에 대한 이자 배당률을 나타냅니다.

Dim LoanAPR, InvAPR, Fmt, RetRate, Msg

Static Values(5) As Double	' 배열을 초기화합니다.

LoanAPR = .1	' 대출금 이자율은 10% 입니다.

InvAPR = .12	' 재투자율은 12 % 입니다.

Fmt = "#0.00"	' 금액 서식을 정의합니다.

Values(0) = -50000000	' 사업 초기 비용은 5000만원입니다.

' 이하 부분은 연속 4년에 대한 소득을 반영하는 양의 값을 갖는 자금 흐름입니다.

Values(1) = 25000000 : Values(2) = 30000000

Values(3) = 35000000 : Values(4) = 40000000

RetRate = MIRR(Values(), LoanAPR, InvAPR)	' 내부 이자율을 계산합니다.

Msg = "이 5개 현금 유입에 대한 수정된 내부 배당금 이자율입니다."

Msg = Msg & Format(Abs(RetRate) * 100, Fmt) & " %" & "입니다."

MsgBox Msg	' 내부 배당금 이자율을 표시합니다.


NPer 함수 예제

아래 예제에서는  Pval 내에 포함된 융자액을 지불하기 위해 불입해야 할 분기 회수를 반환하기 위해 NPer 함수를 사용합니다. 분기당 이자율(APR / 12), 이자가 발생하기 위한 불입 기간(Period), 불입액(Payment), 미래 융자액(FVal), 기수불 또는 기말불 중 어떤 방식으로 불입하는지 여부(PayType) 등이 주어집니다.

Dim FVal, PVal, APR, Payment, PayType, TotPmts

Const ENDPERIOD = 0, BEGINPERIOD = 1	' 기말불은 0, 기수불은 1 값을 가집니다.

FVal = 0	' 일반적으로 대출금에 대해서는 0값이 주어집니다.

PVal = InputBox("얼마를 빌리겠습니까?")

APR = InputBox("대출금의 연간 이자율은 몇 퍼센트입니까?")

If APR > 1 Then APR = APR / 100	' 적절한 형태인지 확인합니다.

Payment = InputBox("매달 얼마씩 불입하겠습니까?")

PayType = MsgBox("월말에 지불하겠습니까?", vbYesNo)

If PayType = vbNo Then PayType = BEGINPERIOD Else PayType = ENDPERIOD

TotPmts = NPer(APR / 12, -Payment, PVal, FVal, PayType)

If Int(TotPmts) <> TotPmts Then TotPmts = Int(TotPmts) + 1

MsgBox "대출금의 총 불입 기간은 " & TotPmts & "개월입니다."


NPV 함수 예제

아래 예제에서는 Values( ) 배열 내에 포함된 연속적인 자금 흐름에 대한 순수 현재 가치를 반환하기 위해 NPV 함수를 사용합니다. RetRate는 결정된 내부 수익률을 나타냅니다.

Dim Fmt, Guess, RetRate, NetPVal, Msg

Static Values(5) As Double	' 배열을 초기화합니다.

Fmt = "###,##0.00"	' 금액 서식을 정의합니다.

Guess = .1	' Guess 변수를 10%로 초기화합니다.

RetRate = .0625	' 고정 내부 이자율을 설정합니다.

Values(0) = -50000000	' 사업 초기 비용은 5000만원입니다.

' 연속 4년에 대한 소득을 반영하는 양의 값을 갖는 자금 흐름입니다.

Values(1) = 25000000 : Values(2) = 30000000

Values(3) = 35000000 : Values(4) = 40000000

NetPVal = NPV(RetRate, Values())	' 현재 순이익을 계산합니다.

Msg = "현금 흐름의 현재 순 가치는 "

Msg = Msg & Format(NetPVal, Fmt) & "원입니다."

MsgBox Msg	' 현재 순 가치를 표시합니다.


Pmt 함수 예제

아래 예제에서는 결정된 분기마다 융자액에 대한 월별 불입금을 반환하기 위해 Pmt 함수를 사용합니다. 분기당 이자율(APR / 12), 총 불입 회수(TotPmts), 현 융자액 또는 융자원금(PVal), 미래 융자액(FVal), 기수불 또는 기말불 중 어떤 방식으로 불입하는지 여부(PayType) 등이 주어집니다.

Dim Fmt, FVal, PVal, APR, TotPmts, PayType, Payment

Const ENDPERIOD = 0, BEGINPERIOD = 1	' 기말불은 0, 기수불은 1 값을 가집니다.

Fmt = "###,###,##0.00"	' 금액 유형을 정의합니다.

FVal = 0	' 일반적으로 대출금에 대해서는 0값이 주어집니다.

PVal = InputBox("얼마를 빌리겠습니까?")

APR = InputBox("대출금의 연간 이자율은 몇 퍼센트입니까?")

If APR > 1 Then APR = APR / 100	' 적절한 형태인지 확인합니다.

TotPmts = InputBox("매달 얼마씩 불입하겠습니까?")

PayType = MsgBox("월말에 지불하겠습니까?", vbYesNo)

If PayType = vbNo Then PayType = BEGINPERIOD Else PayType = ENDPERIOD

Payment = Pmt(APR / 12, TotPmts, -PVal, FVal, PayType)

MsgBox "이러한 조건의 경우, 매달 " & Format(Payment, Fmt) & "원씩 지불합니다."


PPmt 함수 예제

아래 예제에서는 모든 불입액이 동일한 경우에 각 불입액에서 원금이 차지하고 있는 액수는 얼마인지 계산하기 위해 PPmt 함수를 사용합니다. 분기당 이자율(APR / 12), 이자가 나오기 위한 불입 기간(Period), 총 불입 회수(TotPmts), 현 융자액 또는 융자원금(PVal), 미래 융자액(FVal), 기수불 또는 기말불 중 어떤 방식으로 불입하는지 여부(PayType) 등이 주어집니다.

Dim NL, TB, Fmt, FVal, PVal, APR, TotPmts, PayType, Payment, Msg, MakeChart, Period, P, I

Const ENDPERIOD = 0, BEGINPERIOD = 1	' 기말불은 0, 기수불은 1 값을 가집니다.

NL = Chr(13) & Chr(10)	' 줄 바꿈 코드를 정의합니다.

TB = Chr(9)	' 탭 코드를 정의합니다.

Fmt = "###,###,##0.00"	' 금액 서식을 정의합니다.

FVal = 0	' 일반적으로 대출금에 대해서는 0값이 주어집니다.

PVal = InputBox("얼마를 빌리겠습니까?")

APR = InputBox("대출금의 연간 이자율은 몇 퍼센트입니까?")

If APR > 1 Then APR = APR / 100	' 적절한 형태인지 확인합니다.

TotPmts = InputBox("매달 얼마씩 불입하겠습니까?")

PayType = MsgBox("월말에 지불하겠습니까?", vbYesNo)

If PayType = vbNo Then PayType = BEGINPERIOD Else PayType = ENDPERIOD

Payment = Abs(-Pmt(APR / 12, TotPmts, PVal, FVal, PayType))

Msg = "매달 불입액은 " & Format(Payment, Fmt) & "원입니다. "

Msg = Msg & "원금과 이자를 기간별로 세분한 명세서가 필요합니까?"

MakeChart = MsgBox(Msg, vbYesNo)	' 차트를 필요로 하는지 알아봅니다.

If MakeChart <> vbNo Then

If TotPmts > 12 Then MsgBox "첫 번째 연도에 관한 표를 작성합니다."

Msg = "개월수    불입액    원금    이자 " & NL

For Period = 1 To TotPmts

If Period > 12 Then Exitf For	' 최초 12개월만 표시됩니다.

P = PPmt(APR / 12, Period, TotPmts, -PVal, FVal, PayType)

P = (Int((P + .005) * 100) / 100)	' 원금을 반올림합니다.

I = Payment - P

I = (Int((I + .005) * 100) / 100)	' 이자를 반올림합니다.

Msg = Msg & Period & TB & Format(Payment, Fmt)

Msg = Msg & TB & Format(P, Fmt) & TB & Format(I, Fmt) & NL

Next Period

MsgBox Msg	' 할부 상환액 표를 보여줍니다.

End If


PV 함수 예제

아래 예제에서는 PV 함수가 향후 20년동안 한 해에 12,000,000씩 제공될 연금 240,000,000원의 현재 금액을 반환합니다. 예상 연이율(APR), 총 불입 회수(TotPmts), 각 불입액(YrIncome), 미래 총 투자액(FVal), 기수불 또는 기말불 중 어떤 방식으로 불입되는지 여부(PayType) 등이 주어집니다. 매년 연금으로부터 지급되는 자금을 나타내기 때문에 YrIncome은 음수라는 점에 유의합니다.

Dim Fmt, APR, TotPmts, YrIncome, FVal, PayType, PVal

Const ENDPERIOD = 0, BEGINPERIOD = 1	' 기말불은 0, 기수불은 1 값을 가집니다.

Fmt = "###,##0.00"	' 금액 서식을 정의합니다.

APR = .0825	' 연이율은 8.25%입니다.

TotPmts = 20	' 총 지불 횟수는 20회입니다.

YrIncome = 35000000	' 연간 연금액입니다.

FVal = 100000000	' 미래의 자산 가치입니다.

PayType = BEGINPERIOD	' 연금을 기수불 방식으로 받습니다.

PVal = PV(APR, TotPmts, -YrIncome, FVal, PayType)

MsgBox "현재 가치는 " & Format(PVal, Fmt) & "원입니다."


Rate 함수 예제

아래 예제에서는 총 불입 회수(TotPmts), 융자 불입액(Payment), 현 융자액 또는 융자원금(PVal), 미래 융자액(FVal), 기수불 또는 기말불 어느 쪽에 불입이 이루어지는지 가리키는 수(PayType), 예상 이자율의 추정치(Guess) 등이 주어진 융자액의 이자율을 계산하기 위해 Rate 함수를 사용합니다.

Dim Fmt, FVal, Guess, PVal, Payment, TotPmts, PayType, APR

Const ENDPERIOD = 0, BEGINPERIOD = 1	' 불입이 된 경우.

Fmt = "##0.00"	' 백분율 서식 정의.

FVal = 0	' 일반적으로 대출금의 경우 0값이 주어집니다.

Guess = .1	' Guess 변수를 10퍼센트로 설정합니다.

PVal = InputBox("얼마를 빌리겠습니까?")

Payment = InputBox("매달 얼마씩 불입하겠습니까?")

TotPmts = InputBox("몇 개월 동안 불입하겠습니까?")

PayType = MsgBox("월말에 지불하겠습니까?", vbYesNo)

If PayType = vbNo Then PayType = BEGINPERIOD Else PayType = ENDPERIOD

APR = (Rate(TotPmts, -Payment, PVal, FVal, PayType, Guess) * 12) * 100

MsgBox "이자율은 " & Format(CInt(APR), Fmt) & " 퍼센트입니다."


SLN 함수 예제

아래 예제에서는 자산의 초기 비용(InitCost), 자산 유효 기간 말기의 공제액(SalvageVal), 자산의 연 단위 총 기간(LifeTime)등이 주어진 단일 분기에 대한 지정된 분기에 대한 자산의 감가상각 직선법을 반환하기 위해 SLN 함수를 사용합니다.

Dim Fmt, InitCost, SalvageVal, MonthLife, LifeTime, PDepr

Const YEARMONTHS = 12	' 1년 동안의 달 수.

Fmt = "###,##0.00"	' 금액 유형을 정의합니다.

InitCost = InputBox("자산의 최초 구입비는 얼마입니까?")

SalvageVal = InputBox("내구 연한이 끝날 후의 자산 가치는 얼마입니까?")

MonthLife = InputBox("자산의 사용 가능한 유효 기간은 몇 개월입니까?")

Do While MonthLife < YEARMONTHS	' 기간이 1년 이상인지 검사합니다.

MsgBox "자산의 내구 연한은 1년 또는 그 이상이어야 합니다."

MonthLife = InputBox("자산의 내구 연한은 몇 개월입니까?")

Loop

LifeTime = MonthLife / YEARMONTHS	' 달을 년으로 변환합니다.

If LifeTime <> Int(MonthLife / YEARMONTHS) Then

LifeTime = Int(LifeTime + 1)	' 가장 최근의 해로 반올림합니다.

End If

PDepr = SLN(InitCost, SalvageVal, LifeTime)

MsgBox "감가상각되는 가치 비용은 연간 " & Format(PDepr, Fmt) & "원입니다."


SYD 함수 예제

아래 예제에서는 SYD 함수를 이용해 자산의 초기 비용(InitCost), 자산 유효 기간 말기의 공제액(SalvageVal), 자산의 연 단위 총 기간(LifeTime) 등이 주어진 지정된 분기에 대한 자산의 감가상각액을 반환하기 위한 방법을 보여주고 있습니다. 감가상각액이 계산될 기간은 연 단위의 PDepr입니다.

Dim Fmt, InitCost, SalvageVal, MonthLife, LifeTime, DepYear, PDepr

Const YEARMONTHS = 12	' 1 년 동안의 달 수.

Fmt = "###,##0.00"	' 금액 유형을 정의합니다.

InitCost = InputBox("자산의 초기 가치는 얼마입니까?")

SalvageVal = InputBox("내구 연한이 끝날 때의 자산 가치는 얼마입니까?")

MonthLife = InputBox("자산의 내구 연한은 몇 개월입니까?")

Do While MonthLife < YEARMONTHS	' 기간이 1 년 이상인가를 검사합니다.

MsgBox "자산의 내구 연한은 1년 또는 그 이상이어야 합니다."

MonthLife = InputBox("자산의 내구 연한은 몇 개월입니까?")

Loop

LifeTime = MonthLife / YEARMONTHS	' 달을 년으로 변환합니다.

If LifeTime <> Int(MonthLife / YEARMONTHS) Then

LifeTime = Int(LifeTime + 1)	' 가장 최근의 해로 반올림합니다.

End If

DepYear = CInt(InputBox("몇 년 지난 후의 감가상각을 계산하겠습니까?"))

Do While DepYear < 1 Or DepYear > LifeTime

MsgBox "적어도 1 이상 " & LifeTime & " 이하를 입력해야 합니다."

DepYear = CInt(InputBox("감가상각의 계산을 원하는 때는 몇 년차입니까?"))

Loop

PDepr = SYD(InitCost, SalvageVal, LifeTime, DepYear)

MsgBox DepYear & "년이 지난 후의 감가상각 액수는 " & Format(PDepr, Fmt) & " 원입니다."


DDB 함수

이중 체감 잔액법(Double-Declining Balance method)이나 지정한 다른 방법을 사용하여 특정 기간 동안 자산의 감가상각을 지정하는 Double을 반환합니다.

구문

DDB(cost, salvage, life, period[, factor])

DDB 함수는 다음과 같은 명명된 인수로 구성되어 있습니다.

구성 요소	설명
cost	필수적인 요소. 초기 자산 비용을 지정하는 Double
salvage	필수적인 요소. 유용 기간이 끝나는 시점의 자산 액수를 지정하는 Double
life	필수적인 요소. 자산의 유용 기간 길이를 지정하는 Double
period	필수적인 요소. 자산 감가상각이 계산되는 기간을 지정하는 Double
factor	선택적인 요소. 잔액이 감소하는 비율을 지정하는 Variant. 생략하면 2(이중 체감법)로 간주합니다.
참고

이중 체감 잔액법은 가속화된 비율로 감가상각을 계산합니다. 감가상각은 최초의 기간에서 가장 높고 연속적으로 감소합니다.

life와 period 인수는 같은 단위로 표시해야 합니다. 예를 들어 life의 단위가 달이면 period도 달로 표시해야 합니다. 인수들은 모두 양수여야 합니다.

DDB 함수는 다음과 같은 공식을 사용하여 주어진 기간 동안의 감가상각을 계산합니다.

감가상각 / period = ((cost � salvage) * factor) / life


FV 함수

정기적인 고정 불입액과 고정 이율을 기준으로 연금에 대한 미래 가치를 지정하는 Double을 반환합니다.

구문

FV(rate, nper, pmt[, pv[, type]])

FV 함수는 다음과 같은 명명된 인수로 구성되어 있습니다.

구성 요소	설명
rate	필수적인 요소. 일정 기간 당 이율을 지정하는 Double입니다. 예를 들면 연 이율(APR) 10%로 자동차 대부를 받고 매월 납부금을 지불하려면 기간 당 이율은 0.1/12 또는 0.0083이 됩니다.
nper	필수적인 요소. 연금의 총 지불 기간 수를 지정하는 Integer입니다. 예를 들면 4년 동안의 자동차 대부에 대해 매월 상환하려면 지불 기간은 총 4 * 12 또는 48이 됩니다.
pmt	필수적인 요소. 각 기간마다 지불할 금액을 지정하는 Double 입니다. 대개 지불액에는 지불 기간 동안 변경되지 않는 원금과 이율이 포함됩니다.
pv	선택적인 요소. 미래의 지불액에 대한 현재의 값(또는 총액)을 지정하는 Variant입니다. 예를 들면 돈을 빌려서 차를 살 때 대출액은 대금업자에게 매달 지불할 현재의 값이 됩니다. 생략하면 0으로 간주합니다.
type	선택적인 요소. 지불 만기일을 지정하는 Variant 입니다. 지불 기간이 끝날 때 지불액을 지불하려면 0, 기간이 시작될 때 지불하려면 1을 사용합니다. 생략하면 0으로 간주합니다.
참고

연금은 일정 기간에 걸쳐 고정된 금액을 지불하는 것입니다. 연금은 대부(예: 주택 담보 대출금)나 투자(예: 정기 적금)가 될 수 있습니다.

rate와 nper 인수는 같은 단위로 표시된 지불 기간을 사용하여 계산되어야 합니다. 예를 들어 rate를 달로 계산하면 nper도 달로 계산해야 합니다.

모든 인수에 대해 지불하는 금액(예: 저축성 예금)은 음수로, 수령하는 금액(예: 배당금)은 양수로 표시합니다.


IPmt 함수

정기 고정 지불액과 고정 이율을 기준으로 일정 기간 동안 연금의 이자 지불액을 지정하는 Double을 반환합니다.

구문

IPmt(rate, per, nper, pv[, fv[, type]])

IPmt 함수는 다음과 같은 명명된 인수로 구성되어 있습니다.

구성 요소	설명
rate	필수적인 요소. 일정 기간 당 이율을 지정하는 Double 입니다. 예를 들면 연 이율(APR) 10%로 자동차 대부를 받고 매월 지불하려면 기간 당 비율은 0.1/12 또는 0.0083이 됩니다.
per	필수적인 요소. 1에서 nper 에 이르는 지불 기간을 지정하는 Double 입니다.
nper	필수적인 요소. 연금의 총 지불 기간 수를 지정하는 Double 입니다. 예를 들면 4년 동안의 자동차 대부에 대해 매월 상환하려면 지불 기간은 총 4 * 12 또는 48이 됩니다.
pv	필수적인 요소. 장래의 지불액이나 수령액에 대한 현재의 값을 지정하는 Double 입니다. 예를 들면 돈을 대출받아 차를 살 때 대출액은 대금업자에게 매달 지불할 현재의 값이 됩니다.
fv	선택적인 요소. 마지막으로 지불한 후에 원하는 장래의 값이나 자금 잔액을 지정하는 Variant입니다. 예를 들면 마지막으로 지불한 후의 가치가 없으므로 장래의 대출금은 0원이 됩니다. 그러나 자녀들의 교육 기간 17년에 걸쳐 50,000,000원을 저축하고 싶다면 장래의 값은 50,000,000원이 됩니다. 생략하면 0으로 간주합니다.
type	선택적인 요소. 지불 만기일을 지정하는 Variant 입니다. 지불 기간이 끝날 때 지불액을 지불하려면 0, 기간이 시작될 때 지불하려면 1을 사용합니다. 생략하면 0으로 간주합니다.
참고

연금은 일정 기간에 걸쳐 고정된 금액을 지불하는 것입니다. 연금은 대부(예: 주택 담보 대출금)나 투자(예: 정기 적금)가 될 수 있습니다.

rate와 nper 인수는 같은 단위로 표시된 지불 기간을 사용하여 계산되어야 합니다. 예를 들어 rate를 달로 계산하면 nper도 달로 계산해야 합니다.

모든 인수에 대해 지불하는 금액(예: 저축성 예금)은 음수로, 수령하는 금액(예: 배당금)은 양수로 표시됩니다.


IRR 함수

일정 기간의 자금 흐름(지불액과 수령액)에 대한 내부 수익율을 지정하는 Double을 반환합니다.

구문

IRR(values()[, guess])

IRR 함수는 다음과 같은 명명된 인수로 구성되어 있습니다.

구성 요소	설명
values()	필수적인 요소. 자금 흐름 값을 지정하는 Double 형식의 배열입니다. 배열에는 하나 이상의 음수(지불액)와 하나의 양수(수령액)가 들어 있어야 합니다.
guess	선택적인 요소. IRR 함수에 의해 반환될 추정치를 지정하는 Variant입니다. 생략하면 guess는 0.1(10%)이 됩니다.
참고

IRR 함수가 반환하는 내부 수익률은 일정 기간에 발생한 지불액과 수령액으로 구성된 투자에 대해 받게 되는 이율입니다.

IRR 함수는 배열에 있는 값의 순서를 사용하여 지불액과 수령액의 순서를 해석합니다. 지불액과 수령액을 정확한 순서로 입력했는지 확인하십시오. 각 기간 동안의 자금 흐름은 수정할 필요가 없습니다.

IRR 함수는  반복적으로 계산됩니다. IRR 함수는  guess 값에서 시작하여 결과가 0.00001%에 이를 때까지 계산을 반복합니다. 20번을 시도한 후에도 IRR이 결과를 찾을 수 없으면 실패하게 됩니다.


MIRR 함수

일정 기간의 자금 흐름(지불액과 수령액)에 대한 수정된 내부 수익률을 지정하는 Double을 반환합니다.

구문

MIRR(values(), finance_rate, reinvest_rate)

MIRR 함수는 다음과 같은 명명된 인수로 구성되어 있습니다.

구성 요소	설명
values()	필수적인 요소. 자금 흐름 값을 지정하는 Double 형식의 배열입니다. 배열에는 하나 이상의 음수(지불액)와 하나의 양수(수령액)가 들어 있어야 합니다.
finance_rate	필수적인 요소. 재정 처리 비용으로 지불할 이율을 지정하는 Double 입니다.
reinvest_rate	필수적인 요소. 자금 재투자로 인한 수익에서 받을 이율을 지정하는 Double 입니다.
참고

수정된 내부 수익률은 다른 이율로 지불액과 수령액을 처리할 때의 내부 수익률입니다. MIRR 함수는 투자 비용 (finance_rate)과 자금의 재투자에서 받게 되는 이율(reinvest_rate)을 모두 고려합니다.

finance_rate와 reinvest_rate 인수는 소수로 백분율을 표시합니다. 예를 들면 12%는 0.12로 표시합니다.

MIRR 함수는 배열에 있는 값의 순서를 사용하여 지불액과 수령액의 순서를 해석합니다. 지불액과 수령액을 정확한 순서로 입력했는지 확인하십시오.


NPer 함수

정기 고정 지불액과 고정 이율을 기준으로 연금의 기간 수를 지정하는 Double을 반환합니다.

구문

NPer(rate, pmt, pv[, fv[, type]])

NPer 함수는 다음과 같은 명명된 인수로 구성되어 있습니다.

구성 요소	설명
rate	필수적인 요소. 일정 기간 당 이율을 지정하는 Double 입니다. 예를 들면 연 이율(APR) 10%로 자동차 대부를 받고 매월 지불하려면 기간 당 비율은 0.1/12 또는 0.0083이 됩니다.
pmt	필수적인 요소. 각 기간에 지불할 금액을 지정하는 Double 입니다. 대개 지불액에는 지불 기간 동안 변경되지 않는 원금과 이율이 포함됩니다.
pv	필수적인 요소. 장래의 지불액이나 수령액에 대한 현재의 값을 지정하는 Double 입니다. 예를 들면 돈을 대부받아 차를 살 때 대출액은 대금업자에게 매달 지불할 현재의 값이 됩니다.
fv	선택적인 요소. 마지막으로 지불한 후에 원하는 장래의 값이나 자금 잔액을 지정하는 Variant입니다. 예를 들면 마지막으로 지불한 후의 가치가 0 이므로 장래의 대출금은 0원이 됩니다. 그러나 자녀들의 교육 기간 17년에 걸쳐 50,000,000원을 저축하고 싶다면 장래의 값은 50,000,000원이 됩니다. 생략하면 0으로 간주합니다.
type	선택적인 요소. 지불 만기일을 지정하는 Variant 입니다. 지불 기간이 끝날 때 지불액을 지불하려면 0, 기간이 시작될 때 지불하려면 1을 사용합니다. 생략하면 0으로 간주합니다.
참고

연금은 일정 기간에 걸쳐 고정된 금액을 지불하는 것입니다. 연금은 대부(예: 주택 담보 대출금)나 투자(예: 정기 적금)가 될 수 있습니다.

모든 인수에 대해 지불하는 금액(예: 저축성 예금)은 음수로, 수령하는 금액(예: 배당금)은 양수로 표시합니다.


NPV 함수

정기적인 자금 흐름(지불액과 수령액)과 할인율을 기준으로 현재의 순 투자 가치를 지정하는 Double을 반환합니다.

구문

NPV(rate, values())

NPV 함수는 다음과 같은 명명된 인수로 구성되어 있습니다.

구성 요소	설명
rate	필수적인 요소. 전 기간에 걸친 할인율을 지정하는 Double이며 소수로 표시합니다.
values()	필수적인 요소. 자금 흐름 값을 지정하는 Double 형식의 배열입니다. 배열에는 하나 이상의 음수(지불액)와 하나의 양수(수령액)가 있어야 합니다.
참고

현재의 순 투자 가치는 장래의 지불액과 수령액에 대한 현재의 값입니다.

NPV 함수는 배열에 있는 값의 순서를 사용하여 지불액과 수령액의 순서를 해석합니다. 지불액과 수령액을 정확한 순서로 입력했는지 확인하십시오.

NPV 투자는 배열의 첫째 자금 흐름 값의 날짜 이전에 하나의 기간을 시작하여 마지막 자금 흐름 값으로 끝납니다.

현재의 순 투자 가치는 장래의 자금 흐름을 기준으로 계산됩니다. 첫째 자금 흐름이 첫 기간이 시작할 때 발생하면 NPV 함수가 계산한 값에 첫째 값을 추가해야 하고 values()의 자금 흐름 값에는 포함할 필요가 없습니다.

PV 함수가 기간의 끝이나 시작에서 자금 흐름이 시작될 수 있다는 것을 제외하면 NPV 함수는 PV 함수(현재 값)와 비슷합니다. 변수 NPV 자금 흐름 값과는 달리 PV 자금 흐름은 투자의 전 기간에 걸쳐 고정되어야 합니다.


Pmt 함수

정기 고정 지불액과 고정 이율을 기준으로 연금에 대한 지불액을 지정하는 Double을 반환합니다.

구문

Pmt(rate, nper, pv[, fv[, type]])

Pmt 함수는 다음과 같은 명명된 인수로 구성되어 있습니다.

구성 요소	설명
rate	필수적인 요소. 일정 기간 당 이율을 지정하는 Double 입니다. 예를 들면 연 이율(APR) 10%로 자동차 대부를 받고 매월 지불하려면 기간 당 비율은 0.1/12 또는 0.0083이 됩니다.
nper	필수적인 요소. 연금의 총 지불 기간 수를 지정하는 Integer입니다. 예를 들면 4년 동안의 자동차 대부에 대해 매월 지불하려면 지불 기간은 총 4 * 12 또는 48이 됩니다.
pv	필수적인 요소. 장래에 지불할 지불액이 현재 가치가 있는 현재 값 또는 총액을 지정하는 Double 입니다. 예를 들면 돈을 빌려서 차를 살 때 대출액은 대금업자에게 매달 지불할 현재의 값이 됩니다.
fv	선택적인 요소. 마지막으로 지불한 후에 원하는 장래의 값이나 자금 잔액을 지정하는 Variant입니다. 예를 들면 마지막으로 지불한 후의 가치가 0원이므로 장래의 대출금은 0원이 됩니다. 그러나 자녀들의 교육 기간 17년에 걸쳐 50,000,000원을 저축하고 싶다면 장래의 값은 50,000,000원이 됩니다. 생략하면 0으로 간주합니다.
type	선택적인 요소. 지불 만기일을 지정하는 Variant 입니다. 지불 기간이 끝날 때 지불액을 지불하려면 0을 사용하고 기간이 시작될 때 지불하려면 1을 사용합니다. 생략하면 0으로 간주합니다.
참고

연금은 일정 기간에 걸쳐 고정된 금액을 지불하는 것입니다. 연금은 대부(예: 주택 담보 대출금)나 투자(예: 정기 적금)가 될 수 있습니다.

rate와 nper 인수는 같은 단위로 표시되는 지불 기간을 사용하여 계산해야 합니다. 예를 들면 rate를 달로 계산하면 nper도 달로 계산해야 합니다.

모든 인수에 대해 지불하는 금액(예: 저축성 예금)은 음수로, 수령하는 금액(예: 배당금)은 양수로 표시됩니다.


PPmt 함수

정기 고정 지불액과 고정 이율을 기준으로 일정 기간 동안 연금의 원금 지불액을 지정하는 Double을 반환합니다.

구문

PPmt(rate, per, nper, pv[, fv[, type]])

PPmt 함수는 다음과 같은 명명된 인수로 구성되어 있습니다.

구성 요소	설명
rate	필수적인 요소. 일정 기간 당 이율을 지정하는 Double입니다. 예를 들면 연 이율(APR) 10%로 자동차 대부를 받고 매월 지불하려면 기간 당 비율은 0.1/12 또는 0.0083이 됩니다.
per	필수적인 요소. 1에서 nper 사이의 지불 기간을 지정하는 Integer입니다.
nper	필수적인 요소. 연금의 총 지불 기간 수를 지정하는 Integer입니다. 예를 들면 4년 동안의 자동차 대부에 대해 매월 지불하려면 지불 기간은 총 4 * 12 또는 48이 됩니다.
pv	필수적인 요소. 장래의 지불액이나 수령액에 대한 현재의 값을 지정하는 Double입니다. 예를 들면 돈을 대부받아 차를 살 때 대출액은 대금업자에게 매달 지불할 현재의 값이 됩니다.
fv	선택적인 요소. 마지막으로 지불한 후에 원하는 장래의 값이나 자금 잔액을 지정하는 Variant입니다. 예를 들면 마지막으로 지불한 후의 가치가 0이므로 장래의 대출금은 0원이 됩니다. 그러나 자녀들의 교육 기간 17년에 걸쳐 50,000,000원을 저축하고 싶다면 장래의 값은 50,000,000원이 됩니다. 생략하면 0으로 간주합니다.
type	선택적인 요소. 지불 만기일을 지정하는 Variant입니다. 지불 기간이 끝날 때 지불액을 지불하려면 0, 기간이 시작될 때 지불하려면 1을 사용합니다. 생략하면 0으로 간주합니다.
참고

연금은 일정 기간에 걸쳐 고정된 금액을 지불하는 것입니다. 연금은 대부(예: 주택 담보 대출금)나 투자(예: 정기 적금)가 될 수 있습니다.

rate와 nper 인수는 같은 단위로 표시되는 지불 기간을 사용하여 계산해야 합니다. 예를 들면 rate를 달로 계산하면 nper도 달로 계산해야 합니다.

모든 인수에 대해 지불하는 금액(예: 저축성 예금)은 음수로, 수령하는 금액(예: 배당금)은 양수로 표시됩니다.


PV 함수

장래에 지불할 정기 고정 지불액과 고정 이율을 기준으로 연금의 현재 가치를 지정하는 Double을 반환합니다.

구문

PV(rate, nper, pmt[, fv[, type]])

PV 함수는 다음과 같은 명명된 인수로 구성되어 있습니다.

구성 요소	설명
rate	필수적인 요소. 일정 기간 당 이율을 지정하는 Double입니다. 예를 들면 연 이율(APR) 10%로 자동차 대부를 받고 매월 지불하려면 기간 당 비율은 0.1/12 또는 0.0083이 됩니다.
nper	필수적인 요소. 연금의 총 지불 기간 수를 지정하는 Integer입니다. 예를 들면 4년 동안의 자동차 대부에 대해 매월 지불하려면 지불 기간은 총 4 * 12 또는 48이 됩니다.
pmt	필수적인 요소. 각 기간에 지불할 지불액을 지정하는 Double입니다. 지불액에는 대개 전체 연금 기간에 걸쳐 변경되지 않는 원금과 이자가 포함됩니다.
fv	선택적인 요소. 마지막으로 지불한 후에 원하는 장래의 값이나 자금 잔액을 지정하는 Variant입니다. 예를 들면 마지막으로 지불한 후의 가치가 0원이므로 장래의 대출금은 0원이 됩니다. 그러나 자녀들의 교육 기간 17년에 걸쳐 50,0000,000원을 저축하고 싶다면 장래의 값은 50,000,000원이 됩니다. 생략하면 0으로 간주합니다.
type	선택적인 요소. 지불 만기일을 지정하는 Variant. 지불 기간이 끝날 때 지불액을 지불하려면 0, 기간이 시작될 때 지불하려면 1을 사용합니다. 생략하면 0으로 간주합니다.
참고

연금은 일정 기간에 걸쳐 고정된 금액을 지불하는 것입니다. 연금은 대부(예: 주택 담보 대출금)나 투자(예: 정기 적금)가 될 수 있습니다.

rate와 nper 인수는 같은 단위로 표시되는 지불 기간을 사용하여 계산해야 합니다. 예를 들어 rate를 달로 계산하면 nper도 달로 계산해야 합니다.

모든 인수에 대해 지불하는 금액(예: 저축성 예금)은 음수로, 수령하는 금액(예: 배당금)은 양수로 표시됩니다.


Rate 함수

연금에 대한 일정 기간 당 이율을 지정하는 Double을 반환합니다.

구문

Rate(nper, pmt, pv[, fv[, type[, guess]]])

Rate 함수는 다음과 같은 명명된 인수로 구성되어 있습니다.

구성 요소	설명
nper	필수적인 요소. 연금의 총 지불 기간 수를 지정하는 Double 입니다. 예를 들면 4년 동안의 자동차 대부에 대해 매월 지불하려면 지불 기간은 총 4 * 12 또는 48이 됩니다.
pmt	필수적인 요소. 각 기간에 지불할 지불액을 지정하는 Double입니다. 지불액에는 대개 전체 연금 기간에 걸쳐 변경되지 않는 원금과 이자가 포함됩니다.
pv	필수적인 요소. 장래의 지불액이나 수령액에 대한 현재의 값을 지정하는 Double입니다. 예를 들면 돈을 빌려서 차를 살 때 대출액은 대금업자에게 매달 지불할 현재의 값이 됩니다.
fv	선택적인 요소. 마지막으로 지불한 후에 원하는 장래의 값이나 자금 잔액을 지정하는 Variant입니다. 예를 들면 마지막으로 지불한 후의 가치가 0원이므로 장래의 대출금은 대출금은 0원이 됩니다. 그러나 자녀들의 교육 기간 17년에 걸쳐 50,000,000원을 저축하고 싶다면 장래의 값은 50,000,000원이 됩니다. 생략하면 0으로 간주합니다.
type	선택적인 요소. 지불 만기일을 지정하는 Variant입니다. 지불 기간이 끝날 때 지불액을 지불하려면 0, 기간이 시작될 때 지불하려면 1을 사용합니다. 생략하면 0으로 간주합니다.
guess	선택적인 요소. 추정치를 지정하는 Variant는 Rate에 의해 반환됩니다. 생략하면 guess는 0.1(10%)이 됩니다.
참고

연금은 일정 기간에 걸쳐 고정된 금액을 지불하는 것입니다. 연금은 대부(예: 주택 담보 대출금)나 투자(예: 월별 저축 계획)가 될 수 있습니다.

모든 인수에 대해 지불하는 금액(예: 저축성 예금)은 음수로, 수령하는 금액(예: 배당금)은 양수로 표시됩니다.

Rate 함수는  반복적으로 계산됩니다. Rate 함수는 guess 값으로 시작하여 결과가 0.00001%에 이를 때까지 계산을 반복합니다. 20번을 시도한 후에도 Rate 함수가 결과를 찾을 수 없으면 실패하게 됩니다. 추정치(guess)가 10%인 경우에 Rate 함수가 실패하면 guess에 다른 값을 사용하여 시도해 보십시오.


SLN 함수

단일 기간 동안의 정액법을 지정하는 Double을 반환합니다.

구문

SLN(cost, salvage, life)

SLN 함수는 다음과 같은 명명된 인수로 구성되어 있습니다.

구성 요소	설명
cost	필수적인 요소. 초기 자산 비용을 지정하는 Double입니다.
salvage	필수적인 요소. 유용 기간이 끝나는 시점의 자산 액수를 지정하는 Double입니다.
life	필수적인 요소. 자산의 유용 기간 길이를 지정하는 Double입니다.
참고

감가상각 기간은 life 인수와 같은 단위로 표시되어야 하며, 인수들은 반드시 모두 양수이어야 합니다.


SYD 함수

지정된 기간 동안 자산의 감가상각을 지정하는 Double을 반환합니다.

구문

SYD(cost, salvage, life, period)

SYD 함수는 다음과 같은 명명된 인수로 구성되어 있습니다.

구성 요소	설명
cost	필수적인 요소. 초기 자산 비용을 지정하는 Double 입니다.
salvage	필수적인 요소. 유용 기간이 끝나는 시점의 자산 액수를 지정하는 Double 입니다.
life	필수적인 요소. 자산의 유용 기간 길이를 지정하는 Double 입니다.
period	필수적인 요소. 자산 감가상각을 계산하는 기간을 지정하는 Double 입니다.
참고

life와 period 인수는 같은 단위로 표시해야 합니다. 예를 들어 life의 단위가 달이면 period도 달로 표시해야 합니다. 인수들은 반드시 모두 양수이어야  합니다.


IsArray 함수 예제

아래 예제에서는 IsArray 함수를 사용하여 변수가 배열인지를 검사합니다.

Dim MyArray(1 To 5) As Integer, YourArray, MyCheck	' 배열 변수를 선언합니다.

YourArray = Array(1, 2, 3)	' 배열 함수를 사용합니다.

MyCheck = IsArray(MyArray)	' True를 반환합니다.

MyCheck = IsArray(YourArray)	' True를 반환합니다.


IsDate 함수 예제

아래 예제에서는 IsDate 함수를 사용하여 식을 날짜로 변경할 수 있는지를 확인합니다.

Dim MyDate, YourDate, NoDate, MyCheck

MyDate = "February 12, 1969": YourDate = #2/12/69#: NoDate = "Hello"

MyCheck = IsDate(MyDate)	' True를 반환합니다.

MyCheck = IsDate(YourDate)	' True를 반환합니다.

MyCheck = IsDate(NoDate)	' False를 반환합니다.


IsEmpty 함수 예제

아래 예제에서는 IsEmpty 함수를 사용하여 변수가 초기화되었는지를 확인합니다.

Dim MyVar, MyCheck

MyCheck = IsEmpty(MyVar)	' True를 반환합니다.

MyVar = Null	' Null을 지정합니다.

MyCheck = IsEmpty(MyVar)	' False를 반환합니다.

MyVar = Empty	' Empty를 지정합니다.

MyCheck = IsEmpty(MyVar)	' True를 반환합니다.


IsError 함수 예제

아래 예제에서는 IsError 함수를 사용하여 수식이 오류값을 갖는지를 검사합니다. CVErr 함수는 사용자 정의 함수로부터 Error Variant를 반환하는 데 사용합니다. UserFunction이 UserFunction = CVErr(32767)문이라고 지정된 반환값과 같은 오류값을 반환하는 사용자 정의 Function 프로시저라고 가정합니다(여기서 32767은 사용자 정의 숫자).

Dim ReturnVal, MyCheck

ReturnVal = UserFunction()

MyCheck = IsError(ReturnVal)	' True를 반환합니다.


IsMissing 함수 예제

아래 예제에서는 IsMissing 함수를 사용하여 선택 요소인 인수가 사용자 정의 프로시저에 주어졌는지를 검사합니다. Optional 인수가 Variant 이외에 기본값과 형식을 가질 수 있습니다.

Dim ReturnValue

' 다음 문은 사용자 정의 Function 프로시저를 호출합니다.

ReturnValue = ReturnTwice()	' Null을 반환합니다.

ReturnValue = ReturnTwice(2)	' 4를 반환합니다.

' Function 프로시저 정의

Function ReturnTwice(Optional A)

If IsMissing(A) Then

' 인수가 없으면 Null을 반환합니다.

ReturnTwice = Null

Else

' 인수가 있으면 2배 값을 반환합니다.

ReturnTwice = A * 2

End If

End Function


IsNull 함수 예제

아래 예제에서는 IsNull 함수를 사용하여 변수가 Null 값을 포함하는지를 확인합니다.

Dim MyVar, MyCheck

MyCheck = IsNull(MyVar)	' False를 반환합니다.

MyVar = ""

MyCheck = IsNull(MyVar)	' False를 반환합니다.

MyVar = Null

MyCheck = IsNull(MyVar)	' True를 반환합니다.


IsNumeric 함수 예제

아래 예제에서는 IsNumeric 함수를 사용하여 변수를 숫자로 평가할 수 있는지를 확인합니다.

Dim MyVar, MyCheck

MyVar = "53"	' 값을 지정합니다.

MyCheck = IsNumeric(MyVar)	' True를 반환합니다.

MyVar = "459.95"	' 값을 지정합니다.

MyCheck = IsNumeric(MyVar)	' True를 반환합니다.

MyVar = "45 Help"	' 값을 지정합니다.

MyCheck = IsNumeric(MyVar)	' False를 반환합니다.


IsObject 함수 예제

아래 예제에서는 IsObject 함수를 사용하여 식별자가 개체 변수를 나타내는지를 확인합니다. MyObject와 YourObject는 같은 형식의 개체 변수입니다. 이 변수들은 설명할 때만 사용되는 일반적인 이름입니다.

Dim MyInt As Integer, YourObject, MyCheck	' 변수를 선언합니다.

Dim MyObject As Object

Set YourObject = MyObject	' 개체 참조를 지정합니다.

MyCheck = IsObject(YourObject)	' True를 반환합니다.

MyCheck = IsObject(MyInt)	' False를 반환합니다.


TypeName 함수 예제

아래 예제에서는 TypeName 함수를 사용하여 변수에 관한 정보를 반환합니다.

' 변수를 선언합니다.

Dim NullVar, MyType, StrVar As String, IntVar As Integer, CurVar As Currency

Dim ArrayVar (1 To 5) As Integer

NullVar = Null	' Null을 지정합니다.

MyType = TypeName(StrVar)	' "String"을 반환합니다.

MyType = TypeName(IntVar)	' "Integer"를 반환합니다.

MyType = TypeName(CurVar)	' "Currency"를 반환합니다.

MyType = TypeName(NullVar)	' "Null"을 반환합니다.

MyType = TypeName(ArrayVar)	' "Integer()"를 반환합니다.


VarType 함수 예제

아래 예제에서는 VarType 함수를 사용하여 변수의 하위 형식을 확인합니다.

Dim IntVar, StrVar, DateVar, MyCheck

' 변수를 초기화합니다.

IntVar = 459: StrVar = "Hello World": DateVar = #69/2/12#

MyCheck = VarType(IntVar)	' 2를 반환합니다.

MyCheck = VarType(DateVar)	' 7을 반환합니다.

MyCheck = VarType(StrVar)	' 8을 반환합니다.


IsArray 함수

변수가 배열인지 나타내는 Boolean 값을 반환합니다.

구문

IsArray(varname)

필수 요소인 varname 인수는 변수를 지정하는 식별자입니다.

참고

IsArray는 변수가 배열이면 True를, 배열이 아니면 False를 반환합니다. IsArray는 배열이 들어 있는 Variant를 사용할 때 특히 유용합니다.


IsDate 함수

식을 날짜로 변환할 수 있는지 나타내는 Boolean 값을 반환합니다.

구문

IsDate(expression)

필수 요소인 expression 인수는 날짜나 시간으로 인식할 수 있는 날짜식 또는 문자식이 들어 있는 Variant입니다.

참고

IsDate는 식이 날짜이거나 유효한 날짜로 인식될 수 있으면 True를, 그렇지 않으면 False를 반환합니다. Microsoft Windows에서 사용할 수 있는 유효한 날짜의 범위는 A.D. 100년 1월 1일에서 A.D. 9999년 12월 31일까지이고, 운영 체제마다 그 범위가 다릅니다.


IsEmpty 함수

변수가 초기화 되었는지를 나타내는 Boolean 값을 반환합니다.

구문

IsEmpty(expression)

필수 요소인 expression 인수는 수식 또는 문자식이 들어 있는 Variant입니다. 그러나 개개의 변수가 초기화되었는지 결정하기 위해 IsEmpty를 사용하기 때문에 expression 인수는 거의 단일 변수 이름이 됩니다.

참고

IsEmpty는 변수가 초기화되지 않거나 Empty로 설정되면 True를, 그렇지 않으면 False를 반환합니다. expression에 하나 이상의 변수가 들어 있으면 항상 False가 반환됩니다. IsEmpty는 Variant에 대한 의미있는 정보를 반환합니다.


IsError 함수

식이 오류값인지를 나타내는 Boolean 값을 반환합니다.

구문

IsError(expression)

필수 요소인 expression 인수는 유효한 식이면 됩니다.

참고

CVErr 함수를 사용하여 실수를 오류값으로 변환하여 오류값을 생성합니다. 수식이 오류를 나타내는지 결정하기 위해 IsError 함수를 사용합니다. IsError는 expression 인수가 오류를 나타내면 True를, 그렇지 않으면 False를 반환합니다.


IsMissing 함수

선택 요소인 Variant 인수가 프로시저에 전달되었는지 나타내는 Boolean 값을 반환합니다.

구문

IsMissing(argname)

필수 요소인 argname 인수는 선택 요소인 Variant 프로시저 인수의 이름을 포함합니다.

참고

IsMissing 함수를 사용하여 호출 프로시저가 선택 요소인 Variant 인수를 제공했는지 알 수 있습니다. IsMissing은 특정 인수에 어떤 값도 전달되지 않으면 True를, 그렇지 않으면 False를 반환합니다. IsMissing이 인수에 대해 True를 반환하면 다른 코드에서 빠진 인수를 사용하여 사용자 정의 오류가 발생할 수도 있습니다. IsMissing을 ParamArray 인수에 사용하면 항상 False가 반환됩니다. ParamArray가 비어 있는지 알아 보려면 배열의 위첨자가 아래첨자보다 작은지 검사해 보십시오.

메모   IsMissing은 Integer나 Double 같은 간단한 데이터 형식에서는 작동하지 않습니다. Variants와 달리 IsMissing은 �누락된� 플래그 비트에 대한 조항이 없기 때문입니다. 이 때문에 입력한 선택적인 인수에 대한 구문을 이용하여 기본값을 지정할 수 있습니다. 프로시저를 호출할 때 인수를 생략하면 아래 예제에서 보는 것처럼 인수는 이 기본값을 가지게 됩니다.

Sub MySub(Optional MyVar As String = "specialvalue")

    If MyVar = "specialvalue" Then

    ' MyVar가 생략됩니다.

    Else

    ...

End Sub

함수 호출에서 MyVar를 생략하는 경우에는 MyVar에 포함시킬 값과 기본값을 같게 만들어 많은 경우 If MyVar 테스트를 완전히 생략할 수 있습니다. 이로써 코드가 더 작고 효율적이 됩니다.


IsNull 함수

식이 유효한 데이터를 전혀 포함하지 않는지를(Null) 나타내는 Boolean 값을 반환합니다.

구문

IsNull(expression)

필수 요소인 expression 인수는 수식 또는 문자식이 들어 있는 Variant입니다.

참고

IsNull은 expression이 Null이면 True를, Null이 아니면 False를 반환합니다. expression에 둘 이상의 변수가 들어 있는 경우 구성 변수에 Null이 있으면 전체 식에 True를 반환합니다.

Null 값은 Variant에 유효한 데이터가 전혀 없음을 나타냅니다. Null은 변수가 초기화되지 않음을 나타내는 Empty와는 같지 않습니다. 또한 이따금 null 문자열로 참조되는 길이가 0인 문자열("")과도 같지 않습니다.

중요 IsNull 함수를 사용하여 식에 Null 값이 들어 있는지 결정합니다. 어떤 상황에서 True로 평가하려는 식(If Var = Null과 If Var <> Null과 같이)은 항상 False가 됩니다. Null이 들어 있는 식은 그 자체가 Null이 되므로 False가 됩니다.


IsNumeric 함수

식을 숫자로 평가할 수 있는지 나타내는 Boolean 값을 반환합니다.

구문

IsNumeric(expression)

필수 요소인 expression 인수는 수식 또는 문자식이 들어 있는 Variant입니다.

참고

IsNumeric은 expression 전체가 수로 인식되면 True를, 그렇지 않으면 False를 반환합니다.

expression이 날짜식이면 IsNumeric은 False를 반환합니다.


IsObject 함수

식별자가 개체 변수인지를 나타내는 Boolean 값을 반환합니다.

구문

IsObject(identifier)

필수 요소인 identifier 인수는 변수 이름입니다.

참고

IsObject는 Variant가 VarType vbObject로 되어 있는지의 여부를 결정하는 경우에만 유용합니다. 이것은 Variant가 실제로 개체를 참조하거나 Nothing을 포함하는 경우에 발생할 수 있습니다.

IsObject는 identifier가 Object 형식이나 유효한 클래스 형식으로 선언된 변수이거나, identifier가 VarType vbObject로 된 Variant 또는 사용자 정의 개체인 경우에는 True를, 그렇지 않으면 False를 반환합니다. IsObject는 변수가 Nothing으로 설정되어 있다고 하더라도 True를 반환합니다.

오류 처리를 사용하여 개체 참조가 유효한 지 확인할 수 있습니다.


TypeName 함수

변수에 대한 정보를 제공하는 String을 반환합니다.

구문

TypeName(varname)

필수 요소인 varname 인수는 사용자 정의 형식의 변수를 제외한 변수가 들어 있는 Variant입니다.

참고

TypeName이 반환하는 문자열은 다음과 같습니다.

반환되는 문자열	변수
Object 형식	형식이 objecttype인 개체
Integer	정수
Long	긴 정수
Single	단정도 부동 소수점 수
Double	배정도 부동 소수점 수
Currency	통화값
Decimal	십진값
Date	날짜값
String	문자열
Error	오류값
Empty	초기화되지 않음
Null	유효한 데이터 없음
Object	개체
Unknown	형식이 알려지지 않은 개체
Nothing	개체를 참조하지 않는 개체 변수
varname이 배열이면 반환되는 문자열은 반환 가능한 문자열(또는 Variant)에 빈 괄호가 첨가됩니다. 예를 들어 varname이 정수 배열이면 TypeName은 "Integer( )"를 반환합니다.


VarType 함수

변수의 하위 형식을 나타내는 Integer를 반환합니다.

구문

VarType(varname)

필수 요소인 varname 인수는 사용자 정의 형식의 변수를 제외한 변수가 들어 있는 Variant입니다.

반환 형식

상수	값	설명
vbEmpty	0	Empty(초기화되지 않음)
vbNull	1	Null(유효한 데이터 없음)
vbInteger	2	정수
vbLong	3	긴 정수
vbSingle	4	단정도 부동 소수점 수
vbDouble	5	배정도 부동 소수점 수
vbCurrency	6	통화값
vbDate	7	날짜값
vbString	8	문자열
vbObject	9	개체
vbError	10	오류값
vbBoolean	11	Boolean 값
vbVariant	12	Variant(variant 배열에서만 사용)
vbDataObject	13	데이터 액세스 개체
vbDecimal	14	십진값
vbByte	17	바이트값
vbArray	8192	배열
메모 Visual Basic for Applications에서 이 상수를 지정합니다. 코드에서 실제 값 대신 이 상수 이름을 사용할 수 있습니다.

참고

VarType 함수는 vbArray 값만을 되돌려 주지 않고 그 값을 항상 특별한 형식의 배열을 나타내는 다른 값에 추가합니다. 상수 vbVariant는 VarType 함수에 대한 인수가 Variant 형식의 배열임을 나타내는 vbArray와 함께 반환됩니다. 예를 들어 정수 배열에 반환되는 값은 vbInteger + vbArray 또는 8194로 계산됩니다. 개체에 기본 속성이 있으면 VarType(object)은 개체의 기본 속성 형식을 반환합니다.


Empty<키워드>
Empty

Empty 키워드는 Variant 하위 형식으로 사용됩니다. 이 키워드는 초기화되지 않은 변수 값을 나타냅니다.


False<키워드>
False

False 키워드는 0과 같은 값을 갖습니다.


Me<키워드>
Me

Me 키워드는 암시적으로 선언된 변수처럼 동작합니다. 클래스 모듈 안의 모든 프로시저에서 자동으로 사용됩니다. 클래스가 둘 이상의 인스턴스를 가질 수 있을 때 Me는 코드가 실행되고 있는 클래스의 특정 인스턴스를 참조하는 방법을 제공합니다. Me는 현재 실행 중인 클래스의 인스턴스에 대한 정보를 다른 모듈의 프로시저로 전달할 때 특히 유용합니다. 예를 들어 모듈에 다음과 같은 프로시저가 있다고 가정합니다.

Sub ChangeFormColor(FormName As Form)

FormName.BackColor = RGB(Rnd * 256, Rnd * 256, Rnd * 256)

End Sub

다음 문을 사용하여 이 프로시저를 호출하고 Form 클래스의 현재 인스턴스를 인수로 전달할 수 있습니다.

ChangeFormColor Me


Nothing 키워드
Nothing

Nothing 키워드를 사용하면 실제 개체에서 개체 변수를 분리합니다. Set 문을 사용하여 Nothing을 개체 변수에 할당합니다. 예를 들면 다음과 같습니다.

Set MyObject = Nothing

여러 개체 변수가 동일한 개체 변수를 참조할 수 있습니다. 개체 변수에 Nothing이 할당되면 그 변수는 더 이상 실제 개체를 참조하지 않습니다. 여러 개체 변수가 동일한 개체를 참조할 때 변수가 참조하는 개체와 관련된 메모리와 시스템 리소스는 Nothing으로 설정하거나 Set을 명시적으로 사용한 이후에만 해제됩니다. 또는 Nothing으로 설정한 마지막 개체 변수가 범위를 벗어난 이후 암시적으로 해제됩니다.


Null<키워드>
Null

Null 키워드는 Variant 하위 형식으로 사용됩니다. 이 키워드는 변수에 유효한 데이터가 들어 있지 않음을 나타냅니다.


True<키워드>
True

True 키워드는 -1과 같은 값을 갖습니다.


MacScript 함수 예제

아래 예제에서는 MacScript 함수를 사용하여 파일 선택 대화 상자(매킨토시 표준 파일 대화 상자)를 엽니다. 선택한 파일의 전체 경로가 반환됩니다. 해당되는 경우 파일 형식 앞에 경로 지정이 추가됩니다.

ThePath$ = Macscript("ChooseFile")


MacID 함수

매킨토시에서 4문자로 이루어진 상수를 Dir, Kill, Shell 및 AppActivate에 사용할 수 있는 값으로 변환합니다.

구문

MacID(constant)

constant 인수는 필수적인 요소이며 리소스 형식, 파일 형식, 응용 프로그램 서명 또는 Apple Event를 지정하는 4문자로 이루어집니다. 예를 들어 TEXT, OBIN, Excel 파일의 "XLS5"(Excel 97의 경우 "XLS8"), Microsoft Word에서 사용하는 "W6BN"( Word 97의 경우는 "W8BN") 등이 있습니다.

참고

Dir과 Kill에서 MacID는 매킨토시 파일 형식을 지정하는 데 사용됩니다. 매킨토시에서는 *와 ?를 와일드카드로 지원하지 않으므로 4문자로 된 상수를 대신 사용하여 파일 그룹을 나타낼 수 있습니다. 아래 예제는 현재 폴더에 있는 TEXT 형식 파일을 반환합니다.

Dir("SomePath", MacID("TEXT"))

Shell과 AppActivate에서 MacID는 응용 프로그램의 고유한 서명을 사용하여 응용 프로그램을 지정하는 데 사용됩니다.


MacScript 함수

AppleScript 스크립트를 실행하고 스크립트로부터 반환값이 있으면 그 값을 반환합니다.

구문

MacScript script

script 인수는 문자식입니다. 문자식은 여러 AppleScript 명령으로 구성될 수 있고 AppleScript 스크립트 이름 또는 스크립트 파일 이름을 지정할 수 있습니다.

참고

캐리지 리턴 문자(Chr(13))를 삽입하여 여러 행으로 된 스크립트를 만들 수 있습니다.


Abs 함수 예제

아래 예제에서는 Abs 함수를 사용하여 숫자의 절대값을 계산합니다.

Dim MyNumber

MyNumber = Abs(50.3)	' 50.3을 반환합니다.

MyNumber = Abs(-50.3)	' 50.3을 반환합니다.


Atn 함수 예제

아래 예제에서는 Atn 함수를 사용하여 원주율 값을 계산합니다.

Dim pi

pi = 4 * Atn(1)	' 원주율의 값을 계산합니다.


Cos 함수 예제

아래 예제에서는 Cos 함수를 사용하여 각의 코사인 값을 반환합니다.

Dim MyAngle, MySecant

MyAngle = 1.3	' 라디안 값의 각을 정의합니다.

MySecant = 1 / Cos(MyAngle)	' 시컨트를 계산합니다.


Exp 함수 예제

아래 예제에서는 Exp 함수를 사용하여 자연 로그 밑수 e의 거듭 제곱수를 반환합니다.

Dim MyAngle, MyHSin

' 라디안 값의 각을 정의합니다.

MyAngle = 1.3

' 쌍곡선 사인 값을 계산합니다.

MyHSin = (exp(MyAngle) - Exp(-1 * MyAngle)) / 2


Int 함수, Fix 함수 예제

아래 예제에서는 Int와 Fix 함수가 숫자의 정수 부분을 반환하는 방법을 보여줍니다. 인수가 음수인 경우에는 Int 함수는 그 수보다 작거나 같은 첫째 음수를 반환하고, Fix 함수는 그 수보다 크거나 같은 첫째 음수를 반환합니다.

Dim MyNumber

MyNumber = Int(99.8)	' 99를 반환합니다.

MyNumber = Fix(99.2)	' 99를 반환합니다.

MyNumber = Int(-99.8)	' -100을 반환합니다.

MyNumber = Fix(-99.8)	' -99를 반환합니다.

MyNumber = Int(-99.2)	' -100을 반환합니다.

MyNumber = Fix(-99.2)	' -99를 반환합니다.


Log 함수 예제

아래 예제에서는 Log 함수를 사용하여 숫자의 자연 로그 값을 반환합니다.

Dim MyAngle, MyLog

' 라디안 값의 각을 정의합니다.

MyAngle = 1.3

' 역 쌍곡선 사인값을 계산합니다.

MyLog = Log(MyAngle + Sqr(MyAngle * MyAngle + 1))


Randomize 문 예제

아래 예제에서는 Randomize 문을 사용하여 난수 발생기를 초기화합니다. 숫자 인수를 생략하기 때문에 Randomize는 새로운 시드값으로 Timer 함수 반환값을 사용합니다.

Dim MyValue

Randomize	' 난수 발생기를 초기화합니다.

MyValue = Int((6 * Rnd) + 1)	' 1과 6 사이의 난수를 발생합니다.


Rnd 함수 예제

아래 예제에서는 Rnd 함수를 사용하여 1에서 6까지의 난수 정수값을 발생합니다.

Dim MyValue

MyValue = Int((6 * Rnd) + 1)	' 1과 6 사이의 난수를 발생합니다.


Sgn 함수 예제

아래 예제에서는 Sgn 함수를 사용하여 수의 부호를 결정합니다.

Dim MyVar1, MyVar2, MyVar3, MySign

MyVar1 = 12: MyVar2 = -2.4: MyVar3 = 0

MySign = Sgn(MyVar1)	' 1을 반환합니다.

MySign = Sgn(MyVar2)	' -1을 반환합니다.

MySign = Sgn(MyVar3)	' 0을 반환합니다.


Sin 함수 예제

아래 예제에서는 Sin 함수를 사용하여 각의 사인 값을 반환합니다.

Dim MyAngle, MyCosecant

MyAngle = 1.3	' 라디안 값의 각을 정의합니다.

MyCosecant = 1 / Sin(MyAngle)	' 코시컨트를 계산합니다.


Sqr 함수 예제

아래 예제에서는 Sqr 함수를 사용하여 수의 제곱근을 계산합니다.

Dim MySqr

MySqr = Sqr(4)	' 2를 반환합니다.

MySqr = Sqr(23)	' 4.79583152331272를 반환합니다.

MySqr = Sqr(0)	' 0을 반환합니다.

MySqr = Sqr(-4)	' 런타임 오류가 발생합니다.


Tan 함수 예제

아래 예제에서는 Tan 함수를 사용하여 각의 탄젠트 값을 반환합니다.

Dim MyAngle, MyCotangent

MyAngle = 1.3	' 라디안 값의 각을 정의합니다.

MyCotangent = 1 / Tan(MyAngle)	' 코탄젠트를 계산합니다.


수학 함수

Abs 함수

Atn 함수

Cos 함수Exp 함수

Fix 함수

Int 함수

Log 함수

Rnd 함수

Sgn 함수

Sin 함수

Sqr 함수

Tan 함수

파생된 수학 함수


Abs 함수

절대 수치값을 지정하여 전달된 수치와 동일한 형식의 값을 반환합니다.

구문

Abs(number)

필수 요소인 number 인수에는 유효한 수식을 사용합니다. 만약 number가 Null 값을 가지면 Null 값을 반환하며, 초기화되지 않은 변수이면 0을 반환합니다.

참고

절대값이란 부호를 떼어낸 값을 말합니다. 예를 들어 ABS(-1)와 ABS(1)는 모두 1을 반환합니다.


Atn 함수

특정한 수의 아크탄젠트 값을 지정하는 Double을 반환합니다.

구문

Atn(number)

필수 요소인 number 인수에는 Double이나 유효한 수식을 사용합니다.

참고

Atn 함수는 직각 삼각형의 두 변의 비율(number)을 취하여 그에 대응하는 각도를 라디안 값으로 반환합니다. 여기서 비율은 각을 마주보는 변의 길이를 각에 인접한 변의 길이로 나눈 값을 말합니다.

결과값의 범위는 -pi/2에서 pi/2 라디안 사이입니다.

각도를 라디안으로 환산하려면 각도에 pi/180를 곱합니다. 라디안을 각도로 환산하려면 라디안에 180/pi을 곱합니다.

메모   Atn는 삼각함수 Tan의 역함수입니다. Tan는 각도를 인수로 취하여 직각 삼각형의 두 변의 비율을 되돌려 줍니다. 탄젠트의 단순한 역수(1/탄젠트)인 코탄젠트를 Atn와 혼동하지 마십시오.


Cos 함수

특정한 각의 코사인 값을 지정하는 Double을 반환합니다.

구문

Cos(number)

필수 요소인 number 인수에는 Double이나 유효한 수식을 사용합니다.

참고

Cos 함수는 각을 취하여 직각 삼각형의 두 변의 길이의 비율을 나타냅니다. 여기서 비율이란 빗변의 길이를 각과 인접한 변의 길이로 나눈 값을 말합니다. 결과값의 범위는 -1에서 1 사이입니다.

각도를 라디안으로 환산하려면 각도에 pi/180를 곱합니다. 라디안을 각도로 환산하려면 라디안에 180/pi을 곱합니다.


Exp 함수

e(자연 로그의 밑)의 거듭 제곱수를 지정하는 Double을 반환합니다.

구문

Exp(number)

필수 요소인 number 인수에는 Double이나 유효한 수식을 사용합니다.

참고

number 값이 709.782712893보다 크면 오류입니다. 상수 e의 값은 약 2.718282입니다.

메모   Exp 함수는 Log 함수와 보완 관계에 있으며 역대수라 부르기도 합니다.


Int, Fix 함수

특정한 수의 정수 부분을 반환합니다.

구문

Int(number)

Fix(number)

필수 요소인 number 인수는 Double이나 임의의 수식이어야 합니다. 만약 number가 Null값을 가지면 Null이 반환됩니다.

참고

Int와 Fix는 모두 number의 분수 부분을 없애고 정수 부분만을 반환합니다.

Int와 Fix의 차이점은 number가 음수이면 Int는 number보다 작거나 같은 첫째 음의 정수를 반환하는 반면에, Fix는 number보다 크거나 같은 첫째 음의 정수를 반환합니다. 예를 들어 Int는 -8.4를 -9로 환산하지만 Fix는 -8.4를 -8로 환산합니다.

Fix(number)는 아래와 동격입니다.

Sgn(number) * Int(Abs(number))


Log 함수

특정한 수의 자연 로그 값을 지정하는 Double을 반환합니다.

구문

Log(number)

필수 요소인 number 인수에는 양수인 Double이나 양수인 수식을 사용합니다.

참고

자연 로그는 e를 밑으로 하는 로그입니다. 상수 e의 값은 약 2.718282입니다.

n을 밑으로 하는 x의 로그 값은 x에 대한 자연 로그 값을 n에 대한 자연 로그 값으로 나눈 값이며 아래와 같이 나타냅니다.

Logn(x) = Log(x) / Log(n)

아래 예제는 10을 밑으로 하는 로그 값을 계산하는 사용자 정의 함수를 보여주고 있습니다.

Static Function Log10(X)

Log10 = Log(X) / Log(10#)

End Function


Randomize 문

난수 발생기를 초기화합니다.

구문

Randomize [number]

선택 요소인 number 인수에는 Variant나 유효한 수식을 사용합니다.

참고

Randomize는 number를 부여하여 새로운 시드값을 Rnd함수의 난수 발생기에 전달하여 난수 발생기를 초기화합니다. number를 생략하면 시스템 시계에서 전달받은 값이 초기값으로 사용됩니다.

Randomize가 사용되지 않을 경우에는 인수가 없는 Rnd 함수는 최초의 실행 명령을 받았을 때의 시드값과 같은 숫자를 사용하며, 그 이후에는 최종적으로 생성된 값을 시드값으로 사용합니다.

메모   난수열을 발생시키려면 숫자 인수를 보유한 Randomize를 사용하기 전에 즉시 음(-)의 인수를 가진 Rnd를 호출합니다. number 부분에 동일한 값을 가진 Randomize를 사용해도 이전의 난수열을 반복하지 않습니다.


Rnd 함수

난수를 포함하는 Single을 반환합니다.

구문

Rnd[(number)]

선택 요소인 number 인수에는 Single이나 유효한 수식을 사용합니다.

반환값

number	Rnd가 생성하는 값
음수	항상 같은 숫자이며, number를 시드값으로 사용합니다.
양수	다음 순서의 난수입니다.
0	가장 최근에 생성된 숫자입니다.
없음	다음 순서의 난수입니다.
참고

Rnd 함수는 1보다 작은 값을 갖지만 0보다는 크거나 같습니다.

number의 값은 Rnd가 난수를 생성하는 방식을 결정해 줍니다.

주어진 초기 시드에 대하여 Rnd 함수를 계속 호출하면 그 직전의 숫자를 수열의 다음 시드로 사용하기 때문에 동일하게 숫자 배열이 생성됩니다.

Rnd를 호출하기 전에 시스템 시계가 부여한 난수 발생기를 초기화하려면 Randomize 문장에 인수를 사용하지 않고 사용합니다.

주어진 범위 내에서 난수를 발생하려면 다음 공식을 사용하십시오.

Int((상한값 - 하한값 + 1) * Rnd + 하한값)

여기서 상한값은 범위 내의 최고값이며, 하한값은 범위 내의 최저값을 뜻합니다.

메모   난수열을 발생시키려면 숫자 인수를 보유한 Randomize를 사용하기 전에 즉시 음(-)의 인수를 가진 Rnd를 호출하십시오. number 부분에 동일한 값을 가진 Randomize를 사용해도 이전의 난수열을 반복하지 않습니다.


Sgn 함수

특정 숫자의 부호를 가리키는 Variant(Integer)를 반환합니다.

구문

Sgn(number)

필수 요소인 number 인수에는 유효한 수식을 사용합니다.

반환값

number	Sgn 값
양수	1
0	0
음수	-1
참고

number의 부호는 Sgn 함수의 반환값을 결정합니다.


Sin 함수

각도의 사인값을 지정하는 Double을 반환합니다.

구문

Sin(number)

필수 요소인 number 인수에는 Double이나 유효한 수식을 사용합니다.

참고

Sin 함수는 각을 취하여 직각 삼각형의 두 변의 비율을 반환합니다. 이 비율은 빗변의 길이를 각을 마주 보는 변의 길이로 나눈 값을 뜻합니다.

결과치는 -1과 1 사이에 있습니다.

각도를 라디안으로 환산하려면 각도에 pi/180를 곱합니다. 라디안을 각도로 환산하려면 라디안에 180/pi을 곱합니다.


Sqr 함수

숫자의 제곱근 값을 지정하는 Double을 반환합니다.

구문

Sqr(number)

필수 요소인 number 인수에는 Double이나 0보다 크거나 같은 유효한 수식을 사용합니다.


Tan 함수

각도의 탄젠트값을 지정하는 Double 값을 반환합니다.

구문

Tan(number)

필수 요소인 number 인수는 Double이나 유효한 라디안으로 된 각을 표현하는 수식입니다.

참고

Tan는 각도를 취하여 직각 삼각형의 두 변의 비율을 반환합니다. 이 비율은 각을 마주하는 변의 길이를 각에 인접한 변으로 나눈 값입니다.

각도를 라디안으로 환산하려면 각도에 pi/180를 곱합니다. 라디안을 각도로 환산하려면 라디안에 180/pi을 곱합니다.


파생된 수학 함수

아래 표는 내부 수학 함수에서 파생되는 외부 수학 함수입니다.

함수	파생된 함수
시컨트	Sec(X) = 1 / Cos(X)
코시컨트	Cosec(X) = 1 / Sin(X)
코탄젠트	Cotan(X) = 1 / Tan(X)
역 사인	Arcsin(X) = Atn(X / Sqr(-X * X + 1))
역 코사인	Arccos(X) = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1)
역 시컨트	Arcsec(X) = Atn(X / Sqr(X * X � 1)) + Sgn((X) � 1) * (2 * Atn(1))
역 코시컨트	Arccosec(X) = Atn(X / Sqr(X * X - 1)) + (Sgn(X) � 1) * (2 * Atn(1))
역 코탄젠트	Arccotan(X) = Atn(X) + 2 * Atn(1)
하이퍼볼릭 사인	HSin(X) = (Exp(X) � Exp(-X)) / 2
하이퍼볼릭 코사인	HCos(X) = (Exp(X) + Exp(-X)) / 2
하이퍼볼릭 탄젠트	HTan(X) = (Exp(X) � Exp(-X)) / (Exp(X) + Exp(-X))
하이퍼볼릭 시컨트	HSec(X) = 2 / (Exp(X) + Exp(-X))
하이퍼볼릭 코시컨트	HCosec(X) = 2 / (Exp(X) � Exp(-X))
하이퍼볼릭 코탄젠트	HCotan(X) = (Exp(X) + Exp(-X)) / (Exp(X) � Exp(-X))
역 하이퍼볼릭 사인	HArcsin(X) = Log(X + Sqr(X * X + 1))
역 하이퍼볼릭 코사인	HArccos(X) = Log(X + Sqr(X * X � 1))
역 하이퍼볼릭 탄젠트	HArctan(X) = Log((1 + X) / (1 � X)) / 2
역 하이퍼볼릭 시컨트	HArcsec(X) = Log((Sqr(-X * X + 1) + 1) / X)
역 하이퍼볼릭 코시컨트	HArccosec(X) = Log((Sgn(X) * Sqr(X * X + 1) + 1) / X)
역 하이퍼볼릭 코탄젠트	HArccotan(X) = Log((X + 1) / (X � 1)) / 2
밑이 N인 Log 함수	LogN(X) = Log(X) / Log(N)


Add 메서드 예제

아래 예제에서는 Add 메서드를 사용하여 Inst 개체(Public 변수 InstanceName을 포함하는 Class1이라는 클래스 인스턴스)를 MyClasses 컬렉션에 추가합니다. 동작 방법을 알아보려면 클래스 모듈을 삽입하고, Class1 모듈 수준(Public InstanceName 형식)에서 각 인스턴스의 이름을 유지하기 위해 InstanceName이라는 공용 변수를 선언합니다. 기본 이름은 Class1로 남겨 둡니다. 폼 모듈의 Form_Load 이벤트 프로시저에 다음 코드를 복사해서 붙여넣습니다.

Dim MyClasses As New Collection	' Collection 개체를 만듭니다.

Dim Num As Integer	' 개별 키에 대한 카운터입니다.

Dim Msg

Dim TheName	' 사용자가 입력한 이름에 대한 홀더입니다.

Do

Dim Inst As New Class1	' Class1의 새 인스턴스를 만듭니다.

Num = Num + 1	' Num을 증가시킨 다음 이름을 가져옵니다.

Msg = "이 개체 이름을 입력하십시오." & Chr(13) _

 & "컬렉션에서 이름을 보려면 취소를 누르십시오."

TheName = InputBox(Msg, "Name the Collection Items")

Inst.InstanceName = TheName	' 개체 인스턴스에 이름을 넣습니다.

' 사용자가 이름을 입력하면 컬렉션에 이름이 추가됩니다.

If Inst.InstanceName <> "" Then

' 명명된 개체를 컬렉션에 추가합니다.

MyClasses.Add item := Inst, key := CStr(Num)

End If

' 다음 참조를 준비하기 위해 현재 참조를 삭제합니다.

Set Inst = Nothing

Loop Until TheName = ""

For Each x In MyClasses

MsgBox x.instancename, , "인스턴스 이름"

Next


Clear 메서드 예제

아래 예제에서는 Err 개체의 Clear 메서드를 사용하여 Err 개체의 숫자 속성을 0으로, 문자열 속성을 길이가 0인 문자열로 재설정합니다. 아래 코드에서 Clear가 생략되어 있으면 연속적인 계산이 오류를 발생시키는지에 관계 없이 오류가 발생한 후에 오류 메시지 대화 상자가  루프의 모든 반복 과정마다 표시됩니다. 코드를 한 단계씩 실행하여 효과를 볼 수 있습니다.

Dim Result(10) As Integer	' 쉽게 오버플로되는 요소가 있는

' 배열을 선언합니다.

Dim indx

On Error Resume Next	' 오류 잡기를 연기합니다.

Do Until indx = 10

' 예비 오류를 작성하거나 오류가 없으면 결과를 저장합니다.

Result(indx) = Rnd * indx * 20000

If Err.Number <> 0 Then

MsgBox Err, , "생성된 오류: ", Err.HelpFile, Err.HelpContext

Err.Clear	' Err 개체 속성을 삭제합니다.

End If

indx = indx + 1

Loop


Item 메서드 예제

아래 예제에서는 Item 메서드를 사용하여 컬렉션의 개체에 대한 참조를 구합니다. Birthdays를 Collection 개체라고 가정하면 다음 코드는 "SmithBill" 키와 "SmithAdam" 키를 index 인수로 사용하여 컬렉션 참조에서 Bill Smith의 생일과 Adam Smith의 생일을 나타내는 개체를 구합니다. 처음 호출할 때에는 반드시 Item 메서드를 지정해야 하지만 두번째 호출부터는 지정할 필요가 없습니다. Item 메서드는 Collection 개체의 기본 메서드이기 때문에 두 가지 호출에서 모두 동작합니다. Set을 사용하는 SmithBillBD와 SmithAdamBD에 할당된 참조를 지정된 개체의 속성과 메서드에 액세스하는 데 사용할 수 있습니다. 이 코드를 실행하려면 컬렉션을 작성하고 두 개 이상의 참조된 구성원으로 이 컬렉션을 채워야 합니다.

Dim SmithBillBD As Object

Dim SmithAdamBD As Object

Dim Birthdays

Set SmithBillBD = Birthdays.Item("SmithBill")

Set SmithAdamBD = Birthdays("SmithAdam")


Print 메서드 예제

아래 예제에서는 Print 메서드를 사용하여 직접 실행 창에 MyVar 변수값을 표시합니다. Print 메서드만 텍스트를 표시할 수 있는 개체에 적용됩니다.

Dim MyVar

MyVar = "직접 실행 창에서 보실 수 있습니다."

Debug.Print MyVar


Raise 메서드 예제

아래 예제에서는 Err 개체의 Raise 메서드를 사용하여 Visual Basic에서 작성된 자동화 개체 내에 오류를 발생시킵니다. 이 메서드에는 프로그램 ID MyProj.MyObject가 있습니다.  매킨토시에서 기본 드라이브 이름은 "HD"이며 백슬래시 대신 콜론을 사용하여 경로 이름을 구분합니다.

Const MyContextID = 1010407	' contextID에 대한 상수를 정의합니다.

Function TestName(CurrentName, NewName)

If Instr(NewName, "bob") Then	' NewName의 유효성을 검사합니다.

' 예외를 일으킵니다.

Err.Raise vbObjectError + 27, "MyProj.MyObject", _

"No ""bob"" allowed in your name", "c:\MyProj\MyHelp.Hlp", _

MyContextID

End If

End Function


Remove 메서드 예제

아래 예제에서는 Remove 메서드를 사용하여 Collection 개체 MyClasses에서 개체를 제거합니다. 이 코드에서는 루프 반복 과정마다 인덱스 값이 1인 개체를 제거합니다.

Dim Num, MyClasses

For Num = 1 To MyClasses.Count

MyClasses.Remove 1	' 컬렉션에 남아 있는 개체가

' 없을 때까지 루프를 반복할 때마다

' 첫째 개체를 제거합니다.

Next Num


Add 메서드

Collection 개체에 구성원을 추가합니다.

구문

object.Add item, key, before, after

Add 메서드 구문은 다음과 같은 개체 수식어와 명명된 인수로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 적용 대상 목록에 있는 개체로 평가되는 개체식입니다.
item	필수적인 요소. 컬렉션에 추가할 구성원을 지정하는 형식의 식입니다.
key	선택적인 요소. 위치 인덱스 대신에 컬렉션 구성원에 액세스하기 위해서 사용되는 핵심 문자열을 지정하는 유일한 문자식입니다.
before	선택적인 요소. 컬렉션 내에서의 상대적 위치를 지정하는 식입니다. 추가될 구성원은 before 인수에 명시된 구성원 앞에 오게 됩니다. 만약 수식이면 before는 반드시 1부터 컬렉션의 Count 항목의 값 사이의 숫자여야 합니다. 문자식이라면 before는 반드시 제시된 구성원이 컬렉션에 추가될 때 지정되는 key와 대응되어야 합니다. Before 위치 혹은 after 위치 중 하나만 택해야 하며, 동시에 사용할 수 없습니다.
after	선택적인 요소. 컬렉션 내에서의 상대적 위치를 지정하는 식입니다. 추가될 구성원은 after에 명시된 구성원 뒤에 오게 됩니다. 만약 수식이면 after는 반드시 1부터 컬렉션의 Count 항목의 값 사이의 숫자여야 합니다. 문자식이라면 after는 반드시 제시된 구성원이 컬렉션에 추가될 때 지정되는 key와 대응되어야 합니다. Before 위치 혹은 after 위치 중 하나만 선택해야 하며, 동시에 사용할 수 없습니다.
참고

만약 before나 after 인수가 문자식 혹은 수식이면 반드시 기존 구성원을 지정해야 하며 그렇지 않으면 오류가 발생합니다.

지정한 key가 기존의 컬렉션 내의 구성원과 중복되는 경우에도 오류가 발생합니다.


Clear 메서드

Err 개체의 모든 속성을 삭제합니다.

구문

object.Clear

object는 항상 Err 개체입니다.

참고

On Error Resume Next로 보류된 오류 처리 메서드를 사용할 때와 같이 이미 오류가 처리된 후에 Err 개체를 명백하게 삭제하려면 Clear를 사용하십시오. Clear 메서드는 다음의 문이 실행될 때마다 자동적으로 호출됩니다.

•	모든 형태의 Resume 문

•	Exit Sub, Exit Function, Exit 속성

•	임의의 On Error 문

메모   다른 개체를 실행하는 중에 생긴 오류들을 처리할 경우에 On Error GoTo보다는 On Error Resume Next가 적절합니다. 개체를 실행할 때마다 Err를 점검하여 코드에 따라 어느 개체에 액세스해야 하는지를 명확히 해야 합니다. 어느 개체에서 근원적으로 오류가 생겼는지(Err.Source 내에 지정된 개체) 뿐만 아니라 어느 개체가 Err.Number 안의 오류 코드를 가져왔는지 알 수 있습니다.


Item 메서드

위치나 키로 Collection 개체의 특정한 구성원을 반환합니다.

구문

object.Item(index)

Item 메서드 구문은 다음과 같은 개체 수식어와 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 적용 대상 목록에 있는 개체로 평가되는 개체식입니다.
index	필수적인 요소. 컬렉션 내의 구성원의 위치를 지정해 주는 식입니다. 수식이면 index는 반드시 1부터 컬렉션의 Count 항목의 값 사이의 숫자여야 합니다. 문자식이면 index는 반드시 제시된 구성원이 컬렉션에 추가될 때 지정되는 key 인수와 대응되어야 합니다.
참고

index값이 컬렉션에 있는 구성원과 일치하지 않으면 오류가 생깁니다.

Item 메서드는 컬렉션에 대한 기본 메서드입니다. 따라서 아래 코드 2줄은 동격입니다.

Print MyCollection(1)

Print MyCollection.Item(1)


Print 메서드

직접 실행 창에서 텍스트를 인쇄합니다.

구문

object.Print [outputlist]

Print 메서드 구문은 다음과 같은 수식어와 구성 요소로 되어 있습니다.

구성 요소	설명
object	선택적인 요소. 목록 적용 대상 목록에 있는 개체로 평가되는 개체식입니다.
outputlist	선택적인 요소. 인쇄할 식의 목록입니다. 생략하면 빈 줄이 인쇄됩니다.
outputlist 인수는 다음과 같은 구문과 구성 요소로 되어 있습니다.

{Spc(n) | Tab(n)} expression charpos

구성 요소	설명
Spc(n)	선택적인 요소. 인쇄할 때 공백을 삽입하는데 사용되며, n은 공백의 수입니다.
Tab(n)	선택적인 요소. 항의 절대 값에 추가되는 포인트의 위치를 잡아주며 n은 열 번호입니다. 인수가 없으면 삽입점은 다음 번 인쇄 범위의 시작 지점에 위치합니다.
expression	선택적인 요소. 인쇄할 수식 또는 문자식입니다.
charpos	선택적인 요소. 다음 문자의 삽입점을 지정합니다. 세미콜론(;)으로 바로 최종 문자가 나타난 다음 위치로 삽입점을 잡아 줍니다. Tab(n)으로는 항의 절대 값에 삽입점의 위치를 잡아 줍니다. 다음 번 인쇄 범위의 시작 지점에 삽입점의 위치를 잡으려면 인수를 사용하는 대신 Tab을 사용하십시오. Charpos가 생략되면 다음 문자는 그 다음 행에 인쇄됩니다.
참고

중복된 식은 공백이나 세미콜론으로 구분됩니다.

직접 실행 창에 인쇄되는 모든 자료는 시스템에 지정된 로케일 설정의 소수 구분 기호를 사용하여 형식이 올바로 구성됩니다. 키워드는 호스트 응용 프로그램에 적합한 언어로 인쇄됩니다.

Boolean 데이터로 True 또는 False가 인쇄됩니다. True와 False 키워드는 호스트 응용 프로그램의 장소 설정값에 따라서 번역됩니다.

Date 자료는 시스템이 인식하는 표준인 간단한 표시 형식으로 인쇄됩니다. 날짜 또는 시간이 생략되거나 0이 되면 기타 자료만 인쇄됩니다.

outputlist 자료가 Empty면 아무 것도 인쇄되지 않습니다. 그러나 outputlist 데이터가 Null이면 Null이 출력됩니다. Null 키워드는 출력될 때 알맞게 해석됩니다.

오류 데이터의 경우 Error errorcode 형태로 인쇄됩니다. Error 키워드는 출력될 때 알맞게 해석됩니다.

기본 화면 공간이 있는 모듈 외부에 메서드를 사용하려면 object가 필요합니다. 예를 들어 object를 지정하지 않고 표준 모듈안으로 호출하면 오류가 발생하지만, 폼 모듈 안으로 호출하면 outputlist가 폼에 나타납니다.

메모 Print 메서드는 전형적으로 비례적인 공간을 차지하는 문자들을 인쇄하기 때문에 인쇄되는 문자의 수치와 문자들이 차지하는 고정 간격 사이에 상관 관계가 없습니다. 예를 들어 "W"와 같이 너비가 넓은 문자는 고정 너비 이상을 차지하지만 "i"처럼 너비가 좁은 문자는 너비를 적게 차지합니다. 평균적인 문자보다 너비가 넓은 문자를 사용하려면 도표의 간격이 충분히 벌어져야 합니다. 아니면 고정 피치의 글꼴(가령 �굴림�)을 사용하여 각 문자가 한 칸만 사용하도록 할 수 있습니다.


Raise 메서드

런타임 오류를 생성합니다.

구문

object.Raise number, source, description, helpfile, helpcontext

Raise 메서드는 다음과 같은 개체 수식어와 명명된 인수로 되어 있습니다.

인수	설명
object	필수적인 요소. 항상 Err 개체입니다.
number	필수적인 요소. 오류 정보를 규정하는 Long 정수입니다. Visual Basic 오류(Visual Basic 정의 오류 및 사용자 정의 오류) 값은 0부터 65535까지입니다. 0부터 512까지는 시스템 오류에 사용하도록 예약되어 있습니다. 513부터 65535까지는 사용자 정의 오류에 사용할 수 있습니다. 클래스 모듈의 사용자 오류 코드에 Number 속성을 설정할 때 사용자의 오류 코드 수치를 vbObjectError 상수에 더합니다. 예를 들어 오류 번호 513을 생성시키려면 Number 속성에 vbObjectError + 513을 지정하십시오.
source	선택적인 요소. 오류를 생성하는 개체 또는 응용 프로그램을 이르는 문자식입니다. 임의의 개체에 이 속성을 설정할 때 project.class 폼을 사용합니다. 만약 source가 지정되지 않으면 현재 Visual Basic 프로젝트의 프로그램 ID가 사용됩니다.
description	선택적인 요소. 오류를 설명하는 문자식입니다. description을 지정하지 않으면 Number 값을 조사합니다. 그 값이 Visual Basic 런타임 오류 코드에 매핑되면 Error 함수가 반환한 문자열이 Description으로 사용됩니다. Number에 대응하는 Visual Basic 오류가 없으면 "응용 프로그램 정의 또는 개체 정의 오류" 메시지가 사용됩니다.
helpfile	선택적인 요소. 이런 오류가 발견될 수 있는 도움말 파일의 전체 경로입니다. Visual Basic은 Visual Basic 도움말 파일의 전체 드라이브, 경로, 파일 이름을 사용합니다.
helpcontext	선택적인 요소. 오류에 대한 도움말을 제공하는 helpfile 안에서 항목을 지정하는 컨텍스트 ID입니다. 생략하면 그에 해당하는 Number 속성이 있을 경우 Visual Basic 도움말 파일의 컨텍스트 ID가 사용됩니다.
참고

number를 제외한 모든 인수는 선택적인 요소입니다. 특정 인수를 지정하지 않고 Raise를 사용하거나 Err 개체의 속성 설정에 지워지지 않은 값이 있으면 그 값들은 사용자 오류로 간주됩니다.

Raise는 런타임 오류를 발생시키는 데 사용되고 Error 문 대신에 사용될 수 있습니다. Error 문으로 오류를 발생시키면 Err 개체가 더 많은 정보를 제공하기 때문에 Raise는 클래스 모듈을 작성할 때 오류를 발생시키는 데 유용합니다. 예를 들어 Raise 메서드로 오류를 발생시킨 원본을 Source 속성에 지정할 수 있고 오류에 대한 온라인 도움말을 참조할 수도 있습니다.


Remove 메서드(Visual Basic for Applications)
Remove 메서드

Collection 개체에서 구성원을 제거합니다.

구문

object.Remove index

Remove 메서드 구문은 다음과 같은 개체 수식어와 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 적용 대상 목록에 있는 개체로 평가되는 개체식입니다.
Index	필수적인 요소. 컬렉션의 구성원 위치를 지정하는 식입니다. 이 식이 수식이면 index는 반드시 1부터 컬렉션의 Count 속성 값 사이의 숫자여야 합니다. 문자식이라면 index는 반드시 제시된 구성원이 컬렉션에 추가될 때 지정되는 key 인수와 대응되어야 합니다.
참고

index로 제공된 값이 기존의 컬렉션 구성원과 일치하지 않으면 오류가 발생합니다.


AppActivate 문 예제

아래 예제에서는 AppActivate 문을 사용하여 응용 프로그램 창을 활성화시키는 다양한 방법을 보여줍니다. Shell 문은 응용 프로그램이 경로 내에 지정되어 있다고 가정합니다. 매킨토시에서 기본 드라이브 이름은 "HD"이며 백슬래시 대신 콜론을 사용하여 경로 이름을 구분합니다.

Dim MyAppID, ReturnValue

AppActivate "Microsoft Word"	' Microsoft Word를 활성화하십시오.

' AppActivate는 Shell 함수의 반환값도 사용할 수 있습니다.

MyAppID = Shell("C:\WORD\WINWORD.EXE", 1)	' Microsoft Word를 실행하십시오.

AppActivate MyAppID	' Microsoft Word를 활성화하십시오.

' Shell 함수의 반환값도 사용할 수 있습니다.

ReturnValue = Shell("c:\EXCEL\EXCEL.EXE",1)	' Microsoft Excel을 실행하십시오.

AppActivate ReturnValue	' Microsoft Excel을 활성화하십시오.


Beep 문 예제

아래 예제에서는 Beep 문을 사용하여 컴퓨터 스피커를 통해 3번의 연속적인 소리를 냅니다.

Dim I

For I = 1 To 3	' 3번 반복합니다.

Beep	' 소리를 냅니다.

Next I


Command 함수 예제

아래 예제에서는 Command 함수를 사용하여 함수 내에서 배열을 포함하는 Variant에 반환되는 명령줄 인수를 얻습니다. Microsoft Office에서는 사용할 수 없습니다.

Function GetCommandLine(Optional MaxArgs)

'변수를 선언합니다.

Dim C, CmdLine, CmdLnLen, InArg, I, NumArgs

'MaxArgs가 제공되면 참조하십시오.

If IsMissing(MaxArgs) Then MaxArgs = 10

'정확한 크기의 배열을 만듭니다.

ReDim ArgArray(MaxArgs)

NumArgs = 0: InArg = False

'명령줄 인수를 가져옵니다.

CmdLine = Command()

CmdLnLen = Len(CmdLine)

'동시에 한 문자 명령줄을 통과합니다.

For I = 1 To CmdLnLen

C = Mid(CmdLine, I, 1)

'공백 또는 탭 테스트

If (C <> " " And C <> vbTab) Then

'공백이나 탭에 관계 없습니다.

'만일 인수가 준비되면 테스트합니다.

If Not InArg Then

'새로운 인수 시작

'너무 많은 인수에 대해 테스트합니다.

If NumArgs = MaxArgs Then Exit For

NumArgs = NumArgs + 1

InArg = True

End If

'현재 인수에 문자를 연결합니다.

ArgArray(NumArgs) = ArgArray(NumArgs) & C

Else

'공백이나 탭을 발견

'InArg를 False로 설정합니다.

InArg = False

End If

Next I

'가지고 있는 인수에 충분한 배열 재조정

ReDim Preserve ArgArray(NumArgs)

'함수 이름에 배열을 반환합니다.

GetCommandLine = ArgArray()

End Function


InputBox 함수 예제

아래 예제에서는 InputBox 함수의 다양한 사용 방법을 보여주면서 사용자가 값을 입력할 수 있도록 합니다. x와 y 위치가 생략될 경우 대화 상자는 자동적으로 각 축의 가운데 위치로 조정됩니다. 확인 단추를 누르거나 Enter키를 누르면 변수 MyValue에는 사용자가 입력한 값이 포함됩니다. 취소 단추를 누르면 길이가 0인 문자열이 반환됩니다.

Dim Message, Title, Default, MyValue

Message = "1에서 3사이의 값을 입력하십시오"	' 프롬프트 설정

Title = "InputBox Demo"	' 제목 설정

Default = "1"	' 기본값 설정

' 메시지, 제목, 기본값을 표시합니다.

MyValue = InputBox(Message, Title, Default)

' Helpfile과 구문을 사용하십시오. 도움말 단추는 자동적으로 추가됩니다.

MyValue = InputBox(Message, Title, , , , "DEMO.HLP", 10)

' 100, 100의 위치에 대화 상자를 표시합니다.

MyValue = InputBox(Message, Title, Default, 100, 100)


MsgBox 함수 예제

아래 예제에서는 MsgBox 함수를 사용하여 예와 아니오 단추를 가진 대화 상자에 중대한 오류 메시지를 표시합니다. 아니오 단추가 기본 응답으로 지정됩니다. MsgBox 함수의 반환값은 사용자가 선택한 단추에 따라 결정됩니다. 이 예에서 DEMO.HLP는 도움말 항목 번호가 1000인 도움말을 가진 도움말 파일로 가정합니다.

Dim Msg, Style, Title, Help, Ctxt, Response, MyString

Msg = "계속하시겠습니까?"	' 메시지를 정의합니다.

Style = vbYesNo + vbCritical + vbDefaultButton2	' 단추를 정의합니다.

Title = "데모 MsgBox"	' 제목을 정의합니다.

Help = "DEMO.HLP"	' 도움말 파일을 정의합니다.

Ctxt = 1000	' 항목을 정의합니다.

' 구문

' 메시지 화면 표시

Response = MsgBox(Msg, Style, Title, Help, Ctxt)

If Response = vbYes Then	' 사용자가 예를 선택했습니다.

MyString = "예"	' 어떤 동작을 수행행합니다.

Else	' 사용자가 아니오를 선택했습니다.

MyString = "아니오"	' 어떤 동작을 수행합니다.

End If


SendKeys 문 예제

아래 예제에서는 Shell 함수를 사용하여 Microsoft Windows에 포함된 계산기 응용 프로그램을 실행시킵니다. SendKeys 문을 사용하여 수를 입력하고 키 입력을 전송한 다음 계산기를 종료합니다. 예제를 보려면 프로시저에 붙여 넣은 다음 프로시저를 실행합니다. AppActivate가 계산기 응용 프로그램으로 포커스를 옮기기 때문에 코드를 한 단계씩 실행시킬 수 없습니다. 매킨토시에서는 Windows 계산기 대신 키보드 입력을 받아들이는 매킨토시 응용 프로그램을 사용합니다.

Dim ReturnValue, I

ReturnValue = Shell("CALC.EXE", 1)	' 계산기를 실행합니다.

AppActivate ReturnValue 	' 계산기를 활성화합니다.

For I = 1 To 100	' 루프 계산을 설정합니다.

SendKeys I & "{+}", True	' 키 입력을 계산기에 전송합니다.

Next I	' I의 각 값을 더하기 위해

SendKeys "=", True	' 총합계를 구합니다.

SendKeys "%{F4}", True	' Alt+F4를 전송하여 계산기를 닫습니다.


AppActivate 문

응용 프로그램 창을 실행합니다.

구문

AppActivate title[, wait]

AppActivate 문은 다음과 같은 명명된 인수로 되어 있습니다.

구성 요소	설명
title	필수적인 요소. 문자식은 활성화하려는 응용 프로그램 창의 제목 표시줄에 제목을 지정합니다. Shell 함수가 반환한 작업 ID는 title 부분에 사용되어 응용 프로그램을 활성화합니다.
wait	선택적인 요소. Boolean 값은 호출 응용 프로그램이 다른 프로그램을 활성화하기 전에 포커스를 갖는지를 지정합니다. False(기본값)인 경우 호출 응용 프로그램이 포커스를 갖고 있지 않아도 지정된 응용 프로그램이 즉시 실행됩니다. True인 경우 호출 프로그램은 포커스를 가질 때까지 기다린 후 지정한 응용 프로그램을 활성화합니다.
참고

AppActivate 문은 지정된 응용 프로그램이나 창으로 포커스를 변경시키지만 응용 프로그램이나 창이 전체 표시되었는지 아이콘으로 표시되었는지에는 영향을 미치지 않습니다. 포커스는 사용자가 포커스를 변경시키거나 창을 닫을 때 활성화된 응용 프로그램 창에서 이동합니다. Shell 함수를 사용하여 응용 프로그램을 시작한 다음 창 유형을 정합니다.

어떤 응용 프로그램을 활성화시킬 것인지 결정할 때 title은 실행 중인 각 응용 프로그램의 제목 문자열과 비교됩니다. 일치하는 것이 없다면 title이라는 제목 문자열로 시작되는 프로그램이 활성화됩니다. title이 지정한 응용 프로그램의 인스턴스가 둘 이상 존재한다면 그 중 하나가 임의로 활성화됩니다.


Beep 문

컴퓨터 스피커를 통하여 음성을 제공합니다.

구문

Beep

참고

소리의 주파수와 길이는 하드웨어와 시스템 소프트웨어, 컴퓨터 기종에 따라 다릅니다.


Command 함수

Visual Basic으로 개발된 실행 프로그램 또는 Microsoft Visual Basic을 시작했던 명령줄의 인수 부분을 반환합니다. Microsoft Office 응용 프로그램에서는 Visual Basic Command 함수를 사용할 수 없습니다.

구문

Command

참고

Visual Basic이 명령줄에서 시작될 때 /cmd 로 끝나는 명령줄의 모든 부분이 명령줄 인수로 프로그램에 전달됩니다. 다음 예제에서 cmdlineargs는 Command 함수가 반환한 인수 정보를 나타냅니다.

VB /cmd cmdlineargs

Visual Basic으로 개발되고 .exe 파일로 컴파일된 응용 프로그램에 Command는 명령줄의 응용 프로그램 이름 다음에 나타나는 모든 인수를 반환합니다. 예를 들면 다음과 같습니다.

MyApp cmdlineargs

사용하는 응용 프로그램의 사용자 인터페이스에서 명령줄 인수가 변경되는 방법을 보려면 도움말에서 "명령줄 인수"를 찾아보십시오.


InputBox 함수

대화 상자에서 프롬프트를 보여주고 사용자가 텍스트를 입력하거나 단추를 누를 때까지 기다린 다음 입력란의 내용을 포함하는 문자열을 반환합니다.

구문

InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])

InputBox 함수 구문은 다음과 같은 명명된 인수로 되어 있습니다.

구성 요소	설명
prompt	필수적인 요소. 대화 상자에 메시지로 나타나는 문자식입니다. prompt의 최대 길이는 약 1024 문자이며, 사용된 문자의 너비에 따라 다릅니다. prompt가 두 행 이상으로 구성되면 캐리지 리턴 문자(Chr(13)), 라인 피드 문자(Chr(10)), 캐리지 리턴 및 라인 피드 문자(Chr(13) & Chr(10))를 이용하여 행을 구분합니다.
title	선택적인 요소. 대화 상자의 제목 표시줄에 나타나는 문자식입니다. title 을 생략하면 응용 프로그램 이름이 제목 표시줄에 나타납니다.
default	선택적인 요소. 입력란에 특별한 내용을 입력하지 않으면 문자식은 기본값으로 입력란에 나타납니다. default가 생략되면 입력란은 빈 상태로 나타납니다.
xpos	선택적인 요소. 화면 왼쪽 가장자리에서 대화 상자의 왼쪽 가장자리까지의 간격을 트윕 단위로 지정하는 수식입니다. 만약 xpos가 생략되면 대화 상자는 수평 중앙에 놓입니다.
ypos	선택적인 요소. 화면 맨 위에서 대화 상자의 위쪽 가장자리까지의 간격을 트윕 단위로 지정하는 수식입니다. ypos가 생략되면 대화 상자는 화면의 1/3 가량 아래로 내려가 놓입니다.
helpfile	선택적인 요소. 상황에 맞는 도움말을 대화 상자에 제공하는 데 사용되는 도움말 파일을 확인하는 문자식입니다. helpfile을 제공하면 context도 반드시 제공해야 합니다.
context	선택적인 요소. 도움말 작성자가 적절히 작성한 도움말 항목에 지정한 도움말 컨텍스트 번호를 나타내는 수식입니다. context를 제공하면 helpfile도 반드시 제공해야 합니다.
참고

helpfile과 context가 같이 제공되면 F1키(Windows의 경우) 또는 help키(매킨토시의 경우)를 눌러 context에 해당하는 도움말 항목을 볼 수 있습니다. Microsoft Excel과 같은 호스트 응용 프로그램은 대화 상자에 도움말 단추가 자동으로 첨가됩니다. 확인 단추를 누르거나 Enter 키를 누르면 InputBox 함수가 입력란 안의 내용을 반환합니다. 취소 단추를 누르면 함수는 길이가 0인 문자열("")을 반환합니다.

메모   최초의 고유 인수 이외에 추가로 지정하려면 식에 InputBox를 사용해야 합니다. 위치를 나타내는 인수 생략하려면 반드시 해당 쉼표 구분 기호(,)를 포함해야 합니다.


MsgBox 함수

대화 상자에서 메시지를 보여주고 사용자가 단추를 누를 때까지 기다린 다음 사용자가 누른 단추가 지시하는 Integer를 반환합니다.

구문

MsgBox(prompt[, buttons] [, title] [, helpfile, context])

MsgBox 함수 구문은 다음과 같은 명명된 인수로 되어 있습니다.

구성 요소	설 명
prompt	필수적인 요소. 대화 상자에서 메시지로 나타나는 문자식입니다. prompt의 최대 길이는 약 1024 문자이며, 사용된 문자의 너비에 따라 다릅니다. prompt 가 두 행 이상으로 구성되면, 캐리지 리턴 문자(Chr(13)), 라인 피드 문자(Chr(10)), 캐리지 리턴 및 라인 피드 문자(Chr(13) & Chr(10))를 이용하여 행을 구분합니다.
buttons	선택적인 요소. 표시할 단추의 수와 형식, 사용할 아이콘 유형, 기본 단추의 ID 및 메시지 상자의 양식을 지정하는 값의 합을 나타내는 수식입니다. 생략하면 buttons의 기본값은 0 입니다.
title	선택적인 요소. 대화 상자의 제목 표시줄에 나타나는 문자식입니다. title을 생략하면 응용 프로그램 이름이 제목 표시줄에 나타납니다.
helpfile	선택적인 요소. 상황에 맞는 도움말을 대화 상자에 제공하는 데 사용되는 도움말 파일을 확인하는 문자식입니다. helpfile이 제공되면 context도 반드시 제공되어야 합니다.
context	선택적인 요소. 도움말 작성자가 적절히 작성한 도움말 항목에 지정된 도움말 컨텍스트 번호를 나타내는 수식입니다. context가 제공되면 helpfile도 반드시 제공되어야 합니다.
설정

buttons 인수는 다음과 같이 설정되어 있습니다.

상수	값	설 명
vbOKOnly	0	확인 단추만 나타냅니다.
vbOKCancel	1	확인 단추와 취소 단추를 나타냅니다.
vbAbortRetryIgnore	2	중단, 다시 시도 및 무시 단추를 나타냅니다.
vbYesNoCancel	3	예, 아니오 및 취소 단추를 나타냅니다.
vbYesNo	4	예 및 아니오 단추를 나타냅니다.
vbRetryCancel	5	다시 시도 및 취소 단추를 나타냅니다.
vbCritical	16	중대 메시지 아이콘을 나타냅니다.
vbQuestion	32	쿼리 경고 아이콘을 나타냅니다.
vbExclamation	48	메시지 경고 아이콘을 나타냅니다.
vbInformation	64	메시지 정보 아이콘을 나타냅니다.
vbDefaultButton1	0	첫째 단추가 기본값입니다.
vbDefaultButton2	256	둘째 단추가 기본값입니다.
vbDefaultButton3	512	세째 단추가 기본값입니다.
vbDefaultButton4	768	넷째 단추가 기본값입니다.
vbApplicationModal	0	응용 프로그램 모달. 사용자는 현재 사용 중인 프로그램 내에서 작업을 계속하려면 반드시 메시지 상자에 응답해야 합니다.
vbSystemModal	4096	시스템 모달. 사용자가 메시지 상자에 응답할 때까지 모든 프로그램들은 정지됩니다.
vbMsgBoxHelpButton	16384	메시지 상자에 도움말 단추를 추가합니다.
vbMsgBoxSetForeground	65536	메시지 상자 창을 전경 창으로 지정합니다.
vbMsgBoxRight	524288	텍스트를 오른쪽에 맞춥니다.
vbMsgBoxRtlReading	1048576	히브리어와 아랍어 시스템에서 오른쪽에서 왼쪽으로 읽을 수 있도록 지정합니다.
첫 그룹의 값(0-5)들은 대화 상자 안에 나타난 단추들의 수와 형식를 보여줍니다. 둘째 그룹의 값(16, 32, 48, 64)들은 아이콘 유형을, 세째 그룹(0, 256, 512)은 어느 단추가 기본값인지를 정해주며, 넷째 그룹(0, 4096)은 메시지 상자의 폼을 결정합니다. buttons 인수에 대한 최종 값을 산출하는 값을 더할 때는 각 그룹에서 한 가지 값만을 사용합니다.

메모   이와 같은 상수는 Visual Basic for Applications에서 지정됩니다. 결국 이름은 실제 값이 있는 코드 어디에서나 사용될 수 있습니다.

반환값

상수	값	설명
vbOK	1	확인
vbCancel	2	취소
vbAbort	3	중단
vbRetry	4	다시 시도
vbIgnore	5	무시
vbYes	6	예
vbNo	7	아니오
참고

helpfile과 context가 같이 제공되면 F1키(Windows의 경우) 또는 help키(매킨토시의 경우)를 눌러 context에 해당하는 도움말 항목을 볼 수 있습니다. Microsoft Excel과 같은 호스트 응용 프로그램은 대화 상자에 도움말 단추가 자동으로 첨가됩니다.

대화 상자에 취소 단추가 있을 때 Esc키를 누르면 취소 단추를 누른 것과 같은 결과가 됩니다. 대화 상자에 도움말 단추가 있을 때는 대화 상자에 상황에 맞는 도움말이 제공됩니다. 그러나 다른 단추 중 하나를 누를 때까지는 값을 반환하지 않습니다.

메모   최초의 고유 인수 이외에 추가로 지정하려면 식에 MsgBox를 사용해야 합니다. 위치를 나타내는 인수를 생략하려면 반드시 해당 쉼표 구분 기호(,)를 포함해야 합니다.


SendKeys 문

키보드에서 입력한 것처럼 실행 창에 하나 이상의 키를 입력합니다.

구문

SendKeys string[, wait]

SendKeys 문은 다음과 같은 명명된 인수로 되어 있습니다.

구성 요소	설명
string	필수적인 요소. 보낼 키 입력을 지정하는 문자식입니다.
wait	선택적인 요소. 대기 모드로 지정할 Boolean 값입니다. False(기본값)일 경우 키가 입력이 되면 컨트롤은 바로 프로시저에 반환됩니다. True일 경우 키가 입력되어야 컨트롤이 프로시저에 반환됩니다.
참고

각각의 키는 하나 이상의 문자로 표현됩니다. 단독 키보드 문자를 지정하려면 그 문자 자체를 사용하면 됩니다. 예를 들어 A를 표현하려면 string에 "A"라고 씁니다. 둘 이상의 문자를 표현하려면 각각의 문자를 앞의 문자에 이어서 추가합니다. A, B, C를 나타내려면 string에 "ABC"라고 씁니다.

더하기 기호(+), 삽입 기호(^), 백분율 기호(%), 생략 기호(~) 및 괄호( )는 SendKeys에 특별한 의미가 있습니다. 이 문자 중 하나를 지정하려면, 지정하려는 문자를 중괄호({})로 묶어야 합니다. 예를 들어 더하기 기호를 지정하려면 {+}로 써야 합니다. 대괄호([ ])는 SendKeys에 있어서 특별한 의미는 없으나 반드시 중괄호로 묶어야 합니다. 다른 응용 프로그램에서 동적 데이터 교환(DDE)이 발생할 때 대괄호는 특별한 의미를 가질 수 있습니다. 대괄호를 지정하려면 {{}와 {}}를 사용하십시오.

Enter키나 Tab키 등 눌렀을 때 나타나지 않는 문자나 동작을 나타내는 키를 지정하려면 아래의 코드를 사용합니다.

키	코드
백스페이스	{BACKSPACE}, {BS} 또는 {BKSP}
Break	{BREAK}
Caps Lock	{CAPSLOCK}
Del 또는 Delete	{DELETE} 또는 {DEL}
아래쪽 화살표	{DOWN}
End	{END}
Enter	{ENTER} 또는 ~
Esc	{ESC}
Help	{HELP}
Home	{HOME}
Ins 또는 Insert	{INSERT} 또는 {INS}
왼쪽 화살표	{LEFT}
Num Lock	{NUMLOCK}
Page Down	{PGDN}
Page Up	{PGUP}
Print Screen	{PRTSC}
오른쪽 화살표	{RIGHT}
Scroll Lock	{SCROLLLOCK}
Tab	{TAB}
위쪽 화살표	{UP}
F1	{F1}
F2	{F2}
F3	{F3}
F4	{F4}
F5	{F5}
F6	{F6}
F7	{F7}
F8	{F8}
F9	{F9}
F10	{F10}
F11	{F11}
F12	{F12}
F13	{F13}
F14	{F14}
F15	{F15}
F16	{F16}
Shift, Ctrl키와 Alt키가 조합된 키를 지정하려면 다음 코드 중 하나 이상을 키 코드 앞에 표시합니다.

키	코드
Shift	+
Ctrl	^
Alt	%
Shift, Ctrl, Alt키의 조합을 지정하려면 다른 키를 누를 때까지 계속 누르고 있어야 하며, 키 코드를 괄호로 묶어야 합니다. 예를 들어 Shift키를 누른 채 E키와 C키를 눌러야 한다면, "+(EC)"로 써야 합니다. Shift키를 누른 채 E를 누르고 곧 이어 Shfit키를 누르지 않고 C를 누르는 경우에는 "+EC"로 씁니다.

반복되는 키를 지정할 때는 {키 숫자} 형식으로 나타냅니다. 함을 뜻합키와 숫자 사이에 반드시 빈 칸을 둬야 합니다. 예를 들면 {LEFT 42}는 왼쪽 화살표키를 42회 누른다는 의미이고 {h 10}은 H를 10번 누른다는 의미입니다.

메모   Microsoft Windows 또는 매킨토시에서 실행되지 않는 응용 프로그램에 SendKeys를 사용하여 키 입력을 보낼 수 없습니다. Sendkeys는 또한 Print Screen키{PRTSC}를 다른 응용 프로그램에 보낼 수 없습니다.


Character Set (0 - 127)
문자 집합(0 - 127)

0	•	32	[공백]	64	@	96	`
1	•	33	!	65	A	97	a
2	•	34	"	66	B	98	b
3	•	35	#	67	C	99	c
4	•	36	$	68	D	100	d
5	•	37	%	69	E	101	e
6	•	38	&	70	F	102	f
7	•	39	'	71	G	103	g
8	* *	40	(	72	H	104	h
9	* *	41	)	73	I	105	i
10	* *	42	*	74	J	106	j
11	•	43	+	75	K	107	k
12	•	44	,	76	L	108	l
13	* *	45	-	77	M	109	m
14	•	46	.	78	N	110	n
15	•	47	/	79	O	111	o
16	•	48	0	80	P	112	p
17	•	49	1	81	Q	113	q
18	•	50	2	82	R	114	r
19	•	51	3	83	S	115	s
20	•	52	4	84	T	116	t
21	•	53	5	85	U	117	u
22	•	54	6	86	V	118	v
23	•	55	7	87	W	119	w
24	•	56	8	88	X	120	x
25	•	57	9	89	Y	121	y
26	•	58	:	90	Z	122	z
27	•	59	;	91	[	123	{
28	•	60	<	92	\	124	|
29	•	61	=	93	]	125	}
30	•	62	>	94	^	126	~
31	•	63	?	95	_	127	•
•	이 기호로 표시된 문자는 Microsoft Windows에서 지원하지 않습니다.

* *	8번, 9번, 10번 및 13번은 각각 백스페이스, 탭, 라인 피드 및 캐리지 리턴 문자로 변환됩니다. 그래픽으로 표시되지는 않지만 응용 프로그램에 따라 텍스트의 모양이 다르게 보일 수 있습니다.


IMEStatus 함수

Microsoft Windows의 현재 IME(Input Method Editor) 모드를 나타내는 Integer 값을 반환하며, 이는 극동 아시아 버전에만 해당됩니다.

구문

IMEStatus

반환값

시스템 로케일이 일본어일 경우 사용할 수 있는 상수는 다음과 같습니다.

상수	값	설명
vbIMEModeNoControl	0	현재 상태 유지
vbIMEModeOn	1	일본어 입력 상태 설정
vbIMEModeOff	2	일본어 입력 상태 해제
vbIMEModeDisable	3	일본어 입력 시스템을 사용할 수 없음
vbIMEModeHiragana	4	히라가나 전자
vbIMEModeKatakana	5	가다가나 전자
vbIMEModeKatakanaHalf	6	가다가나
vbIMEModeAlphaFull	7	영문 전자
vbIMEModeAlpha	8	영문
시스템 로케일이 한국어일 경우 사용할 수 있는 상수는 다음과 같습니다.

상수	값	설명
vbIMEModeNoControl	0	현재 상태 유지
vbIMEModeAlphaFull	7	영문 전자
vbIMEModeAlpha	8	영문
vbIMEModeHangulFull	9	한글 전자
vbIMEModeHangul	10	한글
시스템 로케일이 중국어일 경우 사용할 수 있는 상수는 다음과 같습니다.

상수	값	설명
vbIMEModeNoControl	0	현재 상태 유지
vbIMEModeOn	1	중국어 입력 상태 설정
vbIMEModeOff	2	중국어 입력 상태 해제


중단 모드에서는 코드를 실행할 수 없습니다

코드의 실행을 일시 중단하면 중단 모드로 들어갑니다. 이 오류의 원인과 해결 방법은 다음과 같습니다.

•	매크로 대화 상자에서 코드를 실행하려 하였습니다. 그러나 코드가 중단 모드에서 일시 중지되었더라도 Visual Basic이 이미 코드를 실행 중입니다.

모르는 상태에서 중단 모드에 들어갔을 수 있습니다. 예를 들어 구문 오류 또는 런타임 오류가 발생한 경우에 이러한 상태가 될 수 있습니다. 매크로 대화 상자에서 코드를 실행하기 전에 일시 중단된 코드를 계속 실행하거나 실행을 종료하십시오. 오류를 수정하고 계속을 선택하거나 매크로 대화 상자로 돌아가서 매크로를 다시 시작할 수 있습니다.

자세한 정보를 보려면 원하는 항목을 선택하고 F1키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


클래스 정의 인스턴스가 아닌 개체에 대한 Friend 프로시저를 호출할 수 없습니다(오류 97)

Friend 프로시저는 클래스 외부에 있지만 클래스가 정의된 프로젝트의 모듈에서 호출할 수 있습니다. 이 오류의 원인과 해결 방법은 다음과 같습니다.

•	클래스의 Friend 프로시저를 호출하려 하였습니다. 참조 변수의 형식이 정확하더라도 변수는 클래스의 인스턴스가 아닌 다른 인스턴스를 가리킵니다.

예를 들어 이 문제는 두 개의 클래스, classics와 classy(classy를 구현)가 있고 잘못하여 classy의 인스턴스를 classics의 인스턴스에 할당한 경우에 발생할 수 있습니다.

•	교차 프로세스 또는 교차 스레드 상태에서 Friend 속성 또는 메서드를 호출하려 하였습니다. Friend 프로시저는 클래스의 공용 인터페이스의 일부가 아니기 때문에 교차 프로세스 또는 교차 스레드로 정렬할 수 없습니다.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


컨트롤이 작성될 수 없기 때문에 디자인 모드를 종료할 수 없습니다

모든 컨트롤은 디자인 모드를 종료하기 전에 인스턴스화되어야 합니다. 이 오류의 원인과 해결 방법은 다음과 같습니다.

•	오류 메시지 대화 상자에서 지정된 컨트롤은 작성할 수 없습니다.

코드는 모든 컨트롤이 시작되고 적절하게 연결된 후에 실행할 수 있습니다. 다시 시도하기 전에 컨트롤에 필요한 모든 파일을 사용할 수 있는지 확인하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


개체가 자동화 이벤트를 공급하지 않습니다

개체는 이벤트의 이벤트 프로시저를 기술할 수 있도록 기본적인 원본 인터페이스를 제공해야 합니다. 이 오류의 원인과 해결 방법은 다음과 같습니다.

•	개체의 이벤트에 대해 이벤트 프로시저를 기술하려 했지만 그 이벤트는 개체 밖에서 사용할 수 없습니다.

원하는 이벤트를 덜 직접적으로 다루는 방법에 대해서는 개체에 대한 설명서를 참고하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


DLL에서 허용되지 않는 작업입니다

동적 연결 라이브러리(DLL)에서 허용된 Visual Basic 문이 없습니다. 이 오류의 원인과 해결 방법은 다음과 같습니다.

•	DLL에서 실행할 수 없는 문이 들어 있는 클래스에서 DLL을 작성하려 하였습니다.

클래스를 확인하고 DLL 내에서 실행할 수 없는 End 문 같은 문을 모두 삭제하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


Enum 밖에서 잘못되었습니다

Enum은 관련된 상수 그룹을 작성할 때 사용할 수 있는 데이터 형식입니다(열거형이라 부름). 이 오류의 원인과 해결 방법은 다음과 같습니다.

•	Enum 정의가 아닌 부분에서 End Enum을 사용하였습니다.

Enum 정의와 End Enum 문 사이의 본문 내용을 확인하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


이 문서는 매크로가 불가능한 상태로 열려 있습니다

호스트 프로그램이 매크로를 사용할 수 없도록 설정하거나 사용할 수 있도록 설정하였습니다. 이 오류의 원인과 해결 방법은 다음과 같습니다.

•	매크로 사용 못함으로 문서를 열었습니다.

문서를 닫고 매크로 가능으로 다시 여십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


현재 프로젝트가 이 기호를 포함하는 라이브러리를 참조하지 않아서 이 기호가 지정되지 않았습니다. 기호를 포함하는 참조를 지금 추가하시겠습니까?

형식과 개체 정보가 라이브러리에 들어 있습니다. 이 오류의 원인과 해결 방법은 다음과 같습니다.

•	이 기호에 대한 정의가 형식 라이브러리에 있습니다

언급된 라이브러리에 들어 있는 것처럼 기호를 정의하려면 확인을 눌러 라이브러리에 참조를 추가하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


개체는 Property Let 프로시저를 가지고 있지 않습니다

Property Let 메서드를 노출시키지 않으면 속성에 값을 할당할 수 없습니다. 이 오류의 원인과 해결 방법은 다음과 같습니다.

•	Property Let 메서드를 노출시키지 않은 속성에 값을 할당하려 하였습니다.

이 속성에는 값을 직접 할당할 수 없습니다. 클래스를 작성한 경우 Property Let 메서드를 노출하면 인터페이스를 수정할 수 있습니다. 그렇지 않으면 구성 요소의 설명서를 확인하여 값을 할당하기 위한 간접 메서드가 있는지 알아보십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


사용 가능한 도움말이 없습니다

오류와 연결된 도움말 항목이 없습니다. 이 오류의 원인과 해결 방법은 다음과 같습니다.

•	도움말이 없는 오류가 발생하였습니다.

Readme 파일을 확인하십시오. 최근에 발견된 오류에 대한 도움말은 Readme 파일에 설명이 있을 수도 있습니다.


개체가 지원하는 이벤트 저장소의 최대 한도로 이벤트를 이미 제거하고 있기 때문에 더 이상 개체 이벤트를 줄일 수 없습니다(오류 96)

각 개체가 이벤트를 종료할 수 있는 동시에 받는 사람의 수를 최대로 지정하였습니다. 이 오류의 원인과 해결 방법은 다음과 같습니다.

•	폼의 컨트롤에 대한 WithEvents 변수에 Set을 사용하려 하였습니다.

이 이벤트에서 허용된 받는 사람 수 때문에 WithEvents 변수에 대해 Set을 사용할 수 없습니다.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


DLL 항목 지점을 지정된 DLL에서 찾을 수 없습니다

입력점은 DLL(Windows의 경우) 또는 코드 리소스(매킨토시의 경우)  프로시저의 이름이거나 프로시저를 나타내는 서수입니다. 이 오류의 원인과 해결 방법은 다음과 같습니다.

•	형식 라이브러리가 입력점에서 잘못 설명되었는데 이름의 철자가 틀렸거나 서수를 잘못 지정했을 수 있습니다.

올바른 형식 라이브러리는 판매업체에 문의하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


지정된 프로그램을 실행할 수 없습니다

원시 코드 실행 파일을 만들 때는 일부 다른 프로그램을 실행해야 합니다. 이 오류의 원인과 해결 방법은 다음과 같습니다.

•	메모리 또는 시스템 리소스가 부족하여 코드 발생기나 링커를 실행할 수 없습니다.

실행 중인 응용 프로그램을 가능하면 많이 닫고 메모리와 기타 시스템 리소스를 늘이십시오.

•	Visual Basic이 잘못 설치되었습니다.

Visual Basic을 다시 설치하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


동일한 형식과 이름을 가진 리소스가 중복되었습니다

Microsoft Windows 리소스 파일에는 일반적으로 비트맵, 텍스트 문자열 및 응용 프로그램에서 사용하는 기타 데이터가 들어갑니다. 이 오류의 원인과 해결 방법은 다음과 같습니다.

•	프로젝트에서 사용하려는 Windows 리소스 파일에 동일한 형식과 이름을 가진 리소스가 둘 이상 있거나 파일에 Visual Basic이 자동으로 작성한 리소스가 들어 있습니다.

다른 리소스 파일을 사용하거나 잘못된 리소스 파일을 다시 작성하고 중복된 리소스 중 하나를 삭제하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


속성이나 메서드 호출은 인수나 반환값으로 전용 개체에 대한 참조를 포함할 수 없습니다(오류 98)

전용 개체는 프로젝트 외부로 보낼 수 없습니다. 아래의 사항들은 이 오류에 대한 원인이 될 수 있습니다.

•	클라이언트가 독립 프로세스 구성 요소의 속성이나 메서드를 호출하여 전용 개체에 인수 중 하나로서 참조를 전달하려 하였습니다. 클라이언트가 독립 프로세스 구성 요소의 속성이나 메서드를 호출하여 구성 요소가 전용 개체에 참조를 반환하거나 또는 그러한 참조를 ByRef 인수에 할당하려 하였습니다.

•	독립 프로세스 구성요소가 클라이언트에 콜백 메서드를 호출하여 전용 개체에 참조를 전달하려 하였습니다.

•	독립 프로세스 구성 요소가 이벤트의 인수로서 전용 개체에 참조를 전달하려 하였습니다.

•	클라이언트가 처리 중이던 이벤트의 ByRef 인수에 전용 개체 참조를 할당하려 하였습니다.

Visual Basic에서는 프로세스간에 비 비주얼 전용 개체에 참조를 전달할 수 없지만 일부 경우 Visual Basic은 이러한 오류를 감지하지 못하기 때문에 미리 이러한 오류를 예방할 수 없습니다. 전용 개체는 프로젝트 외부에서 사용되도록 만들어지지 않았습니다. 전용 개체를 클라이언트에 전달하면 프로그램 안정성이 떨어지고 다음 Visual Basic 버전과 호환되지 않을 수도 있습니다. 자신의 전용 클래스를 한 클라이언트에 전달해야 하는 경우 Instancing 속성을 Private가 아닌 다른 값으로 설정하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


허가되지 않은 상수에 지정하였습니다

상수는 읽기 전용 값입니다. 이 오류의 원인과 해결 방법은 다음과 같습니다.

•	Const로 선언된 값 또는 형식 라이브러리 상수에 새 값을 지정하려 하였습니다.

새 값을 지정해야 하는 경우에는 원하는 형식으로 일반 변수를 선언하고 이 변수에 값을 지정하십시오. 제한된 값을 가진 변수가 필요한 경우에는 Enum 문을 사용하여 열거 요소를 선언할 수 있습니다.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


선택할 수 있는 인수로 paramarray들을 함께 사용할 수 없습니다

ParamArray를 사용하면 변수 길이 인수 목록을 허용하는 프로시저를 정의할 수 있습니다. Optional 인수는 제공하거나 생략해도 오류가 발생하지 않는 인수입니다. 이 오류의 원인과 해결 방법은 다음과 같습니다.

•	동일한 매개 변수 목록에 ParamArray와 Optional 키워드를 모두 사용하였습니다.

Optional 또는 ParamArray 매개 변수를 삭제하십시오. 동일한 매개 변수 목록에서 두 키워드를 모두 사용할 수는 없습니다. 원하는 매개 변수 목록 종류에 따라 하나를 삭제하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


지정한 파일을 찾을 수 없습니다

메시지에서 찾을 수 없다는 파일 이름을 확인하십시오. 이 오류의 원인과 해결 방법은 다음과 같습니다.

•	오류 메시지의 파일 이름을 지정한 대로 찾을 수 없습니다.

파일 이름 뿐만 아니라 드라이브 이름과 경로가 올바로 지정되었는지 확인하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


선택적 매개 변수 형식이 잘못되었습니다

Optional 매개 변수에서 모든 Visual Basic 형식을 사용할 수 있는 것은 아닙니다. 이 오류의 원인과 해결 방법은 다음과 같습니다.

•	매개 변수의 데이터 형식이 잘못 정의되었습니다.

예를 들어 Optional 매개 변수는 사용자 정의 형식으로 사용할 수 없습니다. Variant 배열 요소는 다른 형식의 데이터를 저장할 수 있기 때문에 Variant 형식 배열을 사용하면 문제를 해결할 수 있습니다.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


템플릿이 잘못되었습니다

템플릿의 파생 클래스는 템플릿이 아닙니다. 이 오류의 원인과 해결 방법은 다음과 같습니다.

•	한 템플릿에서 파생하여 템플릿 구성 요소를 작성하려 하였습니다.

한 템플릿에서는 템플릿 클래스를 파생시킬 수 없습니다.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


개체 모듈에서만 유효합니다

일부 Visual Basic 문이나 작업은 개체 모듈(폼, 클래스 모듈, 기타)에서만 유효합니다. 이 오류의 원인과 해결 방법은 다음과 같습니다.

•	비 클래스 모듈에서 유효하지 않은 문이나 작업(예: Implements 문, WithEvents 키워드 또는 이벤트 저장소)을 사용하려 하였습니다.

이 오류를 발생시킨 문을 개체 모듈에 두십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


요청한 형식 라이브러리나 마법사가 VBA 프로젝트가 아닙니다

Visual Basic에서 사용할 수 있는 모든 구성 요소가 읽고 쓰기를 동시에 할 수 있는 것은 아닙니다. 이 오류의 원인과 해결 방법은 다음과 같습니다.

•	Visual Basic 프로젝트 내부로부터 추가 기능 또는 형식 라이브러리에 값을 작성하려 하였습니다.

Visual Basic 프로젝트의 일부로서 미리 포함된 추가 기능이나 형식 라이브러리에 직접 값을 작성할 수 없습니다.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


이 편집 작업에는 Reset이 필요합니다

대부분의 경우에는 코드를 편집하였을 때 그 편집한 위치에서부터 코드를 계속 실행할 수 있습니다. 이 오류의 원인과 해결 방법은 다음과 같습니다.

•	초기 위치에서부터 코드를 다시 시작해야 하는 코드를 변경하였습니다.

프로시저 내의 코드를 없애서 현재 실행 행이 이전 실행이 잠시 정지되었을 때와 같은 동일한 절차 구문에 포함되지 않을 경우 이러한 오류가 발생합니다.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


변역할 수 없습니다. 보다 자세한 정보를 보려면 translate.log 파일을 확인하십시오
번역할 수 없습니다. 보다 자세한 정보를 보려면 translate.log 파일을 확인하십시오

현재 버전의 Visual Basic만이 이전 버전과 호환하여 번역을 수행합니다. 이 오류의 원인과 해결 방법은 다음과 같습니다.

•	번역이 예기치 않게 실패하였습니다.

이것은 대개 형식 라이브러리 참조가 깨졌기 때문입니다. 지정된 번역 로그에는 더 자세한 내용이 나와 있습니다.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


마법사는 프로젝트를 참조할 수 없습니다

한 마법사가 다른 마법사를 참조할 수는 있지만 프로젝트는 참조할 수 없습니다. 이 오류의 원인과 해결 방법은 다음과 같습니다.

•	마법사 만들기 명령을 수행하는 동안 프로젝트 참조가 발견되었습니다.

프로젝트 참조를 삭제하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


예기치 않은 컴파일 오류입니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	이 오류는 컴파일 도중 컴파일러가 처리할 수 없는 예상하지 못한 오류가 발생할 때 일어납니다.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


지정된 개체에 대한 이벤트를 처리할 수 없습니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	이 개체의 이벤트를 처리할 수 없습니다. 이벤트가 개체에서 누락되었거나, 이벤트가 있어도 제대로 동작하지 않거나 또는 의도적으로 사용할 수 없게 되어 있습니다.

개체 찾아보기에서 개체 및 이벤트 정보를 통해 개체와 이벤트를 확인하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


기본 클래스 이름의 사용이 잘못되었습니다

기본 클래스 이름 자체를 사용할 수 없습니다. 이 오류의 원인 및 해결 방법은 다음과 같습니다.

•	기본 클래스의 기본 구성원에 액세스하려는 것을 명확히 하지 않고 기본 클래스 이름 자체를 사용하려 하였습니다.

기본 클래스 이름을 괄호 안에 넣어 기본 구성원에 액세스하려는 것을 나타내십시오.

•	하나의 식에서 기본 클래스 이름을 사용하였지만 액세스하려는 구성원이 모호하게 지정되었습니다.

기본 클래스 이름과 구성원 사이에 구분 기호(예: 느낌표)를 사용하십시오.

•	Set 문에 기본 클래스에 대한 참조가 포함되어 있지만 이 문에서 기본 클래스 이름을 사용하였습니다.

GetObject 사용과 같이 기본 클래스 이름을 사용하여 참조를 검색하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


이벤트 이름이 잘못되었습니다

개체 이름과 이벤트 이름을 밑줄로 결합하여 이벤트 프로시저 이름을 구성하였기 때문입니다. 이 오류의 원인과 해결 방법은 다음과 같습니다.

•	이벤트 이름에 밑줄을 사용하였습니다.

이벤트 이름에서 밑줄을 삭제하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


이벤트를 찾을 수 없습니다

RaiseEvent 문에 지정된 이벤트는 정의된 이벤트와 동일해야 합니다. 이 오류의 원인과 해결 방법은 다음과 같습니다.

•	RaiseEvent 문에 이름을 지정하였지만 이벤트 정의를 찾을 수 없습니다.

이벤트 이름의 철자가 정확한지 확인하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


찾을 문자열을 지정해야 합니다

개체 찾아보기에서 찾을 문자열을 입력해야 합니다. 이 오류의 원인과 해결 방법은 다음과 같습니다.

•	개체 찾아보기에서 찾기를 시작하였지만 찾을 문자열을 지정하지 않았습니다.

찾을 문자열을 입력하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


감추어진 상태이므로 지정된 이름을 표시할 수 없습니다

일부 이름이 형식 라이브러리에 존재하지만 숨겨져 있습니다. 이 오류의 원인과 해결 방법은 다음과 같습니다.

•	형식 라이브러리에 있는 이름을 지정하였지만 숨겨져 있습니다.

숨겨진 형식 라이브러리 구성원은 정상적으로 볼 수 없습니다. 숨겨진 구성원을 나타나게 하려면 개체 찾아보기 단축 메뉴에서 숨겨진 구성원 보기를 선택해야 합니다.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


지정한 형식이 현재 참조되지 않는 라이브러리에 있으므로 지정한 형식으로 점프할 수 없습니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	프로젝트 내에서 참조되지 않는 라이브러리에 형식을 지정하려 하였습니다.

참조 대화 상자를 통해 형식 라이브러리에 참조를 설정하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


Enum 내에서 잘못되었습니다

열거 정의 내에서 모든 형식을 사용할 수는 없습니다. 이 오류의 원인과 해결 방법은 다음과 같습니다.

•	Enum 구성원의 값으로서 문자열이나 기타 다른 유효하지 않은 형식을 지정하려 하였습니다.

Enum 구성원을 지정하기 위해 사용된 상수 식은 Long 또는 기타 Enum 형식으로 평가할 수 있어야 합니다.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


예기치 못한 오류가 발생하였습니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	예기치 못한 오류가 발생했습니다. 시스템을 종료한 후 다시 시작하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


현재 프로젝트는 이 형식의 파일을 지원하지 않습니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	열려는 파일이 유효한 프로젝트 파일이 아니거나 이 Visual Basic 호스트 응용 프로그램과 Visual Basic 환경에서 지원되지 않는 기능이 프로젝트 파일에 들어 있습니다.

열려는 파일이 유효한 프로젝트 파일(같은 Visual Basic 호스트 응용 프로그램 및 Visual Basic 환경에서 작성하여 저장한 프로젝트 파일)인지 확인하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


이 VBA 프로젝트는 다른 응용 프로그램에서 VBA를 실행하는 중에 만들어졌습니다. 이 프로젝트를 만든 동일 응용 프로그램에서만 이 프로젝트를 열 수 있습니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	열려는 파일은 다른 호스트 응용 프로그램 내에서 만든 프로젝트 파일입니다.

열려는 프로젝트 파일이 같은 Visual Basic 호스트 응용 프로그램에서 만들어진 것인지 확인하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


창 없는 컨트롤에 메뉴를 포함할 수 없습니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	창 없는 컨트롤에 메뉴를 포함하려 하였습니다.

컨트롤에 메뉴를 포함하려면 창이 있는 컨트롤을 선택하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


이 컨트롤은 'item' 디자이너에서만 사용할 수 있습니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	선택한 컨트롤은 이 디자이너에서만 작동합니다.

다른 컨트롤이나 디자이너를 선택하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


이 컨트롤은 'item' 디자이너에 사용할 수 없습니다
이 컨트롤은 'item' 디자이너에서 사용할 수 없습니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	선택한 컨트롤은 이 디자이너에서 작동하지 않습니다.

다른 컨트롤이나 디자이너를 선택하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


디자이너에서 이 Visual Basic 버전에 지원되지 않는 기능을 사용하기 때문에 이 디자인을 사용할 수 없습니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	선택한 디자이너가 이 Visual Basic 버전에서 지원되지 않습니다.

다른 디자이너를 사용하거나 이 Visual Basic 버전에 맞게 설계된 디자이너를 사용하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


'item'이(가) 참조는 되었지만 프로젝트의 어느 항목에도 사용되지 않으므로 'item'을(를) 추가할 수 없습니다. 이 오류를 해결하려면 프로젝트 옵션에서 '사용하지 않은 ActiveX 컨트롤에 대한 정보 제거'를 선택 해제하십시오
'item'이(가) 참조는 되었지만 프로젝트의 어느 항목에도 사용되지 않으므로 'item'을(를) 추가할 수 없습니다. 이 오류를 해결하려면 [프로젝트 옵션]에서 [사용하지 않은 ActiveX 컨트롤에 대한 정보 제거]를 선택 해제하십시오

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	오류에 지정된 구성 요소는 프로젝트의 어느 항목에서도 사용되지 않기 때문에 이 구성 요소를 추가할 수 없습니다.

프로젝트 메뉴의 프로젝트 옵션 대화 상자에서 "사용하지 않은 ActiveX 컨트롤에 대한 정보 제거"를 선택 해제하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


Internet Explorer를 시작할 수 없습니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	알 수 없는 문제로 인해 Internet Explorer를 실행할 수 없습니다.

Internet Explorer만 따로 실행하여 올바르게 작동하는지 확인하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


'item' 디자이너는 DLL 프로젝트에서만 사용할 수 있습니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	지정된 디자이너는 DLL 프로젝트에만 사용할 수 있습니다.

디자이너를 ActiveX DLL 프로젝트에서 사용하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


'item' 디자이너는 ActiveX EXE 프로젝트에서 Public이 될 수 없습니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	오류에 지정된 디자이너의 Instancing 속성을 ActiveX .exe 프로젝트에서 Public으로 설정할 수 없습니다.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


'item' 디자이너는 public이어야 하며 표준 EXE 프로젝트에서는 사용할 수 없습니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	오류에 지정된 디자이너의 Instancing 속성을 Public으로 설정해야 합니다.

이 디자이너를 표준 .exe 프로젝트에서 사용할 수 없습니다.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


'item' 디자이너는 private이 될 수 없습니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	오류에 지정된 디자이너의 Instancing 속성을 Private으로 설정할 수 없습니다.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


이 개체의 인스턴스가 하나 이상 실행 중입니다. 지금은 이 개체를 제거할 수 없습니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	현재 실행 중인 개체를 제거하려 하였습니다.

프로젝트에서 개체를 제거하려면 개체의 모든 인스턴스를 닫아야 합니다.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


이 프로젝트는 현재 다른 프로젝트에서 참조하고 있고 닫을 수 없습니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	다른 프로젝트에서 참조되고 있는 프로젝트를 닫으려 하였습니다.

먼저 다른 프로젝트에서 참조를 제거한 후 프로젝트를 닫으십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


MDI 폼은 멀티스레드 프로젝트에 사용할 수 없습니다. 이 프로젝트에서 모든 MDI 폼이 제거됩니다. 프로젝트에 MDI 폼을 유지하려면 [취소]를 선택하고 스레딩 모델을 스레드를 하나만 갖는 스레드 풀로 변경하십시오

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	멀티스레드 프로젝트에 MDI 폼을 추가하려 하였습니다.

프로젝트에 MDI 폼을 유지하려면 스레딩 모델을 스레드를 하나만 갖는 스레드 풀로 변경하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


'item'이(가) 액세스 위반 오류를 일으켰습니다. 사용 가능한 추가 기능 목록에서 'item'을(를) 제거하시겠습니까?

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	오류에 나타난 추가 기능이 파일 액세스 위반 오류를 일으켰습니다.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


선택한 추가 기능은 '명령줄에서 실행할 수 있음'으로 확인되지 않았으며 일부 사용자 동작(UI 가능)이 필요할 수 있습니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	"명령줄에서 안전하게 실행할 수 있는" 추가 기능은 명령줄을 통해 Visual Basic을 호출할 때 사용자 입력을 요구하는 사용자 인터페이스가 없이 등록됩니다. 사용자 인터페이스는 스크립트 작성 같은 무인 처리 작업에 방해가 될 수 있습니다.

추가 기능이 명령줄에서 실행할 수 있음인 경우에도 추가 기능을 명령줄에서 실행할 수 있음으로 지정하지 않으면, 사용자가 이 추가 기능을 선택한 후 로드 동작 상자에서 명령줄을 선택할 때 경고 메시지가 나타납니다. 이 메시지가 심각한 오류를 의미하는 것은 아니며, 단지 예상치 않게 나타나 자동화된 스크립트 작성을 중지시키고 사용자 입력을 요구하는 UI 요소가 추가 기능에 포함되어 있을 수 있다는 점을 사용자에게 경고합니다.

추가 기능을 명령줄에서 실행할 수 있음으로 지정하려면 추가 기능 디자이너 등을 사용하여 추가 기능을 명령줄에서 실행할 수 있음으로 제작하거나 수동으로 레지스트리 키 값을 수정하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


매개 변수가 잘못되었습니다. 사용자 정의 형식을 작성할 수 없습니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	PropertyBag 개체에 사용자 정의 형식을 작성하려 하였습니다.

사용자 정의 형식의 각 개별 항목을 PropertyBag 개체에 작성하여 이 문제를 해결할 수 있습니다.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


매개 변수가 잘못되었습니다. 개체가 지속성을 지원하지 않기 때문에 개체를 작성할 수 없습니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	개체를 PropertyBag 개체에 작성하려 하였지만 개체에서 ActiveX 지속성 인터페이스 중 하나를 지원하지 않습니다.

이 문제를 해결하려면 개체 코드를 액세스해야 합니다. 개체는 Visual Basic에서 만든 것이어야 하고 개체의 Persistable 속성이 True로 설정되어야 합니다. 또한 Class는 Public 또는 Public Createable이고 ActiveX Dll, ActiveX Exe, 또는 UserControl 프로젝트에 들어 있어야 합니다.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


속성 이름이 잘못되었습니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	입력한 속성 이름이 올바르지 않습니다. 입력한 이름이 이미 사용 중이거나, 시스템용으로 예약된 이름이거나 또는 잘못된 문자를 포함하는 이름을 입력하였습니다.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


'item'은(는) 단일 스레드 구성 요소이기 때문에 멀티스레드 프로젝트에 사용할 수 없습니다. 'item'의 스레딩 모델을 변경하거나 구성 요소 제조업체로부터 업데이트된 버전을 구하십시오

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	멀티스레드 프로젝트에서 단일 스레드 구성 요소를 사용하려 하였습니다.

단일 스레드 구성 요소의 스레딩 모델을 변경하거나 구성 요소 제조업체로부터 업데이트된 버전을 구하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


'item2'에서 'item1' 컨트롤을 로드할 수 없습니다. 'item2'이(가) 오래된 버전일 수 있습니다. 컨트롤이 응용 프로그램과 함께 제공된 버전인지 확인하십시오

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	오래된 버전을 사용하고 있습니다.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


'item 1' 컨트롤을 활성화할 수 없습니다. 이 컨트롤이 응용 프로그램과 호환되지 않을 수 있습니다. 컨트롤이 응용 프로그램과 함께 제공된 버전인지 확인하십시오

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	오류에 나타난 컨트롤이 응용 프로그램과 호환되지 않기 때문에 응용 프로그램이 컨트롤을 실행하지 못했습니다. 현재 시스템에 있는 컨트롤 버전이 프로그램과 함께 제공된 버전과 다르면 이 오류가 발생할 수 있습니다.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


ActiveX 디자이너의 형식 정보가 저장된 정보와 일치하지 않습니다. 로드할 수 없습니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	ActiveX 디자이너의 형식 정보가 저장된 정보와 일치하지 않기 때문에 프로젝트를 로드할 수 없습니다. 손상된 파일이 이 오류의 원인일 수 있습니다.

프로젝트의 백업본을 로드하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


컴파일된 구성 요소와 디자인 환경 구성 요소 간의 상호 작용을 지원하지 않습니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	폼이나 UserControl 같이 이전에 컴파일되었고 현재 런타임(msvbvm60.dll)을 이용하여 실행 중인 한 구성 요소와 IDE에서 실행 중인 다른 구성 요소가 함께 실행될 때 이 오류가 발생합니다. 예를 들면, 컴파일된 UserControl을 IDE의 폼에서 실행하면 이 오류가 발생합니다.

IDE에서 실행하는 항목과 컴파일된 개체 간 내부 메모리 구조가 약간 다르고 서로 호환되지 않을 수 있기 때문에 이 문제가 발생합니다. 그러나 일반적으로는 Property 또는 Sub 프로시저를 통해 UserControl(Me)의 인스턴스를 호스트 폼이나 다른 구성 요소에 전달하지 않으면 이런 문제가 발생하지 않습니다.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


최소화된 폼 이미지를 인쇄할 수 없습니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	최소화된 상태의 폼 이미지는 인쇄할 수 없습니다.

이미지 크기를 최대화한 후 인쇄 작업을 다시 시도하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


코드 발생기나 링커에서 예상치 못한 오류가 발생하였습니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	코드 발생기 또는 링커에서 예상하지 않은 오류가 발생하였습니다.

예를 누르면 메모장에서 오류 내용을 볼 수 있습니다.

대개 디스크 공간이 부족하거나 그 외 디스크 관련 문제로 인해 이 오류가 발생합니다.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


버전 번호는 0부터 9999 사이의 숫자여야 합니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	프로젝트 속성 대화 상자의 만들기 탭에서 프로젝트의 버전 번호를 지정할 때 주:, 보조:, 수정: 번호에 음수, 숫자 이외의 문자 또는 9999보다 큰 숫자를 지정하려 했습니다. 0부터 9999 사이의 숫자를 사용하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


기본 주소가 잘못되었습니다

잘못된 기본 주소를 입력하였습니다. 이 오류의 원인과 해결 방법은 다음과 같습니다.

•	프로젝트 속성 대화 상자의 컴파일 탭에서 잘못된 기본 주소를 지정하였습니다.

유효한 기본 주소는 64K부터 &H7FFF0000까지 범위에서 64K의 배수이어야 합니다.

이 오류는 ActiveX DLL 또는 ActiveX 컨트롤 프로젝트에서 발생합니다.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


작성 가능한 공용 구성 요소를 찾을 수 없습니다. 자세한 정보를 보려면 F1키를 누르십시오

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	프로젝트에 작성 가능한 공용 구성 요소가 하나 이상 있어야 합니다.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


'item' 파일을 ActiveX 구성 요소로 등록할 수 없습니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	유효한 ActiveX 구성 요소가 아닌 컨트롤이나 동적 연결 라이브러리(.dll)를 등록하려 하였습니다. 컨트롤이나.dll이 올바른지 확인하십시오. 자세한 정보는 ActiveX 구성 요소 제조업체에게 문의하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


프로젝트 파일 'item1'에 'item2'(이)라는 잘못된 키가 있습니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	Visual Basic 프로젝트(.vbp) 파일에 Visual Basic에서 인식할 수 없는 키가 포함되어 있습니다.

이 파일의 백업본을 설치하거나 텍스트 편집기에서 파일을 수정하여 문제를 해결하십시오.

경고   Visual Basic 파일을 Visual Basic 이외의 편집기에서 편집하면 파일이 손상될 수 있습니다. 고급 사용자만 파일을 편집하는 것이 좋습니다.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


도움말을 표시할 수 없습니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	WinHelp를 실행하는 경우 Windows 도움말 응용 프로그램을 사용할 수 없기 때문에 오류가 발생합니다. 시스템에 Winhelp.exe 파일이 있으면 경로가 올바른지 확인하십시오. 시스템에 이 파일이 없으면 Microsoft Windows 9x 또는 Microsoft Windows NT 설치 프로그램을 실행하여 파일을 설치하십시오.

•	HTMLHelp를 실행하는 경우 시스템에 HH.exe 파일이 있으면 경로가 올바른지 확인하십시오. 시스템에 이 파일이 없으면 이 파일을 설치한 후 도움말을 볼 수 있습니다.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


등록되지 않은 클래스입니다: 'item 1
등록되지 않은 클래스입니다: 'item 1'

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	오류에 나타난 클래스 모듈이 등록되지 않았습니다.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


프로그램 ID 문자열 'item'이 너무 깁니다. 프로그램 ID는 39 문자 이하여야 합니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	ActiveX 구성 요소의 ProgID 문자열은 39 문자를 넘을 수 없습니다. ProgID는 프로젝트 이름과 클래스 모듈 이름을 조합하여 구성됩니다.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


<name> 프로젝트가 변경되었습니다. 변경 내용을 지금 저장하시겠습니까?

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	프로젝트의 하나 이상의 파일에서 속성 설정이나 코드가 변경되었지만 변경 내용을 아직 저장하지 않았습니다. 다른 프로젝트를 로드하기 전에 변경 내용을 저장할 수 있는 마지막 기회입니다.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


현재 레지스트리 사용 권한 때문에 'item'의 로드 동작을 업데이트할 수 없습니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	추가 기능 관리자 대화 상자의 사용 가능한 추가 기능 목록에서 선택한 추가 기능이 시스템 레지스트리에 올바르게 등록되지 않았거나 더 이상 등록되어 있지 않기 때문에 이 추가 기능을 로드할 수 없습니다.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


구성 요소가 올바르게 등록되지 않았습니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	오류에 나타난 구성 요소가 올바르게 등록되지 않았습니다.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


등록된 위치에서 구성 요소를 찾을 수 없습니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	필요한 실행 파일(.exe) 또는 동적 연결 라이브러리(.dll) 파일을 찾을 수 없습니다.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


구성 요소에서 요청한 개체를 성공적으로 만들 수 없습니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	ActiveX 구성 요소의 실행 파일(.exe)을 올바르게 실행할 수 없습니다.

레지스트리 정보에 문제가 있을 수 있습니다.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


'item' 구성 요소 또는 그 종속 요소 중 하나가 올바르게 등록되지 않았습니다. 파일이 없거나 잘못되었습니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	오류에 나타난 파일이 이동 또는 삭제되었습니다.

•	오류에 나타난 파일이 올바르게 등록되지 않았습니다.

파일을 다시 설치하여 올바르게 등록하십시오. 자세한 내용은 개체 제공자에게 문의하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


이 기능을 사용하려면 Internet Explorer 'item' 이상이 필요합니다. www.microsoft.com에서 최신 버전을 구할 수 있습니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	이 기능이 올바르게 작동하려면 지정된 Internet Explorer 버전이 필요합니다.

http://www.microsoft.com을 방문하여 사용 가능한 Internet Explorer 최신 버전을 확인하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


폼이 최소화되거나 최대화된 동안에는 폼의 크기를 변경하거나 폼을 이동할 수 없습니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	최소화 또는 최대화된 상태에서 폼의 크기를 변경하거나 이동하려 하였습니다.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


모달 폼이 표시된 동안에는 모달이 아닌 폼은 표시할 수 없습니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	모달 폼을 해제하지 않고 모달이 아닌 폼을 표시하려 하였습니다.

먼저 모달 폼을 해제하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


Variant에 ReDim, Erase를 적용하거나 With 개체를 요소로 갖는 배열을 지정할 수 없습니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	Variant에 ReDim 또는 Erase를 적용하거나 With 개체를 요소로 갖는 변수를 지정하려 하였습니다.

예를 들면 아래 코드에서 이 오류가 발생합니다.

Type Test

Name as Integer

End Type

Sub Main()

Dim c(0) As Test

Dim e

e = c

With e(0)

ReDim e(1)

End With

End Sub

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


이 프로젝트를 볼 수 없습니다

이 오류의 원인과 해결 방법은 다음과 같습니다.

•	보려는 프로젝트가 잠겨 있습니다.

프로젝트를 볼 수 있도록 하는 방법을 알려면 호스트 응용 프로그램의 온라인 설명서를 참조하십시오.

자세한 정보를 보려면 원하는 항목을 선택하고 F1 키(Windows의 경우) 또는 Help 키(매킨토시의 경우)를 누르십시오.


Activate, Deactivate 이벤트 예제

아래 코드는 UserForm1과 UserForm2의 두 가지 UserForm을 사용합니다. 이 프로시저를 UserForm1 모듈로 복사한 다음, UserForm2를 추가합니다. UserForm1의 제목은 Activate 이벤트 프로시저에 생성됩니다. 사용자가 UserForm1의 클라이언트 영역을 누를 때 UserForm2를 로드해서 표시하며, UserForm1의 Deactivate 이벤트를 발생시켜 제목을 변경합니다.

' UserForm1에 대한 Activate 이벤트

Private Sub UserForm_Activate()

  UserForm1.Caption = "클라이언트 영역을 누르십시오."

End Sub

' UserForm1에 대한 Click 이벤트

Private Sub UserForm_Click()

  Load UserForm2

  UserForm2.StartUpPosition = 3

  UserForm2.Show

End Sub

' UserForm1에 대한 Deactivate 이벤트

Private Sub UserForm_Deactivate()

  UserForm1.Caption = "방금 포커스를 잃어 버렸습니다."

  UserForm2.Caption = "포커스가 방금 UserForm1을 벗어나 내게 왔습니다."

End Sub


Initialize 이벤트 예제

아래 예제에서는 프로그램 내에 두 가지 UserForm이 있다고 가정합니다. UserForm1의 Initialize 이벤트에서 UserForm2를 로드하고 표시합니다. 사용자가 UserForm2를 누를 때 UserForm2가 곧 숨겨지고 UserForm1이 표시됩니다. UserForm1을 누르면 UserForm2가 다시 표시됩니다.

' UserForm1에 대한 Initialize 이벤트 프로시저입니다.

Private Sub UserForm_Initialize()

Load UserForm2

UserForm2.Show

End Sub

' UserForm2에 대한 Click 이벤트입니다.

Private Sub UserForm_Click()

UserForm2.Hide

End Sub

' UserForm1에 대한 click 이벤트입니다.

Private Sub UserForm_Click()

UserForm2.Show

End Sub


QueryClose 이벤트 예제

아래 코드는 사용자가 UserForm의 클라이언트 영역을 눌러서 닫도록 합니다. 사용자가 제목 표시 줄에 Close 상자를 사용하려고 할 경우 취소 매개 변수는 종료를 방지하기 위해 0이 아닌 값으로 설정됩니다. 그러나 사용자가 클라이언트 영역을 눌렀을 경우 CloseMode는 1값을 갖게 되고 Unload Me가 완료됩니다.

Private Sub UserForm_Activate()

  UserForm1.Caption = "나를 없애려면 나를 눌러야 합니다."

End Sub

Private Sub UserForm_Click()

  Unload Me

End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

  '사용자가 제목 표시줄에서 닫기 상자를 닫지 못하게 합니다.

  If CloseMode <> 1 Then Cancel = 1

  UserForm1.Caption = "닫기 상자가 작동하지 않습니다. 나를 누르십시오."

End Sub


Resize 이벤트 예제

아래 예제는 Activate와 Click 이벤트를 사용하여 UserForm의 Resize 이벤트가 발생하는 것을 보여줍니다. 사용자가 폼의 클라이언트 영역을 누르면 폼은 확대되거나 축소되고, 새로운 높이가 제목 표시줄에 지정됩니다. Tag 속성은 UserForm의 초기 높이를 저장하는 데 사용됩니다.

' UserForm1에 대한 Activate 이벤트

Private Sub UserForm_Activate()

UserForm1.Caption = "나를 화자로 만들려면 나를 누르십시오."

Tag = Height	' 초기 높이를 저장합니다.

End Sub

' UserForm1에 대한 Click 이벤트

Private Sub UserForm_Click()

Dim NewHeight As Single

NewHeight = Height

' 폼이 작아지면 그것을 크게 만듭니다.

If NewHeight = Val(Tag) Then

Height = Val(Tag) * 2

Else

' 폼이 커지면 그것을 작게 만듭니다.

Height = Val(Tag)

End If

End Sub

' UserForm1에 대한 Resize 이벤트

Private Sub UserForm_Resize()

UserForm1.Caption = "새 높이: " & Height & "  " & "크기를 조정하려면 나를 누르십시오."

End Sub


Terminate 이벤트 예제

아래 이벤트 프로시저는 사용자가 폼을 닫기 위해 클라이언트 영역을 누른 후 UserForm에서 몇 초 동안 신호음이 나게 합니다.

Private Sub UserForm_Activate()

  UserForm1.Caption = "나를 없애려면 나를 누르십시오."

End Sub

Private Sub UserForm_Click()

  Unload Me

End Sub

Private Sub UserForm_Terminate()

  Dim Count As Integer

  For Count = 1 To 100

    Beep

  Next

End Sub


Activate, Deactivate 이벤트

Activate 이벤트는 개체가 활성 창이 될 때 발생합니다. Deactivate 이벤트는 개체가 더 이상 활성 창이 아닐 때 발생합니다.

구문

Private Sub object_Activate()

Private Sub object_Deactivate()

object 자리 표시자는 적용 대상 목록에 있는 개체로 평가되는 개체식입니다.

참고

개체는 코드에서 Show 메서드를 사용하면 활성화될 수 있습니다.

Activate 이벤트는 개체가 보이는 경우에만 발생할 수 있습니다. Load로 로드한 UserForm은 Show 메서드를 사용하지 않으면 보이지 않습니다.

Activate 이벤트와 Deactivate 이벤트는 응용 프로그램 내에서 포커스를 옮길 때에만 발생합니다. 다른 응용 프로그램에 있는 개체로 또는 그 개체로부터 포커스를 옮기면 두 이벤트 모두 발생하지 않습니다.

Deactivate 이벤트는 개체를 언로드할 때에는 발생하지 않습니다.


Initialize 이벤트

개체를 로드한 후 그 개체가 보이기 전에 발생합니다.

구문

Private Sub object_Initialize()

object 자리 표시자는 적용 대상 목록에 있는 개체로 평가되는 개체식입니다.

참고

Initialize 이벤트는 보통 응용 프로그램이나 UserForm을 준비하는 데 사용됩니다. 변수는 초기값으로 지정되고, 컨트롤들은 초기 데이터에 적응하도록 옮겨지거나 크기가 조정될 수 있습니다.


QueryClose 이벤트

UserForm이 닫히기 전에 발생합니다.

구문

Private Sub UserForm_QueryClose(cancel As Integer, closemode As Integer)

QueryClose 이벤트 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
cancel	정수. 이 인수를 0이 아닌 값으로 설정하면 모든 로드된 사용자 정의 폼에 있는 QueryClose 이벤트를 중지하고 UserForm과 응용 프로그램을 닫지 못하게 합니다.
closemode	QueryClose 이벤트의 원인을 가리키는 값 또는 상수
반환값

closemode 인수는 다음과 같은 값들을 반환합니다.

상수	값	설명
vbFormControlMenu	0	사용자가 UserForm에 있는 컨트롤 메뉴에서 닫기 명령을 선택했습니다.
vbFormCode	1	Unload 문이 코드로부터 불러들여졌습니다.
vbAppWindows	2	현재의 Windows 운영 환경 세션이 끝나고 있습니다.
vbAppTaskManager	3	Windows 작업 관리자가 응용 프로그램을 닫고 있습니다.
이 상수들은 개체 찾아보기에 있는 Visual Basic for Applications 개체 라이브러리에 나열되어 있습니다. vbFormMDIForm은 개체 찾아보기에도 지정되어 있지만 아직 지원되지는 않습니다.

참고

이 이벤트는 보통 어떤 응용 프로그램을 닫기 전에 그 응용 프로그램에 포함된 사용자 정의 폼에서 모든 작업이 끝났음을 확인하는 데 사용됩니다. 예를 들어, 사용자가 UserForm에 새로운 데이터를 저장하지 않았을 경우 그 응용 프로그램이 데이터를 저장할 것인지 물어봅니다.

응용 프로그램을 닫기 전에 QueryClose 이벤트 프로시저를 사용해서 Cancel 속성을 True로 설정하면 닫기 프로세스가 중지됩니다.


Resize 이벤트

사용자 정의 폼의 크기를 조정할 때 발생합니다.

구문

Private Sub UserForm_Resize()

참고

Resize 이벤트 프로시저를 사용하여 상위 UserForm의 크기가 조정되었을 때 컨트롤의 크기를 조정하거나 이동합니다. Resize 이벤트 프로시저를 사용하여 변수 또는 속성을 다시 계산할 수도 있습니다.


Terminate 이벤트(Visual Basic for Applications)
Terminate 이벤트

어떤 개체를 참조하는 모든 변수를 Nothing으로 설정함으로써 그 개체의 인스턴스에 대한 모든 참조가 메모리에서 제거되거나 그 개체에 대한 마지막 참조가 범위를 벗어날 때 발생합니다.

구문

Private Sub object_Terminate( )

object 자리 표시자는 적용 대상 목록에 있는 개체로 평가되는 개체식입니다.

참고

Terminate 이벤트는 개체가 언로드된 후에 발생합니다. UserForm이나 클래스의 인스턴스가 메모리에서 제거될 경우 응용 프로그램이 비정상적으로 종료되기 때문에 Terminate 이벤트는 실행되지 않습니다. 예를 들어, 응용 프로그램이 End 문을 불러온 다음 클래스나 UserForm의 기존의 모든 인스턴스를 메모리에서 제거할 경우 Terminate 이벤트는 그 클래스나 UserForm에 대해 실행되지 않습니다.


Hide 메서드 예제

아래 예제에서는 프로그램에 두 개의 UserForms이 있다고 가정합니다. UserForm1의 Initialize 이벤트에서 UserForm2를 로드한 후에 보여줍니다. 사용자가 UserForm2를 누르면 UserForm2가 사라지고 UserForm1이 나타납니다. 그리고 UserForm1을 누르면 UserForm2가 다시 나타납니다.

' 이 부분은 UserForm1의 Initialize 이벤트 프로시저입니다.

Private Sub UserForm_Initialize()

Load UserForm2

UserForm2.Show

End Sub

' 이 부분은 UserForm2의 Click 이벤트입니다.

Private Sub UserForm_Click()

UserForm2.Hide

End Sub

' 이 부분은 UserForm1의 click 이벤트입니다.

Private Sub UserForm_Click()

UserForm2.Show

End Sub


Load 문 예제

아래 예제에서는 UserForm1의 Initialize 이벤트 수행 중에 UserForm2를 로드합니다. UserForm2를 연속하여 누르면 UserForm1이 나타납니다.

' 이 부분은 UserForm1의 Initialize 이벤트 프로시저입니다.

Private Sub UserForm_Initialize()

Load UserForm2

UserForm2.Show

End Sub

' 이 부분은 UserForm2의 Click 이벤트입니다.

Private Sub UserForm_Click()

UserForm2.Hide

End Sub

' 이 부분은 UserForm1의 click 이벤트입니다.

Private Sub UserForm_Click()

UserForm2.Show

End Sub


PrintForm 메서드 예제

아래 예제에서는 사용자가 폼을 눌렀을 때 폼의 클라이언트 영역을 인쇄합니다.

' 이 부분은 UserForm1의 click 이벤트입니다.

Private Sub UserForm_Click()

UserForm1.PrintForm

End Sub


Show 메서드 예제

아래 예제에서는 프로그램에 두 개의 UserForms이 있다고 가정합니다. UserForm1의 Initialize 이벤트에서 UserForm2를 로드한 후에 보여줍니다. 사용자가 UserForm2를 누르면 UserForm2가 사라지고 UserForm1이 나타납니다. 그리고 UserForm1을 누르면 UserForm2가 다시 나타납니다.

' 이 부분은 UserForm1의 Initialize 이벤트 프로시저입니다.

Private Sub UserForm_Initialize()

Load UserForm2

UserForm2.Show

End Sub

' 이 부분은 UserForm2의 Click 이벤트입니다.

Private Sub UserForm_Click()

UserForm2.Hide

End Sub

' 이 부분은 UserForm1의 click 이벤트입니다.

Private Sub UserForm_Click()

UserForm2.Show

End Sub


Unload 문 예제

아래 예제에서는 프로그램에 두 개의 UserForms가 있다고 가정합니다. UserForm1의 Initialize 이벤트에서 UserForm2를 로드한 후에 보여줍니다. 사용자가 UserForm2을 누르면 UserForm2가 사라지고 UserForm1이 나타납니다. 그리고 UserForm1을 누르면 반대로 UserForm1이 사라집니다.

' 이 부분은 UserForm1의 Initialize 이벤트 프로시저입니다.

Private Sub UserForm_Initialize()

Load UserForm2

UserForm2.Show

End Sub

' 이 부분은 UserForm2의 Click 이벤트입니다.

Private Sub UserForm_Click()

Unload UserForm2

End Sub

' 이 부분은 UserForm1의 click 이벤트입니다.

Private Sub UserForm_Click()

Unload UserForm1

End Sub


WhatsThisMode 메서드 예제

아래 예제에서는 사용자가 UserForm을 누르면 마우스 포인터가 설명(물음표)으로 바뀝니다. 속성 창에서 WhatsThisHelp 또는 WhatsThisButton 속성이 True로 설정되어 있지 않으면 다음 호출은 효과가 없습니다.

Private Sub UserForm_Click()

' 마우스 포인터가 설명의 물음표로 바뀝니다.

WhatsThisMode

End Sub


Hide 메서드

개체를 숨기지만 지우지는 않습니다.

구문

object.Hide

object 자리 표시자는 적용 대상 목록에 있는 개체로 평가되는 개체식을 나타냅니다. object를 생략하면 포커스를 가진 UserForm이 object로 인식됩니다.

참고

개체를 숨기면 화면에서 제거되고 그 개체의 Visible 속성이 False로 설정됩니다. 숨겨진 개체의 컨트롤에 사용자가 액세스할 수 없으나 실행 중인 응용 프로그램, 자동화를 통해 응용 프로그램과 통신할 수도 있는 다른 프로세스, Timer 컨트롤 이벤트(Windows의 경우)에서 프로그래밍이 가능합니다.

UserForm을 숨기면 UserForm을 숨긴 이벤트 프로시저의 모든 코드가 실행을 마쳐야 응용 프로그램과 상호 작용할 수 있습니다.

Hide 메서드를 불러올 때 UserForm이 로드되지 않을 경우 Hide 메서드는 UserForm을 로드하지만 표시하지는 않습니다.


Load 문

개체를 로드하지만 표시하지는 않습니다.

구문

Load object

object 자리 표시자는 적용 대상 목록에 있는 개체로 평가되는 개체식을 나타냅니다.

참고

개체를 로드할 때 그 개체는 메모리에 놓이지만 보이지는 않습니다. Show 메서드를 사용하여 개체를 보이게 하십시오. 개체가 보이기 전에는 사용자는 그 개체와 상호 작용할 수 없습니다. 개체는 자신의 Initialize 이벤트 프로시저에 프로그래밍해서 조작할 수 있습니다.


PrintForm 메서드

UserForm 개체의 비트별 이미지를 프린터로 전송합니다.

구문

object.PrintForm

object 자리 표시자는 적용 대상 목록에 있는 개체로 평가되는 개체식을 나타냅니다. object를 생략하면 포커스가 있는 UserForm이 object로 인식됩니다.

참고

PrintForm은 UserForm 개체에서 보이는 모든 개체와 비트맵을 인쇄합니다. PrintForm은 UserForm 개체에 추가된 그래픽도 인쇄합니다.

PrintForm이 사용하는 프린터는 운영 체제의 제어판 설정에 따라 결정됩니다.


Show 메서드

UserForm 개체를 표시합니다.

구문

[object.]Show modal

Show 메서드 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
object	선택적인 요소. 생략 가능한 object는 적용 대상 목록에 있는 개체로 평가되는 개체식을 나타냅니다. object를 생략하면 활성 UserForm 모듈과 연관된 UserForm이 object로 인식됩니다.
modal	선택적인 요소. UserForm이 모달인지 모덜리스인지 결정하는 Boolean 값입니다.
설정

modal 인수 설정은 다음과 같습니다.

상수	값	설명
vbModal	1	UserForm이 모달입니다.(기본값).
vbModeless	0	UserForm이 모덜리스입니다.

참고

Show 메서드를 불러올 때 지정된 개체가 로드되지 않을 경우 Visual Basic이 자동으로 그 개체를 로드합니다.

메모   Microsoft Office 97에서 UserForm이 모덜리스로 표시되도록 설정되면 런타임 오류를 일으킵니다. Office 97 UserForm은 항상 모달입니다.

UserForm이 모덜리스일 때는 곧이어 다음 코드가 실행됩니다. 모덜리스 폼은 작업 표시줄에 나타나지 않으며 창 탭 순서에도 없습니다.

메모   모덜리스 UserForm의 경우 코드 모듈을 변경하는 등 UserForm 프로젝트에 재컴파일이 필요한 변경 작업을 할 경우 이 UserForm과 연관된 데이터를 잃게 될 수 있습니다.

UserForm이 모달일 때 사용자는 응용 프로그램의 다른 부분을 사용하기 전에 응답해야 합니다. UserForm을 숨기거나 언로드해야 다음 코드가 실행됩니다. UserForm이 표시될 때 응용 프로그램에 있는 다른 폼을 사용할 수 없지만 다른 응용 프로그램은 그렇지 않습니다.


Unload 문

개체를 메모리에서 제거합니다.

구문

Unload object

필수 요소인 object 자리 표시자는 적용 대상 목록에 있는 개체로 평가되는 개체식을 나타냅니다.

참고

개체를 언로드할 때 그 개체는 메모리에서 제거되고 개체와 연관된 모든 메모리가 다시 사용됩니다. 개체가 Load 문을 사용해서 다시 메모리에 놓여져야 사용자가 개체와 상호 작용할 수 있으며, 그 개체를 프로그밍해서 조작할 수 있습니다.


WhatsThisMode 메서드

마우스 포인터를 설명 포인터로 변하고 응용 프로그램이 선택된 개체에 대한 도움말을 표시하도록 준비합니다. 매킨토시에도 이 메서드가 있지만 포인터 기능은 없습니다.

구문

object.WhatsThisMode

object 자리 표시자는 적용 대상 목록에 있는 개체로 평가되는 개체식을 나타냅니다. object를 생략하면 포커스가 있는 UserForm이 object로 인식됩니다.

참고

WhatsThisMode 메서드를 실행하면 응용 프로그램이 제목 표시줄에 있는 설명 단추를 누른 것과 같은 상태로 놓여 집니다. 마우스 포인터가 설명 포인터로 변합니다. 사용자가 개체를 누르면 그 개체의 WhatsThisHelpID 속성은 상황에 맞는 도움말을 부르는 데 사용됩니다.


UserForm 개체, UserForms 컬렉션

UserForm 개체는 응용 프로그램의 사용자 인터페이스의 일부분을 구성하는 창이나 대화 상자입니다.

UserForm 컬렉션은 그 요소가 응용 프로그램에서 로드한 각각의 UserForm을 나타내는 컬렉션입니다. UserForms 컬렉션에는 Count 속성, Item 속성, Add 메서드가 있습니다. Count는 컬렉션에 있는 구성 요소의 개수를 지정합니다. Item(기본 구성원)은 특정한 컬렉션 구성원을 지정하고, Add는 컬렉션에 새로운 UserForm 요소를 놓습니다.

구문

UserForm

UserForms[.Item](index)

index 자리 표시자는 0부터 UserForms.Count � 1까지의 정수를 나타냅니다. Item은 UserForms 컬렉션의 기본 구성원이고 지정할 필요는 없습니다.

참고

UserForms 컬렉션을 사용해서 응용 프로그램에 로드한 모든 사용자 정의 폼을 통해 반복할 수 있습니다. 그 컬렉션은 UserForms라고 명명된 고유 전역 변수를 식별합니다. UserForms(index)를 인수가 UserForm 클래스로 지정된 함수에 전달할 수 있습니다.

사용자 정의 폼에는 위치, 크기, 색, 동작 방식과 같은 모양을 결정하는 속성이 있습니다.

사용자 정의 폼은 사용자가 초기화하거나 시스템이 일으킨 이벤트에도 응답할 수 있습니다. 예를 들어, UserForm의 Initialize 이벤트 프로시저에서 코드를 작성하여 UserForm이 표시되기 전에 모듈 수준 변수를 초기화할 수 있습니다.

속성과 이벤트 외에도 메서드를 사용하여 코드를 사용하는 사용자 정의 폼을 조작할 수 있습니다. 예를 들어, Move 메서드를 사용해서 UserForm의 위치와 크기를 변경할 수 있습니다.

사용자 정의 폼을 디자인할 때 BorderStyle 속성을 설정해서 테두리를 정의하고, Caption 속성을 설정해서 텍스트를 제목 표시 줄에 넣으십시오. 코드에 Hide 메서드와 Show 메서드를 사용해서 UserForm을 실행 모드에서 보이거나 안 보이게 할 수 있습니다.

UserForm은 개체 데이터 형식입니다. 변수를 UserForm 형식으로 선언한 후에 그 변수를 디자인 모드에 선언된 UserForm 형식의 인스턴스로 설정할 수 있습니다. 이와 비슷하게 인수를 프로시저에 UserForm 형식으로 전달할 수 있습니다. Dim 문, Set 문, Static 문에서 New 키워드를 사용하면 코드에 여러 개의 사용자 정의 폼 인스턴스를 만들 수 있습니다.

Controls 컬렉션을 사용해서 UserForm에 있는 컨트롤의 컬렉션에 액세스할 수 있습니다. 예를 들어 UserForm에 있는 컨트롤을 모두 숨기려면 다음과 같은 코드를 사용하십시오.

For Each Control in UserForm1.Controls

Control.Visible = False

Next Control


StartUpPosition 속성 예제

다음은 3(Windows 기본 위치)으로 설정된 StartUpPosition 속성을 가진 UserForm2를 로드하기 위해 UserForm1의 Click 이벤트에서 Load 문과 Show 메서드를 사용하는 예제입니다. 그러면 Show 메서드는 UserForm2가 보이도록 합니다.

Private Sub UserForm_Click()

Load UserForm2

UserForm2.StartUpPosition = 3

UserForm2.Show

End Sub


StartUpPosition 속성

UserForm이 처음 나타날 때 UserForm의 위치를 지정하는 값을 반환하거나 설정합니다.

StartUpPosition에 대해서 4가지 설정 중 한 가지를 사용할 수 있습니다.

설정	값	설명
Manual	0	지정한 초기 설정이 없음
CenterOwner	1	UserForm이 속한 항목의 가운데
CenterScreen	2	전체 화면의 가운데
Windows Default	3	화면의 왼쪽 위 모서리 위치
참고

StartUpPosition 속성을 프로그래밍하여 설정하거나 속성 창에서 설정할 수 있습니다.


WhatsThisButton 속성

설명 단추가 UserForm 개체의 제목 표시줄에 나타나는지의 여부를 결정하는 Boolean 값을 반환합니다. 실행 모드에서는 읽기 전용입니다. 이 속성은 매킨토시에 적용되지 않습니다.

참고

WhatsThisButton 속성에 대한 설정은 다음과 같습니다.

설정	설명
True	설명 도움말 단추의 표시를 켭니다.
False	(기본값)설명 도움말 단추의 표시를 끕니다.
참고

WhatsThisHelp 속성이 True이어야 WhatsThisButton 속성이 True가 됩니다.


WhatsThisHelp 속성

Windows 95 도움말이나 주 도움말 창이 제공하는 팝업 창을 상황에 맞는 도움말이 사용할 것인지의 여부를 결정하는 Boolean 값을 반환합니다. 실행 모드에서는 읽기 전용입니다. 이 속성은 매킨토시에 적용되지 않습니다.

참고

WhatsThisHelp 속성에 대한 설정은 다음과 같습니다.

설정	설명
True	응용 프로그램은 설명 액세스 기술 중 하나를 사용해서 Windows 도움말을 시작하고 WhatsThisHelpID 속성이 식별하는 항목을 로드합니다.
False	(기본값) 응용 프로그램은 F1키를 사용하여 Windows 도움말을 시작하고 HelpContextID 속성이 식별하는 항목을 로드합니다.
참고

응용 프로그램에서 설명 도움말을 제공하는 두 가지 액세스 기술이 있습니다. WhatsThisHelp 속성을 True로 설정해야 다음 기술이 작동합니다.

•	WhatsThisButton 속성을 사용하는 UserForm의 제목 표시줄에 있는 설명 단추를 제공합니다. 마우스 포인터는 설명 상태(물음표가 있는 화살표)로 바뀝니다. 표시되는 항목은 사용자가 누른 컨트롤의 WhatsThisHelpID 속성에 따라 식별됩니다.

•	UserForm의 WhatsThisMode 메서드를 불러옵니다. 이렇게 하면 단추를 사용하지 않고 설명 단추를 누른 것과 같은 동작이 일어납니다. 예를 들어, 응용 프로그램의 메뉴 표시줄에서 메뉴에 있는 명령으로 이 메서드를 불러올 수 있습니다.


ShowModal 속성

UserForm을 모달 또는 모덜리스로 표시되도록 설정할 수 있습니다. 실행 모드에서는 읽기 전용입니다.

참고

ShowModal 속성에 대한 설정은 다음과 같습니다.

설정	설명
True	(기본값) UserForm이 모달입니다.
False	UserForm이 모덜리스입니다.
참고

UserForm이 모달일 때 사용자는 정보를 제공하거나 UserForm을 닫은 후에 응용 프로그램의 다른 부분을 사용해야 합니다.UserForm를 숨기거나 언로드해야 다음 코드가 실행됩니다. UserForm이 표시되면 응용 프로그램에 있는 다른 폼은 사용할 수 없지만 다른 응용 프로그램은 사용할 수 있습니다.

UserForm이 모덜리스일 때는 UserForm을 닫지 않고도 다른 폼이나 창을 볼 수 있습니다.

모덜리스 폼은 작업 표시줄에 나타나지 않으며 창 탭 순서에 포함되지 않습니다.

메모   Microsoft Office 97에서는 UserForm 모달만 표시되기 때문에 Microsoft Office 97에서ShowModal 속성을 가지고 있는 UserForm을 열면 런타임 오류가 발생합니다. Office 97에서는 ShowModal 속성이 무시되고 UserForm이 모달로 표시됩니다.


RightToLeft 속성

양방향 시스템에서 텍스트 표시 방향을 지시하고 표시 모양을 제어하는 Boolean 값을 반환합니다.

참고

RightToLeft 속성에 대한 설정은 다음과 같습니다.

설정	설명
True	컨트롤이 아랍어 Windows95와 히브리어 Windows95 같은 양방향 플랫폼에서 실행하며 텍스트는 오른쪽에서 왼쪽으로 표시됩니다. 입력란나 목록 상자의 왼쪽 가장자리에 세로 스크롤 막대를 표시하고, 입력란 오른쪽에 레이블을 표시하는 등 컨트롤의 동작을 수정해야합니다.
False	컨트롤이 영문 Windows95 등 양방향이 아닌 플랫폼에서 실행할 때와 똑같이 작동하며 텍스트는 왼쪽에서 오른쪽으로 표시됩니다. 컨테이너가 이러한 환경 속성을 구현하지 않으면 False가 기본값이 됩니다.
RightToLeft 속성은 UserForm에 포함된 컨트롤의 동작을 지시하는 Userform의 환경 정보를 가지고 있습니다. 이 속성은 양방향 시스템에서 텍스트 표시 방향을 지시하고 표시 모양을 제어하는 Boolean 값입니다. 기본값은 False입니다.


키워드를 찾을 수 없습니다

선택한 키워드를 Visual Basic 도움말에서 찾을 수 없습니다. 키워드의 맞춤법이 틀리거나, 너무 많거나 적은 텍스트를 선택했거나 잘못된 Visual Basic 키워드를 입력했습니다.

도움말에서 찾으려는 키워드가 참조할 수 없는 개체 라이브러리에 들어 있을 수도 있습니다. 코드에 사용된 모든 개체에 대해 해당 개체 라이브러리를 참조하도록 설정했는지 확인하십시오.

특정 키워드에 대한 도움말을 얻는 가장 쉬운 방법은 키워드 내의 한 지점을 삽입점으로 정한 후  F1키를 누르는 것입니다. 키워드를 따로 선택할 필요는 없습니다. 키워드의 일부나 두 단어 이상을 선택하는 경우에는 도움말에서 제대로 찾지 못합니다.

아래 예제와 같이 Value 키워드의 "a"와 "l" 사이에 삽입점을 놓고  F1키를 누르면 Value 속성 항목이 표시됩니다.

Worksheets(1).Range ("A2").value=3.14159

기본으로 제공된 도움말 색인을 사용하려면 도움말 메뉴에서 Microsoft Visual Basic 도움말 를 누르십시오.


Collection(개체 찾아보기)

Collection 모듈에는 Collection 개체에서 연산을 수행하는 데 사용하는 프로시저가 들어 있습니다. 이 상수들은 코드 내 어디에서든지 사용할 수 있습니다.

특정 프로시저에 대한 도움말을 보려면

1. 'Collection'의 구성원 목록에서 원하는 프로시저를 선택합니다.

1.  단추를 누릅니다.


ColorConstants(개체 찾아보기)

Color Constants 모듈에는 미리 정의된 색 상수가 들어 있습니다. 이 상수들은 코드 내 어디에서든지 사용할 수 있습니다.

특정 상수에 대한 도움말을 보려면

1. 'ColorConstants'의 구성원 목록에서 원하는 상수를 선택합니다.

2.  단추를 누릅니다.


Constants(개체 찾아보기)

Constants 모듈에는 여러 가지 형식의 상수가 들어 있습니다. 이 상수들은 코드 내 어디에서든지 사용할 수 있습니다.

특정 상수에 대한 도움말을 보려면

1. 'Constants'의 구성원 목록에서 원하는 상수를 선택합니다.

2.  단추를 누릅니다.


Conversion(개체 찾아보기)

Conversion 모듈에는 여러 가지 변환 연산을 수행하는 프로시저가 들어 있습니다. 이 상수들은 코드 내 어디에서든지 사용할 수 있습니다.

특정 프로시저에서 도움말을 보려면

1. 'Conversion'의 구성원 목록에서 원하는 프로시저를 선택합니다.

2.  단추를 누릅니다.

메모   Variant 변수를 사용할 때 데이터 형식 변환을 명시적으로 해주어야 할 필요는 없습니다.


DateTime(개체 찾아보기)

DateTime 모듈에는 날짜와 시간 작업에 사용하는 프로시저와 속성이 들어 있습니다. 이 상수들은 코드 내 어디에서든지 사용할 수 있습니다.

특정 프로시저나 속성에 대한 도움말을 보려면

1. 'DateTime'의 구성원 목록에서 원하는 프로시저를 선택합니다.

2.  단추를 누릅니다.


ErrObject(개체 찾아보기)

ErrObject 모듈에는 Err 개체를 사용해서 런타임 오류를 식별하고 처리하는 데 사용하는 속성과 프로시저가 들어 있습니다. 이 상수들은 코드 내 어디에서든지 사용할 수 있습니다.

특정 속성이나 프로시저에 대한 도움말을 보려면

1. 'ErrObject'의 구성원 목록에서 원하는 속성이나 프로시저를 선택합니다.

2.  단추를 누릅니다.


FileSystem(개체 찾아보기)

FileSystem 모듈에는 파일, 디렉토리 또는 폴더, 시스템 작업을 수행하는 데 사용하는 프로시저가 들어 있습니다. 이 상수들은 코드 내 어디에서든지 사용할 수 있습니다.

특정 프로시저에 대한 도움말을 보려면

1. 'FileSystem'의 구성원 목록에서 원하는 프로시저를 선택합니다.

2.  단추를 누릅니다.


Financial(개체 찾아보기)

Financial 모듈에는 회계 연산을 수행하는 데 사용하는 프로시저가 들어 있습니다. 이 상수들은 코드 내 어디에서든지 사용할 수 있습니다.

특정 프로시저에 대한 도움말을 보려면

1. 'Financial'의 구성원 목록에서 원하는 프로시저를 선택합니다.

2.  단추를 누릅니다.


Global(개체 찾아보기)

Global 모듈에는 UserForm 개체에서 연산을 수행하는 데 사용하는 프로시저와 속성이 들어 있습니다. 이 상수들은 코드 내 어디에서든지 사용할 수 있습니다.

특정 속성이나 프로시저에 대한 도움말을 보려면

1. 'Global'의 구성원 목록에서 원하는 프로시저를 선택합니다.

2.  단추를 누릅니다.


Information(개체 찾아보기)

Information 모듈에는 정보를 반환하거나 테스트하거나 확인하는 데 사용하는 프로시저가 들어 있습니다. 이 상수들은 코드 내 어디에서든지 사용할 수 있습니다.

특정 프로시저에 대한 도움말을 보려면

1. 'Information'의 구성원 목록에서 원하는 프로시저를 선택합니다.

2.  단추를 누릅니다.


Interaction(개체 찾아보기)

Interaction 모듈에는 개체, 응용 프로그램, 시스템과 상호 작용하는 데 사용하는 프로시저들이 들어 있습니다. 이 상수들은 코드 내 어디에서든지 사용할 수 있습니다.

특정 프로시저에서 도움말을 보려면

1. 'Interaction'의 구성원 목록에서 원하는 프로시저를 선택합니다.

2.  단추를 누릅니다.


KeycodeConstants(개체 찾아보기)

KeyCodeConstants 모듈에는 코드 내 어디에서든지 사용할 수 있는 미리 정의되어 있는 키코드 상수가 들어 있습니다.

특정 상수에 대한 도움말을 보려면

1. 'KeyCodeConstants'의 구성원 목록에서 원하는 상수를 선택합니다.

2.  단추를 누릅니다.


Math(개체 찾아보기)

Math 모듈에는 수학 연산을 수행하는 데 사용하는 프로시저가 들어 있습니다. 이 상수들은 코드 내 어디에서든지 사용할 수 있습니다.

특정 프로시저에 대한 도움말을 보려면

1. 'Math'의 구성원 목록에서 원하는 프로시저를 선택합니다.

2.  단추를 누릅니다.


String(개체 찾아보기)
Strings(개체 찾아보기)

Strings 모듈에는 문자열 연산을 수행하는 데 필요한 프로시저가 들어 있습니다. 이 상수들은 코드 내 어디에서든지 사용할 수 있습니다.

특정 프로시저에 대한 도움말을 보려면

1. 'Strings'의 구성원 목록에서 원하는 프로시저를 선택합니다.

2.  단추를 누릅니다.


SystemColorConstants(개체 찾아보기)

SystemColorConstants 모듈에는 GUI(그래픽 사용자 인터페이스)의 각 부분을 식별하는 상수들이 들어 있습니다. 이 상수들은 코드 내 어디에서든지 사용할 수 있습니다.

특정 상수에 대한 도움말을 보려면

1. 'SystemColorConstants'의 구성원 목록에서 원하는 상수를 선택합니다.

2.  단추를 누릅니다.


VbAppWinStyle(개체 찾아보기)

VbAppWinStyle 목록에는 Shell 함수가 응용 프로그램 창의 유형을 지정하는 데 사용하는 여러 가지 상수들이 들어 있습니다. 이 상수들은 코드 내 어디에서든지 사용할 수 있습니다.

특정 상수에 대한 도움말을 보려면

1. 'VbAppWinStyle'의 구성원 목록에서 원하는 상수를 선택합니다.

2.  단추를 누릅니다.


VbCalendar(개체 찾아보기)

VbCalendar 목록에는 Visual Basic이 사용하는 달력의 형식을 결정하는 데 사용하는 상수들이 들어 있습니다. 이 상수들은 코드 내 어디에서든지 사용할 수 있습니다.

특정 상수에 대한 도움말을 보려면

1. 'VbCalendar'의 구성원 목록에서 원하는 상수를 선택합니다.

2.  단추를 누릅니다.


VbCompareMethod(개체 찾아보기)

VbCompareMethod 목록에는 Instr 함수와 StrComp 함수를 사용할 때 문자열이 비교되는 방식을 결정하는 데 사용하는 상수들이 들어 있습니다. 이 상수들은 코드 내 어디에서든지 사용할 수 있습니다.

특정 상수에 대한 도움말을 보려면

1. 'VbCompareMethod'의 구성원 목록에서 원하는 상수를 선택합니다.

2.  단추를 누릅니다.


VbDayOfWeek(개체 찾아보기)

VbDayOfWeek 목록에는 DateDiff 함수, DatePart 함수, Weekday 함수를 사용할 때 주 중 특정한 날을 지정하는 데 사용하는 상수들이 들어 있습니다. 이 상수들은 코드 내 어디에서든지 사용할 수 있습니다.

특정 상수에 대한 도움말을 보려면

1. 'VbDayOfWeek'의 구성원 목록에서 원하는 상수를 선택합니다.

2.  단추를 누릅니다.


VbFileAttribute(개체 찾아보기)

VbFileAttribute 목록에는 Dir 함수, GetAttr 함수, SetAttr 함수에서 사용되는 파일 속성을 식별하는 데 사용하는 상수들이 들어 있습니다. 이 상수들은 코드 내 어디에서든지 사용할 수 있습니다.

특정 상수에 대한 도움말을 보려면

1. 'VbFileAttribute'의 구성원 목록에서 원하는 상수를 선택합니다.

2.  단추를 누릅니다.


VbFirstWeekOfYear(개체 찾아보기)

VbFirstWeekOfYear 목록에는 DateDiff 함수와 DatePart 함수를 사용할 때 연 중 첫 주를 지정하는 데 사용하는 상수들이 들어 있습니다. 이 상수들은 코드 내 어디에서든지 사용할 수 있습니다.

특정 상수에 대한 도움말을 보려면

1. 'VbFirstWeekOfYear'의 구성원 목록에서 원하는 상수를 선택합니다.

2.  단추를 누릅니다.


VbIMEStatus(개체 찾아보기)

극동 지역 버전에서만 사용 가능한 VbIMEStatus 목록에는 IMEStatus 함수를 사용할 때 IME(Input Method Editor)를 식별하는 데 사용하는 상수들이 들어 있습니다. 이 상수들은 코드 내 어디에서든지 사용할 수 있습니다.

특정 상수에 대한 도움말을 보려면

1. 'VbIMEStatus'의 구성원 목록에서 원하는 상수를 선택합니다.

2.  단추를 누릅니다.


VbMsgBoxResult(개체 찾아보기)

VbMsgBoxResult 목록에는 MsgBox 함수를 사용해서 메시지 상자에서 어떤 단추를 눌렀는지 식별하는 데 사용하는 상수들이 들어 있습니다. 이 상수들은 코드 내 어디에서든지 사용할 수 있습니다.

특정 상수에 대한 도움말을 보려면

1. 'VbMsgBoxResult'의 구성원 목록에서 원하는 상수를 선택합니다.

2.  단추를 누릅니다.


VbMsgBoxStyle(개체 찾아보기)

VbMsgBoxStyle 목록에는 MsgBox 함수를 사용해서 그 위에 기호와 단추가 함께 표시되는 메시지 상자의 동작을 지정하는 데 사용하는 상수가 들어 있습니다. 이 상수들은 코드 내 어디에서든지 사용할 수 있습니다.

특정 상수에 대한 도움말을 보려면

1. 'VbMsgBoxStyle'의 구성원 목록에서 원하는 상수를 선택합니다.

2.  단추를 누릅니다.


VbQueryClose(개체 찾아보기)

VbQueryClose 목록에는 QueryClose 이벤트의 발생 원인을 알아내는 데 사용하는 상수들이 들어 있습니다. 이 상수들은 코드 내 어디에서든지 사용할 수 있습니다.

특정 상수에 대한 도움말을 보려면

1. 'VbQueryClose'의 구성원 목록에서 원하는 상수를 선택합니다.

2.  단추를 누릅니다.


VbStrConv(개체 찾아보기)

VbStrConv 목록에는 StrConv 함수가 수행할 문자열 변환 형식을 식별하는 데 사용하는 상수들이 들어 있습니다. 이 상수들은 코드 내 어디에서든지 사용할 수 있습니다.

특정 상수에 대한 도움말을 보려면

1. 'VbStrConv'의 구성원 목록에서 원하는 상수를 선택합니다.

2.  단추를 누릅니다.


VbVarType(개체 찾아보기)

VbVarType 목록에는 Variant에 포함될 수 있는 여러 가지 데이터의 형식을 식별하는 데 사용하는 상수들이 들어 있습니다. 이 상수들은 VarType 함수의 반환값과 일치하고 코드 내 어디에서든지 사용할 수 있습니다.

특정 상수에 대한 도움말을 보려면

1. 'VbVarType'의 구성원 목록에서 원하는 상수를 선택합니다.

2.  단추를 누릅니다.


VbTriState(개체 찾아보기)

VbTriState 목록에는 가능한 세 상태 중 하나를 식별하는 데 사용하는 상수들이 정의되어 있습니다.

특정 상수에 대한 도움말을 보려면

1. 'VbTriState'의 구성원 목록에서 원하는 상수를 선택합니다.

2.  단추를 누릅니다.


VbDateTimeFormat(개체 찾아보기)

VbDateTimeFormat 목록에는 날짜 및 시간의 형식 지정 방법을 식별하는 상수들이 정의되어 있습니다.

특정 상수에 대한 도움말을 보려면

1. 'VbDateTimeFormat'의 구성원 목록에서 원하는 상수를 선택합니다.

2.  단추를 누릅니다.


VbCallType(개체 찾아보기)

VbCallType 목록에는 CallByName 함수에 사용되는 호출 형식을 식별하는 데 사용하는 상수가 정의되어 있습니다.

특정 상수에 대한 도움말을 보려면

1. 'VbCallType'의 구성원 목록에서 원하는 상수를 선택합니다.

2.  단추를 누릅니다.


FormShowConstants(개체 찾아보기)

FormShowConstants 모듈에는 미리 정의된 UserForm 상수들이 들어 있습니다. 이 상수들은 코드 내 어디에서든지 사용할 수 있습니다.

특정 상수에 대한 도움말을 보려면

1. 'FormShowConstants'의 구성원 목록에서 원하는 상수를 선택합니다.

2.  단추를 누릅니다.


Collection 개체 예제

아래 예제에서는 MyClasses라는 Collection 개체를 만들고, 사용자가 컬렉션에 개체를 추가할 수 있는 대화 상자를 만듭니다. 이 예제가 작동하는 방법을 알아보려면 삽입 메뉴에서 클래스 모듈 명령을 선택하고, Class1 모듈 수준(Public InstanceName 입력)에서 각 인스턴스의 이름을 보존하기 위한 InstanceName이라는 공용 변수를 선언합니다. 기본 이름은 Class1로 남겨 둡니다. 다른 모듈의 일반 구역으로 아래 코드를 복사하여 붙여넣고, 다른 프로시저에서 ClassNamer 문과 함께 시작합니다. 이 예제는 클래스를 지원하는 호스트 프로그램에서만 동작합니다.

Sub ClassNamer()

Dim MyClasses As New Collection	' Collection 개체를 작성합니다.

Dim Num	' 키를 개별화하는 카운터

Dim Msg As String	' 프롬프트 문자열을 유지하기 위한 변수

Dim TheName, MyObject, NameList	' 정보를 유지하기 위한 Variant

Do

Dim Inst As New Class1	' Class1의 새 인스턴스를 작성합니다.

Num = Num + 1	' Num을 증가시킨 다음 이름을 가져옵니다.

Msg = "이 개체의 이름을 입력하십시오." & Chr(13) _

 & "컬렉션에서 이름을 보려면 취소를 누르십시오."

TheName = InputBox(Msg, "컬렉션 항목 이름을 입력하십시오. ")

Inst.InstanceName = TheName	' 개체 인스턴스에 이름을 넣습니다.

' 사용자가 이름을 입력하면 이름을 컬렉션에 추가합니다.

If Inst.InstanceName <> "" Then

' 명명된 개체를 컬렉션에 추가합니다.

MyClasses.Add item := Inst, key := CStr(Num)

End If

' 현재 참조를 다음 것에 대한 참조에서 지웁니다.

Set Inst = Nothing

Loop Until TheName = ""

For Each MyObject In MyClasses	' 이름 목록을 작성합니다.

NameList = NameList & MyObject.InstanceName & Chr(13)

Next MyObject

' 메시지 상자에서 이름 목록을 표시합니다.

MsgBox NameList, , "MyClasses 컬렉션에서의 인스턴스 이름"

For Num = 1 To MyClasses.Count	' 컬렉션에서 이름을 제거합니다.

MyClasses.Remove 1	' 컬렉션이 자동으로 다시 인덱스 처리된 후

' 반복할 때마다 첫째

Next	' 구성원을 제거합니다.

End Sub


Err 개체 예제

아래 예제에서는 오류 메시지 대화 상자를 구성하면서 Err 개체 속성을 사용합니다. Raise 메서드와 함께 Visual Basic 오류를 발생시킬 때 Clear 메서드를 사용하면 Visual Basic의 기본값은 Err 개체 속성이 됩니다.

Dim Msg

' 오류가 발생하면 오류 메시지를 작성합니다.

On Error Resume Next	' 오류 처리를 연기합니다.

Err.Clear

Err.Raise 6	' "오버플로" 오류를 생성합니다.

' 오류를 확인한 다음 메시지를 보여줍니다.

If Err.Number <> 0 Then

Msg = "오류 # " & Str(Err.Number) & "이(가) " & Err.Source _

& "에 의해 생성되었습니다." _

& Chr(13) & Err.Description

MsgBox Msg, , "오류", Err.Helpfile, Err.HelpContext

End If


Collection 개체

Collection 개체는 단위로 참조할 수 있는 정렬된 항목 집합입니다.

참고

Collection 개체는 단일 개체로 관련된 항목 그룹을 참조할 수 있는 편리한 방법을 제공합니다. 컬렉션 내의 항목 또는 구성원은 컬렉션 내에 자신들이 존재하는지에 대한 관련성만을 요구합니다. 컬렉션의 구성원들이 같은 데이터 형식을 공유할 필요는 없습니다.

컬렉션은 다른 개체가 만들어진 것과 같은 방법으로 만들 수 있습니다. 예를 들면 다음과 같습니다.

Dim X As New Collection

일단 컬렉션이 만들어지면 구성원들은 Add 메서드를 사용해서 추가할 수 있고, Remove 메서드를 사용해서 삭제할 수 있습니다. 전체 컬렉션이 For Each...Next 문을 사용해서 반복되는 동안 특정한 구성원은 Item 메서드를 사용해서 컬렉션에서 반환할 수 있습니다.


Debug 개체

Debug 개체는 실행 모드에서 직접 실행 창에 출력을 보냅니다.


Err 개체

런타임 오류에 대한 정보가 들어 있습니다.

참고

Err 개체의 속성은 오류 발생자(Visual Basic, 개체, 또는 프로그래머)가 설정합니다.

Err 개체의 기본 속성은 Number입니다. 기본 속성은 Err 이라는 개체 이름으로 나타낼 수 있기 때문에 Err 함수나 Err 문으로 작성된 이전 코드는 수정할 필요가 없습니다.

런타임 오류가 발생할 때 Err 개체의 속성은 오류를 처리하는 데 사용할 수 있는 정보와 오류를 고유하게 식별하는 정보로 가득 채워집니다. 코드에서 런타임 오류를 생성하려면 Raise 메서드를 사용하십시오.

오류 처리 루틴 내에서 Err 개체의 속성은 Exit Sub, Exit Function, Exit Property, 또는Resume Next 문 다음에 0이나 길이가 0인 문자열("")로 다시 설정됩니다. 오류 처리 루틴 외부에서 Resume 문을 사용하면 Err 개체의 속성을 다시 설정할 수 없습니다. Clear 메서드는 Err을 명시적으로 재설정하기 위해 사용할 수 있습니다.

Error 문보다는 Raise 메서드를 사용하여 시스템 오류와 클래스 모듈에 대한 런타임 오류를 발생시키십시오. 다른 코드에서 Raise 메서드를 사용하면 반환하려는 정보의 풍부함에 따라 달라집니다.

Err 개체는 전역 범위를 가진 내부 개체입니다. 코드 내에 Err 개체에 대한 인스턴스를 만들 필요는 없습니다.


^ 연산자 예제

아래 예제에서는 ^ 연산자를 사용하여 숫자를 지수로 거듭제곱합니다.

Dim MyValue

MyValue = 2 ^ 2	' 4를 반환합니다.

MyValue = 3 ^ 3 ^ 3	' 19683을 반환합니다.

MyValue = (-5) ^ 3	' -125를 반환합니다.


+ 연산자 예제

아래 예제에서는 + 연산자를 사용하여 숫자의 합계를 구합니다. + 연산자를 사용해서 문자열도 연결할 수 있습니다. 하지만 모호함을 피하려면 . + 연산자 대신 & 연산자를 사용해야 합니다. + 연산자로 만든 식에 문자열과 숫자가 모두 있으면 산술적 계산 결과가 할당됩니다. 문자열로만 식이 구성되면 문자열이 연결됩니다.

Dim MyNumber, Var1, Var2

MyNumber = 2 + 2	' 4를 반환합니다.

MyNumber = 4257.04 + 98112	' 102369.04를 반환합니다.

Var1 = "34": Var2 = 6	' 혼합 변수를 초기화합니다.

MyNumber = Var1 + Var2	' 40을 반환합니다.

Var1 = "34": Var2 = "6"	' 변수를 문자열로 초기화합니다.

MyNumber = Var1 + Var2	' "346"을 반환합니다. 문자열을 연결합니다.


- 연산자 예제

아래 예제에서는 - 연산자를 사용하여 두 숫자의 차를 구합니다.

Dim MyResult

MyResult = 4 - 2	' 2를 반환합니다.

MyResult = 459.35 - 334.90	' 124.45를 반환합니다.


* 연산자 예제

아래 예제에서는 * 연산자를 사용하여 두 숫자의 곱을 구합니다.

Dim MyValue

MyValue = 2 * 2	' 4를 반환합니다.

MyValue = 459.35 * 334.90 	' 153836.315를 반환합니다.


/ 연산자 예제

아래 예제에서는 / 연산자를 사용하여 부동 소수점을 나눕니다.

Dim MyValue

MyValue = 10 / 4	' 2.5를 반환합니다.

MyValue = 10 / 3	' 3.333333을 반환합니다.


\ 연산자 예제

아래 예제에서는 \ 연산자를 사용하여 정수를 나눕니다.

Dim MyValue

MyValue = 11 \ 4	' 2를 반환합니다.

MyValue = 9 \ 	' 3을 반환합니다.

MyValue = 100 \ 3	' 33을 반환합니다.


Mod 연산자 예제

아래 예제에서는 Mod 연산자를 사용하여 두 숫자를 나눈 나머지 값만 구합니다. 둘 중 한 숫자가 부동 소수점 숫자이면 먼저 그 수를 소수점 첫째 자리에서 반올림하여 정수로 만듭니다.

Dim MyResult

MyResult = 10 Mod 5	' 0을 반환합니다.

MyResult = 10 Mod 3	' 1을 반환합니다.

MyResult = 12 Mod 4.3	' 0을 반환합니다.

MyResult = 12.6 Mod 5	' 3을 반환합니다.


& 연산자 예제

아래 예제에서는 & 연산자를 사용하여 문자열을 연결합니다.

Dim MyStr

MyStr = "Hello" & " World"	' "Hello World"를 반환합니다.

MyStr = "Check " & 123 & " Check"	' "Check 123 Check"를 반환합니다.


비교 연산자 예제

아래 예제에서는 여러 비교 연산자를 사용하여 식을 비교하는 방법을 보여주고 있습니다.

Dim MyResult, Var1, Var2

MyResult = (45 < 35)	' False를 반환합니다.

MyResult = (45 = 45)	' True를 반환합니다.

MyResult = (4 <> 3)	' True를 반환합니다.

MyResult = ("5" > "4")	' True를 반환합니다.

Var1 = "5": Var2 = 4	' 변수를 초기화합니다.

MyResult = (Var1 > Var2)	' True를 반환합니다.

Var1 = 5: Var2 = Empty

MyResult = (Var1 > Var2)	' True를 반환합니다.

Var1 = 0: Var2 = Empty

MyResult = (Var1 = Var2)	' True를 반환합니다.


And 연산자 예제

아래 예제에서는 And 연산자를 사용하여 두 식의 논리곱을 구합니다.

Dim A, B, C, D, MyCheck

A = 10: B = 8: C = 6: D = Null	' 변수를 초기화합니다.

MyCheck = A > B And B > C	' True를 반환합니다.

MyCheck = B > A And B > C	' False를 반환합니다.

MyCheck = A > B And B > D	' Null을 반환합니다.

MyCheck = A And B	' 8(비트 비교)을 반환합니다.


Eqv 연산자 예제

아래 예제에서는 Eqv 연산자를 사용하여 두 식이 논리적으로 동등한지를 구합니다.

Dim A, B, C, D, MyCheck

A = 10: B = 8: C = 6: D = Null	' 변수를 초기화합니다.

MyCheck = A > B Eqv B > C	' True를 반환합니다.

MyCheck = B > A Eqv B > C	' False를 반환합니다.

MyCheck = A > B Eqv B > D	' Null을 반환합니다.

MyCheck = A Eqv B	' -3(비트 비교)을 반환합니다.


Imp 연산자 예제

아래 예제에서는 Imp 연산자를 사용하여 두 식의 논리적 연관성을 구합니다.

Dim A, B, C, D, MyCheck

A = 10: B = 8: C = 6: D = Null	' 변수를 초기화합니다.

MyCheck = A > B Imp B > C	' True를 반환합니다.

MyCheck = A > B Imp C > B	' False를 반환합니다.

MyCheck = B > A Imp C > B	' True를 반환합니다.

MyCheck = B > A Imp C > D	' True를 반환합니다.

MyCheck = C > D Imp B > A	' Null을 반환합니다.

MyCheck = B Imp A	' -1(비트 비교)을 반환합니다.


Not 연산자 예제

아래 예제에서는 Not 연산자를 사용하여 식의 논리적 부정을 구합니다.

Dim A, B, C, D, MyCheck

A = 10: B = 8: C = 6: D = Null	' 변수를 초기화합니다.

MyCheck = Not(A > B)	' False를 반환합니다.

MyCheck = Not(B > A)	' True를 반환합니다.

MyCheck = Not(C > D)	' Null을 반환합니다.

MyCheck = Not A	' -11(비트 비교)을 반환합니다.


Or 연산자 예제

아래 예제에서는 Or 연산자를 사용하여 두 식의 논리합을 구합니다.

Dim A, B, C, D, MyCheck

A = 10: B = 8: C = 6: D = Null	' 변수를 초기화합니다.

MyCheck = A > B Or B > C	' True를 반환합니다.

MyCheck = B > A Or B > C	' True를 반환합니다.

MyCheck = A > B Or B > D	' True를 반환합니다.

MyCheck = B > D Or B > A	' Null을 반환합니다.

MyCheck = A Or B	' 10(비트 비교)을 반환합니다.


Xor 연산자 예제

아래 예제에서는 Xor 연산자를 사용하여 두 식의 배타적 논리합을 구합니다.

Dim A, B, C, D, MyCheck

A = 10: B = 8: C = 6: D = Null	' 변수를 초기화합니다.

MyCheck = A > B Xor B > C	' False를 반환합니다.

MyCheck = B > A Xor B > C	' True를 반환합니다.

MyCheck = B > A Xor C > B	' False를 반환합니다.

MyCheck = B > D Xor A > B	' Null을 반환합니다.

MyCheck = A Xor B	' 2(비트 비교)를 반환합니다.


Like 연산자 예제

아래 예제에서는 Like 연산자를 사용하여 문자열의 패턴을 비교합니다.

Dim MyCheck

MyCheck = "aBBBa" Like "a*a"	' True를 반환합니다.

MyCheck = "F" Like "[A-Z]"	' True를 반환합니다.

MyCheck = "F" Like "[!A-Z]"	' False를 반환합니다.

MyCheck = "a2a" Like "a#a"	' True를 반환합니다.

MyCheck = "aM5b" Like "a[L-P]#[!c-e]"	' True를 반환합니다.

MyCheck = "BAT123khg" Like "B?T*"	' True를 반환합니다.

MyCheck = "CAT123khg" Like "B?T*"	' False를 반환합니다.


Is 연산자 예제

아래 예제에서는 Is 연산자를 사용하여 두 개의 개체 참조를 비교합니다. 개체 변수 이름은 일반적인 이름이며, 예를 들기 위해서만 사용합니다.

Dim MyObject, YourObject, ThisObject, OtherObject, ThatObject, MyCheck

Set YourObject = MyObject	' 개체 참조를 지정합니다.

Set ThisObject = MyObject

Set ThatObject = OtherObject

MyCheck = YourObject Is ThisObject	' True를 반환합니다.

MyCheck = ThatObject Is ThisObject	' False를 반환합니다.

' MyObject를 가정합니다. <> OtherObject

MyCheck = MyObject Is ThatObject	' False를 반환합니다.


연산자 요약

연산자	설명
산술 연산자	수학적 계산을 수행하는 연산자
비교 연산자	비교를 수행하는 연산자
문자열 연결 연산자	문자열을 조합하는 연산자
논리 연산자	논리적인 작업을 수행하는 연산자


연산자 우선 순위

하나의 식에 여러 개의 연산자가 사용될 때, 각 부분은 연산자 우선 순위라고 하는 미리 지정된 순서에 따라 값을 구하게 됩니다.

식에 두 범주 이상의 연산자가 있을 때 산술 연산자가 제일 먼저 계산되고, 비교 연산자가 그 다음에 그리고 논리 연산자가 마지막으로 계산됩니다. 비교 연산자들은 모두 우선 순위가 같습니다. 즉, 이 비교 연산자들은 나타나는 순서대로 왼쪽에서 오른쪽으로 계산됩니다. 산술 연산자와 논리 연산자들은 다음의 우선 순위 순서대로 계산됩니다.

산술	비교	논리
지수(^)	같다(=)	Not
부정(�)	같지 않다(<>)	And
곱셈, 나눗셈(*, /)	보다 작다(<)	Or
정수 나눗셈(\)	보다 크다(>)	Xor
나머지 연산(Mod)	작거나 같다(<=)	Eqv
덧셈, 뺄셈(+, �)	크거나 같다(>=)	Imp
문자열 연결(&)	Like Is
한 식에 곱셈과 나눗셈이 같이 있을 경우 각 연산은 왼쪽에서 오른쪽으로 나타나는 순서대로 계산됩니다. 덧셈과 뺄셈이 한 식에 있을 때도 각 연산은 왼쪽에서 오른쪽으로 나타나는 순서대로 계산됩니다. 괄호를 사용하면 연산자 우선 순위를 무시하고 괄호 밖의 다른 연산들보다 괄호 안의 연산을 먼저 수행합니다. 그러나 같은 괄호 내에서는 연산자 우선 순위가 유지됩니다.

문자열 연결 연산자(&)는 산술 연산자가 아니지만 우선 순위에 있어서 모든 산술 연산자보다 나중에 계산되고 모든 비교 연산자보다는 먼저 계산됩니다.

Like 연산자는 모든 비교 연산자와 우선 순위가 같지만 실제로는 패턴 일치 연산자입니다.

Is 연산자는 개체 참조 상황을 비교하는 연산자입니다. 이 연산자는 개체나 개체값을 비교하는 게 아니라 두 개체가 같은 개체를 참조하는지만 검사하는 연산자입니다.


산술 연산자

^ 연산자

* 연산자

/ 연산자

\ 연산자

Mod 연산자

+ 연산자

- 연산자


문자열 연결 연산자

& 연산자

+ 연산자


논리 연산자

And 연산자

Eqv 연산자

Imp 연산자

Not 연산자

Or 연산자

Xor 연산자


^ 연산자

어떤 수의 지수승을 구합니다.

구문

result = number^exponent

^ 연산자 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
result	필수적인 요소. 숫자 변수
number	필수적인 요소. 수식
exponent	필수적인 요소. 수식
참고

exponent가 정수일 때만 Number는 음수가 될 수 있습니다. 한 식에서 여러 개의 지수식이 나타날 경우에 ^ 연산은 왼쪽에서 오른쪽으로 나타나는 순서대로 계산됩니다.

보통 result의 데이터 형식은 Double 또는 Double Variant입니다. 그러나 number나 exponent가 Null 식이면 result도 Null입니다.


+ 연산자

두 수를 더합니다.

구문

result = expression1+expression2

+ 연산자 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
result	필수적인 요소. 숫자 변수
expression1	필수적인 요소. 식
expression2	필수적인 요소. 식
참고

+ 연산을 사용할 때 덧셈이 일어날지 문자열 연결이 일어날지 결정할 수 없을 것입니다. 이런 혼란을 없애고 코드를 명확하게 만들기 위해 & 연산자를 사용합니다.

두 식 중에서 한 식이라도 Variant가 아니면, 아래 규칙이 적용됩니다.

조건	결과
두 식이 모두 숫자 데이터 형식 (Byte, Boolean, Integer, Long, Single, Double, Date, Currency, Decimal)일 경우	더합니다.
두 식이 모두 문자열일 경우	연결합니다.
한 식이 숫자 데이터 형식이고 다른 데이터 형식이 Null이 아닌 데이터 형식의 Variant일 경우	더합니다.
한 식이 문자열이고 다른 데이터 형식이 Null이 아닌 Variant일 경우	연결합니다.
한 식이 Empty Variant일 경우	남아 있는 식을 바꾸지 않고 result로 반환합니다.
한 식이 숫자 데이터 형식이고 다른 식은 문자열일 경우	'형식이 일치하지 않습니다.'라는 오류가 발생합니다.
어느 한 식이 Null일 경우	result는 Null입니다.
두 식이 모두 Variant 식일 경우 아래 규칙을 따릅니다.

조건	결과
두 Variant 식이 모두 숫자일 경우	더합니다.
두 Variant 식이 모두 문자열일 경우	연결합니다.
한 Variant 식이 숫자이고, 다른 식이 문자열일 경우	더합니다.
숫자 데이터 형식으로 구성된 식과 관련된 단순한 덧셈의 경우에 result의 데이터 형식은 대개 가장 정밀한 식의 데이터 형식과 같습니다. 정밀도 순서는 가장 정밀하지 않은 것부터 차례로 Byte, Integer, Long, Single, Double, Currency, 그리고 Decimal입니다. 아래는 이 순서의 예외입니다.

조건	result
Single과 Long을 더할 경우	Double입니다.
Result의 데이터 형식이 정해진 범위를 벗어난 Long, Single, Date Variant일 경우	Double Variant로 변환합니다.
result의 데이터 형식이 정해진 범위를 벗어난 Byte Variant일 경우	Integer Variant로 변환합니다.
result의 데이터 형식이 정해진 범위를 벗어난 Integer Variant일 경우	Long Variant로 변환합니다.
Date를 어떤 데이터 형식에 더할 경우	Date입니다.
한 식 또는 두 식이 Null 식이면 result는 Null입니다. 그리고 두 식이 모두 Empty이면 result는 Integer입니다. 그러나 한 식만 Empty이면 나머지 식이 바뀌지 않고 result 값이 됩니다.

메모   덧셈과 뺄셈에 사용된 정밀도 순서는 곱셈에서 사용되는 정밀도 순서와 똑같지 않습니다.


- 연산자

두 수의 차를 구하거나 어떤 수식의 음수를 구합니다.

구문 1

result = number1 � number2

구문 2

�number

� 연산자 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
result	필수적인 요소. 숫자 변수
number	필수적인 요소. 수식
number1	필수적인 요소. 수식
number2	필수적인 요소. 수식
참고

구문 1에서 � 연산자는 두 수의 차이를 구하는 산술적인 뺄셈 연산에 사용됩니다. 구문 2에서 � 연산자는 식의 값의 음수 값을 나타내는 데 사용됩니다.

Result의 데이터 형식은 대개 가장 정밀한 식의 데이터 형식과 같습니다. 정밀도 순서는 가장 정밀하지 않은 것부터 Byte, Integer, Long, Single, Double, Currency, Decimal입니다. 아래는 이 순서의 예외입니다.

조건	result
Single과 Long 사이의 뺄셈일 경우	Double형으로 변환합니다.
result의 데이터 형식이 정해진 범위를 벗어난 Long, Single, Date Variant일 경우	Double Variant로 변환합니다.
Result의 데이터 형식이 정해진 범위를 벗어난 Byte Variant일 경우	Integer Variant로 변환합니다.
result의 데이터 형식이 정해진 범위를 벗어난 Integer Variant일 경우	Long Variant로 변환합니다.
Date와 다른 데이터 형식 사이의 뺄셈일 경우	Date입니다.
두 Date 식 사이의 뺄셈일 경우	Double입니다.
한 식 또는 두 식이 Null 식이면 result는 Null입니다. 그리고 한 식이 Empty이면 0으로 간주됩니다.

메모   덧셈과 뺄셈에서 사용되는 정밀도 순서는 곱셈에서의 정밀도 순서와 똑같지 않습니다.


* 연산자

두 수를 곱합니다.

구문

result = number1*number2

* 연산자 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
result	필수적인 요소. 숫자 변수
number1	필수적인 요소. 수식
number2	필수적인 요소. 수식
참고

result의 데이터 형식은 가장 정밀한 식의 데이터 형식과 같습니다. 정밀도 순서는 가장 정밀하지 않은 것부터 Byte, Integer, Long, Single, Currency, Double, Decimal입니다. 아래는 이 순서의 예외입니다.

조건	result
Single과 Long 사이의 곱셈일 경우	Double형으로 변환합니다.
result의 데이터 형식이 정해진 범위를 벗어난 Long, Single, Date Variant일 경우	Double Variant로 변환합니다.
result의 데이터 형식이 정해진 범위를 벗어난 Byte Variant일 경우	Integer Variant로 변환합니다.
result의 데이터 형식이 정해진 범위를 벗어난 Integer Variant일 경우	Long Variant로 변환합니다.
한 식 또는 양 식이 Null 식이면 result는 Null입니다. 그리고 한 식이 Empty이면 0으로 간주됩니다.

메모   곱셈에서의 정밀도 순서는 덧셈과 뺄셈의 정밀도 순서와 똑같지 않습니다.


/ 연산자

두 수를 나누고 부동 소수점을 반환합니다.

구문

result = number1/number2

/ 연산자 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
result	필수적인 요소. 숫자 변수
number1	필수적인 요소. 수식
number2	필수적인 요소. 수식
참고

result 의 데이터 형식은 대개 Double형이거나 Double Variant입니다. 아래는 이 규칙의 예외입니다.

조건	result
두 식이 Byte, Integer, Single 식일 경우	정해진 범위를 벗어나지 않는다면 Single이지만 정해진 범위를 벗어나면 오류가 발생합니다.
두 식이 Byte, Integer, Single Variant일 경우	정해진 범위를 벗어나지 않는다면 Single Variant이지만 정해진 범위를 벗어나면 result는 Double Variant입니다.
Decimal과 다른 데이터 형식 사이의 나눗셈일 경우	Decimal 데이터 형식입니다.
한 식 또는 두 식이 Null식이면 result는 Null입니다. 그리고 Empty인 모든 식은 0으로 간주됩니다.


\ 연산자

두 수를 나누고 정수 몫을 반환합니다.

구문

result = number1\number2

\ 연산자 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
result	필수적인 요소. 숫자 변수
number1	필수적인 요소. 수식
number2	필수적인 요소. 수식
참고

나눗셈을 수행하기 전에 수식들은 Byte, Integer, Long 식으로 반올림됩니다.

대개 result 값이 정수인지 아닌지에 관계없이 result의 데이터 형식은 Byte, Byte Variant, Integer, Integer Variant, Long, Long Variant입니다. 모든 소수점 아래 부분은 없어집니다. 그러나 식이 Null이면 result는 Null입니다. 그리고 Empty인 모든 식은 0으로 간주됩니다.


Mod 연산자

두 수를 나누고 그 나머지를 반환합니다.

구문

result = number1 Mod number2

Mod 연산자 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
result	필수적인 요소. 숫자 변수
number1	필수적인 요소. 수식
number2	필수적인 요소. 수식
참고

나머지 연산자는 number1을 number2로 나누고(부동 소수점 수를 정수로 반올림), 나머지만을 result에 반환합니다. 예를 들어 아래 식에서 A(result)의 값은 5입니다.

A = 19 Mod 6.7

대개 result 값이 정수인지 아닌지에 관계 없이 result의 데이터 형식은 Byte, Byte Variant, Integer, Integer Variant, Long, Long Variant입니다. 모든 소수점 아래 부분은 없어집니다. 그러나 어떤 식이 Null이면 result는 Null입니다. 그리고 식이 Empty이면 0으로 간주됩니다.


& 연산자

두 식을 강제로 연결합니다.

구문

result = expression1 & expression2

& 연산자 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
result	필수적인 요소. String, Variant, 변수
expression1	필수적인 요소. 식
expression2	필수적인 요소. 식
참고

expression이 문자열이 아닐 경우 String Variant로 변환됩니다. 두 식이 문자식일 경우 result의 데이터 형식은 String이고 그렇지 않을 경우에 result는 String Variant입니다. 두 식이 모두 Null이면 result는 Null이지만, 한 식만이 Null이면 다른 식과 연결될 때 그 식은 길이가 0인 문자열("")로 간주됩니다. 식이 Empty인 모든 식은 길이가 0인 문자열로 간주됩니다.


비교 연산자

식을 비교합니다.

구문

result = expression1 comparisonoperator expression2

result = object1 Is object2

result = string Like pattern

비교 연산자 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
result	필수적인 요소. 숫자 변수
expression	필수적인 요소. 식
comparisonoperator	필수적인 요소. 비교 연산자
object	필수적인 요소. 개체 이름
string	필수적인 요소. 문자식
pattern	필수적인 요소. 문자식이나 문자의 범위
참고

아래 표에는 비교 연산자 목록과 result가 True, False, Null값을 가지는 조건들이 나타나 있습니다.

연산자	True인 경우	False인 경우	Null인 경우
< (보다 작다)	expression1 < expression2	expression1 >= expression2	expression1 or expression2 = Null
<= (작거나 같다)	expression1 <= expression2	expression1 > expression2	expression1 or expression2 = Null
> (보다 크다)	expression1 > expression2	expression1 <= expression2	expression1 or expression2 = Null
>= (크거나 같다)	expression1 >= expression2	expression1 < expression2	expression1 or expression2 = Null
= (같다)	expression1 = expression2	expression1 <> expression2	expression1 or expression2 = Null
<> (같지 않다)	expression1 <> expression2	expression1 = expression2	expression1 or expression2 = Null
메모   Is와 Like 연산자는 이 표의 내용과 다른 보다 명확하게 비교하는 기능을 지니고 있습니다.

두 식을 비교할 때 식이 숫자인지 문자열인지 결정하지 않아도 됩니다. 아래 표는 각 식이 Variant가 아닐 경우에 어떻게 비교가 일어나는지 보여 줍니다.

조건	결과
두 식이 숫자 데이터 형식 (Byte, Boolean, Integer, Long, Single, Double, Date, Currency,  Decimal)일 경우	숫자를 비교합니다.
두 식이 문자열일 경우	문자열 비교를 수행합니다.
한 식이 숫자 데이터 형식이고 다른 식이 수의 Variant일 경우	숫자를 비교합니다.
한 식이 숫자 데이터 형식이고 다른 식이 숫자로 변환되지 않는 문자열 Variant일 경우	'형식이 일치하지않습니다.'라는 오류가 발생합니다.
한 식이 String이고 다른 식이 Null이 아닌 데이터 형식의 Variant일 경우	문자열 비교를 수행합니다.
한 식이 Empty이고 다른 식이 숫자 데이터 형식일 경우	Empty 식을 0으로 놓고 숫자를 비교합니다.
한 식이 Empty이고 다른 식이 String일 경우	Empty 식을 길이가 0인 문자열("")로 놓고 문자열을 비교합니다.
expression1과 expression2이 모두 Variant 식일 경우 그의 하부 형식에 의해 비교가 수행됩니다. 아래 표는 Variant의 하부 형식에 따라 식이 어떻게 비교되고, 그 비교 결과가 어떻게 되는지 보여 줍니다.

조건	결과
두 Variant 식이 숫자일 경우	숫자를 비교합니다.
두 Variant 식이 문자열일 경우	문자열을 비교합니다.
한 Variant 식이 숫자이고 다른 식은 문자열일 경우	수식이 문자식보다 작습니다.
한 Variant 식이 Empty이고 다른 식이 숫자일 경우	Empty 식을 0으로 생각하고 숫자를 비교합니다.
한 Variant 식이 Empty이고 다른 식이 문자열일 경우	Empty 식을 길이가 0인 문자열("")로 놓고 문자열을 비교합니다.
두 Variant 식이 Empty일 경우	두 식은 같습니다.
Single과 Double을 비교할 때 Double은 Single로 반올림됩니다.

Currency와 Single 또는 Double을 비교할 경우 Single과 Double은 Currency로 변환됩니다. 마찬가지로 Decimal과 Single 또는 Double을 비교하면 Single과 Double은 Decimal로 변환됩니다. Currency의 경우 .0001보다 작은 소수점 값은 없어지고 Decimal의 경우 1E-28보다 작은 값은 없어지거나 초과 오류가 발생합니다. 이렇게 소수점 값이 없어지는 경우 때문에 실제로 다른 값이 같게 나타날 수도 있습니다.


And 연산자

두 식의 논리곱을 구합니다.

구문

result = expression1 And expression2

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

구성 요소	표현
result	필수적인 요소. 숫자 변수
expression1	필수적인 요소. 식
expression2	필수적인 요소. 식
참고

두 식이 모두 True이면 result는 True이고 한 식이라도 False이면 result는 False입니다. 아래 표는 어떻게 result가 결정되는지 보여 줍니다.

expression1	expression2	result
True	True	True
True	False	False
True	Null	Null
False	True	False
False	False	False
False	Null	False
Null	True	Null
Null	False	False
Null	Null	Null
And 연산자는 두 수식의 같은 위치에 있는 비트끼리 아래 표에 맞추어 비트 비교를 하고, 그 결과를 result의 해당하는 비트에 설정합니다.

expression1의 비트	expression2의 비트	result
0	0	0
0	1	0
1	0	0
1	1	1


Eqv 연산자

두 식이 논리적으로 동등한지 비교합니다.

구문

result = expression1 Eqv expression2

Eqv 연산자는 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
result	필수적인 요소. 숫자 변수
expression1	필수적인 요소. 식
expression2	필수적인 요소. 식
참고

어느 한 식이 Null이면 result도 Null이고 두 식이 모두 Null이 아니면 result는 아래 표에 따라 결정됩니다.

expression1	expression2	result
True	True	True
True	False	False
False	True	False
False	False	True
Eqv 연산자는 두 수식의 같은 위치에 있는 비트끼리 아래 표에 맞추어 비트 비교를 하고, 그 결과를 result의 해당하는 비트에 설정합니다.

expression1의 비트	expression2의 비트	result
0	0	1
0	1	0
1	0	0
1	1	1


Imp 연산자

두 식의 논리적 함축성을 구합니다.

구문

result = expression1 Imp expression2

Imp 연산자 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
result	필수적인 요소. 숫자 변수
expression1	필수적인 요소. 식
expression2	필수적인 요소. 식
참고

아래 표는 result가 어떻게 결정되는지 보여 줍니다.

expression1	expression2	result
True	True	True
True	False	False
True	Null	Null
False	True	True
False	False	True
False	Null	True
Null	True	True
Null	False	Null
Null	Null	Null
Imp 연산자는 두 수식의 같은 위치에 있는 비트끼리 아래 표에 맞추어 비트 비교를 하고, 그 결과를 result의 해당하는 비트에 설정합니다.

expression1 의 비트	expression2 의 비트	result
0	0	1
0	1	1
1	0	0
1	1	1


Not 연산자

식의 논리적 부정을 구합니다.

구문

result = Not expression

Not 연산자 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
result	필수적인 요소. 숫자 변수
expression	필수적인 요소. 식
참고

아래 표는 result가 어떻게 결정되는지 보여줍니다.

expression	result
True	False
False	True
Null	Null
게다가 Not 연산자는 아래 표에 따라 어떤 변수든지 모든 비트의 값을 바꾸어 결과의 해당하는 비트 값을 설정합니다.

expression 의 비트	result
o	1
1	0


Or 연산자

두 식의 논리합을 구합니다.

구문

result = expression1 Or expression2

Or 연산자 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
result	필수적인 요소. 숫자 변수
expression1	필수적인 요소. 식
expression2	필수적인 요소. 식
참고

한 식이나 두 식 다 True이면 result는 True가 됩니다. 아래 표는 result가 어떻게 결정되는지 나타냅니다.

expression1	expression2	result
True	True	True
True	False	True
True	Null	True
False	True	True
False	False	False
False	Null	Null
Null	True	True
Null	False	Null
Null	Null	Null
Or 연산자는 두 수식의 같은 위치에 있는 비트끼리 아래 표에 맞추어 비트 비교를 하고, 그 결과를 result의 해당하는 비트에 설정합니다.

expression1 의 비트	expression2 의 비트	result
0	0	0
0	1	1
1	0	1
1	1	1


Xor 연산자

두 식이 논리적으로 다른지 비교합니다.

구문

[result =] expression1 Xor expression2

Xor 연산자 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
result	선택적인 요소. 숫자 변수
expression1	필수적인 요소. 식
expression2	필수적인 요소. 식
참고

단지 한 식의 결과가 True일 때 result는 True입니다. 그러나 한 식이 Null일 경우 result는 Null입니다. 두 식이 다 Null이 아닐 경우에 result 는 아래 표에 의해 구해집니다.

expression1	expression2	result
True	True	False
True	False	True
False	True	True
False	False	False
Xor 연산자는 논리적 연산과 비트 단위 연산을 모두 수행합니다. Xor 연산을 사용한 두 식 사이의 비트 비교 결과는 아래 표와 같이 나타납니다.

expression1 의 비트	expression2 의 비트	result
0	0	0
0	1	1
1	0	1
1	1	0


Is 연산자

두 개체가 가리키는 변수가 동등한지를 비교합니다.

구문

result = object1 Is object2

Is 연산자 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
result	필수적인 요소. 숫자 변수
object1	필수적인 요소. 개체 이름
object2	필수적인 요소. 개체 이름
참고

object1과 object2 모두 같은 개체를 참조하면 result는 True입니다. 만일 그렇지 않으면 result는 False가 됩니다. 두 변수는 여러 가지 방법으로 같은 개체를 참조할 수 있습니다.

아래의 예제에서 A는 B와 같은 개체를 가리키도록 설정됩니다.

Set A = B

그리고 아래의 예제에서는 A와 B가 C와 같은 개체를 가리키도록 설정됩니다.

Set A = C

Set B = C


Like 연산자

두 문자열을 비교합니다.

구문

result = string Like pattern

Like 연산자 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
result	필수적인 요소. 숫자 변수
string	필수적인 요소. 문자식
pattern	필수적인 요소. 참고에서 설명하는 규칙을 따르는 문자식
참고

string과 pattern이 맞으면 result는 True이고 일치하는 것이 없으면 result는 False입니다. string과 pattern 중 하나가 Null이면 result는 Null입니다.

Like 연산자의 작동은 Option Compare 문에 따라 달라집니다. 각 모듈에서 기본 문자열 비교 방법은 Option Compare Binary입니다.

Option Compare Binary는 문자들을 나타내는 내부의 이진 표현에 따른 정렬 순서에 맞추어 문자열을 비교하는 방법입니다. Microsoft Windows에서 정렬 순서는 코드 페이지에 의해 결정됩니다. 아래 예제는 일반적인 이진 정렬 방법을 보여 줍니다.

A < B < E < Z < a < b < e < z < � < � < � < � < � < �

Option Compare Text는 시스템의 로케일이 정한 문자의 순서대로 대/소문자를 구별하지 않고 비교하는 방법입니다. 위의 문자열을 Option Compare Text를 사용하여 비교하면 아래와 같은 결과가 나타납니다.

(A=a) < (�=�) < (B=b) < (E=e) < (�=�) < (Z=z) < (�=�)

주어진 패턴 일치 방법은 문자열 비교에 있어 다양한 기능을 제공합니다. 패턴 일치 기능을 사용하면 와일드카드 문자, 문자열, 문자 범위 등을 자유자재로 사용할 수 있습니다. 아래 표에는 pattern에 쓰이는 문자와 그들의 의미가 나타나 있습니다.

pattern 내의 문자	일치하는string
?	한 문자
*	0개 이상의 문자
#	한 숫자 (0-9)
[charlist]	charlist 내의 한 문자
[!charlist]	charlist 내에 없는 문자
대괄호([ ]) 안에 묶인 하나 이상의 문자(charlist)는 string 안의 한 문자와 일치하는지에 사용될 수 있고, 숫자를 포함한 모든 문자 코드가 포함될 수 있습니다.

메모   왼쪽 대괄호([), 물음표(?), 숫자 표시(#), 별표(*)가 일치하는지 확인하려면 이 기호들을 대괄호 안에 넣어야 합니다. 오른 쪽 대괄호(])는 그룹 내에서 자신과 일치하는 지에 사용될 수 없지만 하나의 문자로서 그룹 밖에서 사용될 수 있습니다.

위와 아래의 경계를 구별하기 위한 하이픈(�)을 사용하여 charlist가 문자의 범위를 지정할 수 있습니다. 예를 들어 [A-Z]는 string의 해당되는 위치에 대문자 A에서 Z 사이의 문자가 나타나면 일치하는 결과를 나타냅니다. 여러 개의 범위를 나타내려고 할 때에는 구분 기호 없이 대괄호 안에 포함시킬 수 있습니다.

지정된 범위는 Option Compare와 코드가 실행될 때의 시스템의 로케일 설정에 따라 결정된 대로 실행 모드에서 유효한 문자 순서에 따라 달라집니다. Option Compare Binary의 경우 [A뺼]는 A, B, E 등과 일치하고 Option Compare Text의 경우 [A-E]는 A, a, �, �, B, b, E, e 등과 일치합니다. 이 경우에 강조된 문자는 정렬 순서에서 없는 문자보다 뒤에 있기 때문에 �나 �는 포함되지 않습니다.

패턴 일치에 있어 다른 중요한 규칙들은 아래와 같습니다.

•	charlist의 앞에 오는 느낌표(!)는 charlist에 포함되지 않는 문자가 string에 있을 경우에 일치한다는 것을 의미합니다. 대괄호 밖에서 사용될 때 느낌표는 자신의 문자를 의미합니다.

•	하이픈(�)은 자신을 나타내기 위해 charlist의 맨 앞이나(느낌표의 뒤도 포함) 맨 뒤에 나타납니다. 다른 모든 곳에서 하이픈은 문자의 범위를 의미하게 됩니다.

•	문자열의 범위가 지정될 때 이는 오름차순(낮은 것부터 높은 것으로)이어야 합니다. [A-Z]는 맞는 패턴이지만 [Z-A]는 잘못된 것입니다.

•	[]는 길이가 0인 문자열("")을 의미합니다.

언어에 따라 두 문자를 하나의 특별한 문자로 나타내는 경우가 있습니다. 예를 들어 몇몇 언어에서는 "a" 와 "e"가 같이 나타날 때 이를 "�" 문자로 나타냅니다. Like 연산자는 특별한 하나의 문자와 두 개의 각각의 문자들이 같은 것이라고 인식합니다.

시스템 로케일 설정에서 정의된 특별한 문자를 쓰는 경우 pattern이나 string에서 특별한 하나의 문자가 나왔을 때, 다른 문자열에서는 그 특별한 하나의 문자를 두 개의 연속된 문자로 인식하게 됩니다. 마찬가지로 pattern에서 대괄호(목록, 범위, 자신) 안에 있는 특별한 하나의 문자를 string에서 두 개의 연속된 문자로 인식하게 됩니다.


Count 속성 예제

아래 예제에서는 MyClasses라는 컬렉션의 모든 요소를 제거하는데 필요한 반복 횟수를 지정하기 위해 Collection 개체의 Count 속성을 사용합니다. 컬렉션이 숫자로 인덱스된 경우에는 기본적으로 1부터 시작합니다. 삭제하면 컬렉션이 자동적으로 다시 인덱스되기 때문에 아래 코드는 반복할 때마다 첫째 구성원을 삭제합니다.

Dim Num, MyClasses

For Num = 1 To MyClasses.Count	' 이름을 컬렉션에서 제거합니다.

MyClasses.Remove 1	' 기본 컬렉션 숫자 인덱스는

Next	' 1부터 시작합니다.


Description 속성 예제

아래 예제에서는 Err 개체의 Description 속성에 사용자 정의 메시지를 지정합니다.

Err.Description = "이 작업에 필요한 개체를 "

& "액세스할 수 없습니다."


HelpContext 속성 예제

아래 예제에서는 Err 개체의 HelpContext 속성을 사용하여 오버플로 오류에 대한 Visual Basic 도움말 항목을 보여줍니다.

Dim Msg

Err.Clear

On Error Resume Next

Err.Raise 6 ' "오버플로" 오류를 생성합니다.

If Err.Number <> 0 Then

Msg = "Err.HelpContext & "에 대한 " & Err.HelpFile & _

" 항목을 보려면 F1키나 도움말을 누르십시오."

MsgBox Msg, , "오류: " & Err.Description, Err.HelpFile, _

Err.HelpContext

End If


HelpFile 속성 예제

아래 예제에서는 Err 개체의 HelpFile 속성을 사용하여 도움말 시스템을 시작합니다. 기본적으로 HelpFile 속성에 Visual Basic 도움말 파일 이름이 포함되어 있습니다.

Dim Msg

Err.Clear

On Error Resume Next	' 예제 실행 목적을 위해 오류를 건너뜁니다.

Err.Raise 6	' "오버플로" 오류를 생성합니다.

Msg = "이 오류에 대한 " & Err.HelpFile & _

" 항목을 보려면 F1키나 도움말을 누르십시오."

MsgBox Msg, , "오류: " & Err.Description,Err.HelpFile , Err.HelpContext


LastDLLError 속성 예제

아래 코드를 UserForm 모듈에 붙여 넣으면 DLL 함수를 호출하려고 시도하게 됩니다. 전달된 인수(null 포인터)가 오류를 일으키기 때문에 호출은 실패하게 되고 어떤 이벤트에서도 SQL이 실행되고 있지 않으면 취소할 수 없게 됩니다. 호출 이후의 코드는 호출의 응답을 검사하고, 그런 다음 오류 코드를 알아내기 위해 Err 개체의 LastDLLError 속성에서 인쇄됩니다. DLL이 없는 시스템에서 LastDLLError 속성은 언제나 0을 반환합니다.

 Private Declare Function SQLCancel Lib "ODBC32.dll" _

 (ByVal hstmt As Long) As Integer

Private Sub UserForm_Click()

Dim RetVal

' 잘못된 인수를 호출합니다.

RetVal = SQLCancel(myhandle&)

' SQL 오류 코드를 확인합니다.

If RetVal = -2 Then

'정보 코드를 표시합니다.

MsgBox "오류 코드:" & Err.LastDllError

  End If

End Sub


Number 속성 예제

첫째 예제에서는 오류 처리 루틴에서 Number 속성의 일반적인 사용 방법을 보여줍니다. 둘째 예제에서는 자동화 개체가 반환한 오류가 개체에 의해 정의되었는지 아니면 Visual Basic에 의해 정의된 오류에 매핑되어 있는지 결정하기 위해 Err 개체의 Number 속성을 조사합니다. vbObjectError 상수는 서버에 의해 오류가 정의된다는 것을 나타내기 위해 개체가 자신의 오류 코드에 추가한 아주 큰 음수입니다. 그러므로 Err.Number에서 빼려면 결과에서 삭제해야 합니다. 만약 오류가 개체에 의해 정의된 것이라면 시작하는 수는 MyError에 남겨져 있고, 오류가 원래 발생한 위치와 함께 메시지 상자에 표시됩니다. Err.Number가 Visual Basic 오류를 나타낸다면 Visual Basic 오류 번호가 메시지 상자에 표시됩니다.

' Number 속성의 일반적인 사용

Sub test()

On Error GoTo out

Dim x, y

x = 1 / y	' 0으로 나누기 오류를 만듭니다.

Exit Sub

out:

MsgBox Err.Number

MsgBox Err.Description

' 0으로 나누기 오류를 확인합니다.

If Err.Number = 11 Then

y = y + 1

End If

Resume

End Sub

' 자동화 개체의 오류와 함께

' Number 속성 사용

Dim MyError, Msg

' 첫째, 그 자체 오류를 나타내는 개체에 의해

' 추가된 상수를 제거합니다.

MyError = Err.Number - vbObjectError

' vbObjectError 상수를 빼고 숫자가 여전히

' 0-65,535 범위의 값이면 이것은 개체 정의 오류 코드입니다.

If MyError > 0 And MyError < 65535 Then

Msg = "액세스한 개체가 이 번호를 다음 오류에 할당하였습니다: " _

 	& MyError & ". 오류 작성자는 다음과 같습니다: " _

& Err.Source & " 오류 작성자의 도움말 항목을" & _ 보려면 F1키를 누르십시오."

' 반면 이것은 Visual Basic 오류 번호입니다.

Else

Msg = "오류 (# " & Err.Number & ")은(는) Visual Basic 오류" & _

" 번호입니다. 도움말 단추 또는 F1키를 눌러 이 오류에 대한" _

& " Visual Basic 도움말 항목을 보십시오."

End If

MsgBox Msg, , "개체 오류", Err.HelpFile, Err.HelpContext


Source 속성 예제

아래 예제에서는 Visual Basic에서 생성된 자동화 개체의 프로그램 ID를 MyObjectID 변수에 할당하고, 그 다음에 Raise 메서드를 이용해 오류를 발생시키면 그것을 Err 개체의 Source 속성에 할당합니다. 오류를 처리할 때 프로그램에서 Source 속성(또는 Number 이외의 다른 Err 속성)을 사용해서는 안됩니다. 오류를 처리할 수 없는 경우에 최종 사용자에게 풍부한 정보를 표시하는 것이 Number 이외의 속성을 올바로 사용하는 유일한 방법입니다. 이 예제는 App와 MyClass를 유효한 참조로 가정합니다.

Dim MyClass, MyObjectID, MyHelpFile, MyHelpContext

' MyClass 형식의 개체가 오류를 생성하고 Source를 포함하여

' 모든 Err 개체를 채웁니다. Source는 MyObjectID를 받고, MyObjectID는

' MyClass 개체의 Name 속성과 App 개체의 Title 속성을 결합한 것입니다.

MyObjectID = App.Title & "." & MyClass.Name

Err.Raise	Number := vbObjectError + 894, Source := MyObjectID, _

Description := "작업을 완료할 수 없습니다.", _

HelpFile := MyHelpFile, HelpContext := MyHelpContext


Calendar 속성

프로젝트에 사용할 달력 형식을 지정하는 값을 반환하거나 설정합니다.

아래 두 Calendar 설정 중 하나를 사용할 수 있습니다.

설정	값	설명
vbCalGreg	0	그레고리오력 사용(기본값)
vbCalHijri	1	회교력 사용
참고

프로그램을 통해서만 Calendar 속성을 설정할 수 있습니다. 회교력을 사용하려면 아래 문을 사용합니다.

Calendar = vbCalHijri


Count 속성

컬렉션에 있는 개체의 수를 포함하는 Long(long integer)을 반환합니다. 읽기 전용입니다.


Description 속성

개체와 관련된 설명 문자열을 포함하고 있는 문자식 값을 반환하거나 설정합니다. 읽기와 쓰기가 모두 가능합니다.

Err 개체에 대해서는 오류와 관련된 설명 문자열의 값을 반환하거나 설정합니다.

참고

Description 속성 설정은 오류에 대한 간단한 설명으로 구성되어 있습니다. 다룰 수 없거나 다루지 않은 오류가 발생하였음을 사용자에게 알려주기 위해서 이 속성을 사용하십시오. 사용자 정의 오류가 발생했을 때 오류에 대한 간단한 설명을 Description 속성에 할당하십시오. Description의 값이 채워지지 않고 Number의 값이 Visual Basic 런타임 오류에 해당될 경우 오류가 발생했을 때 Error 함수에 의해서 반환된 문자열이 Description에 들어가게 됩니다.


HelpContext 속성(Visual Basic for Applications)
HelpContext 속성

Microsoft Windows 도움말 파일의 항목에 대한 컨텍스트 ID를 포함하는 문자식 값을 반환하거나 설정합니다. 읽기와 쓰기가 모두 가능합니다.

참고

HelpContext 속성은 HelpFile 속성에 기술된 도움말 항목을 자동으로 나타내기 위해서 사용됩니다. 만약 HelpFile 과 HelpContext의 값이 둘 다 비어있다면 Number의 값이 확인됩니다. Number가 Visual Basic 런타임 오류 값에 해당할 경우 그 오류에 대한 Visual Basic 도움말 컨텍스트 ID가 사용됩니다. Number 값이 Visual Basic 오류에 해당되지 않을 경우 Visual Basic 도움말 파일의 내용 화면이 나타납니다.

메모   전형적인 오류들을 다루기 위한 루틴을 응용 프로그램에 만들어야 합니다. 개체에 대한 프로그램을 작성할 때 개체의 도움말 파일을 사용함으로써 오류 처리를 향상시키거나 오류가 회복 불가능 할 때에 의미 있는 메시지를 표시할 수 있습니다.


HelpFile 속성

Microsoft Windows 도움말 파일에 대한 절대 경로를 가지고 있는 문자식 값을 반환하거나 설정합니다. 읽기와 쓰기가 모두 가능합니다.

참고

도움말 파일이 HelpFile에 기술되었다면 오류 메시지 대화 상자에서 도움말 단추 또는 F1키(Windows 경우)또는 help키(매킨토시의 경우)를 눌렀을 때 자동으로 호출됩니다. HelpContext 속성이 기술 된 파일에 있는 유효한 컨텍스트 ID일 경우 항목은 자동으로 나타납니다. 어떠한 HelpFile도 지정되지 않았을 경우 Visual Basic 도움말 파일이 나타납니다.

메모   전형적인 오류들을 처리하기 위한 루틴을 응용 프로그램에 만들어야 합니다. 개체에 대한 프로그램을 작성할 때 개체의 도움말 파일을 사용함으로써 오류 처리를 향상시키거나 오류가 회복 불가능 할 때에 의미 있는 메시지를 표시할 수 있습니다.


LastDLLError 속성

동적 연결 라이브러리 (DLL) 호출에 의하여 발생하는 시스템 오류 코드의 값을 반환합니다. 읽기 전용입니다. 매킨토시에서 LastDLLError 속성은 언제나 0을 반환합니다.

참고

LastDLLError 속성은 Visual Basic 코드에서 만들어지는 DLL 호출에만 적용됩니다. 그런 호출이 일어나게 되면 호출된 함수는 일반적으로 성공 또는 실패를 나타내는 코드를 반환하고 LastDLLError 속성에 값을 채웁니다. 함수의 반환 값이 성공인지 실패인지 알아보려면 DLL 함수에 대한 도움말을 보십시오. 실패 코드가 반환될 때 마다 Visual Basic 응용 프로그램은 바로 LastDLLError 속성을 검사해야만 합니다. LastDLLError 속성 값이 설정되었을 때는 어떠한 예외 처리도 일어나지 않습니다.


Number 속성

오류를 기술하는 숫자 값을 반환하거나 설정합니다. Number는 Err 개체의 기본 속성입니다. 읽기와 쓰기가 모두 가능합니다.

참고

개체로부터 사용자 정의 오류를 반환할 때 오류 코드로 선택한 수와 vbObjectError 상수를 더한 값을 Err.Number에 설정합니다. 예를 들면, 1051을 오류 코드로 반환하려면 아래와 같은 코드를 사용합니다.

Err.Raise Number := vbObjectError + 1051, Source:= "SomeClass"


Source 속성(Visual Basic for Applications)
Source 속성

오류를 발생시킨 개체나 응용 프로그램의 이름이 들어있는 문자식의 값을 반환하거나 설정합니다. 읽기와 쓰기가 모두 가능합니다.

참고

Source 속성은 오류를 발생시킨 개체를 나타내는 문자식을 지정합니다. 식은 보통 개체의 클래스 이름이거나 프로그램 ID입니다. 액세스한 개체에서 발생한 오류를 처리할 수 없을 때 정보를 제공하기 위해서 Source를 사용하십시오. 예를 들어 사용자가 Microsoft Excel을 액세스하여 0으로 나누기 오류를 생성할 경우 Microsoft Excel은 Err.Number를 오류 코드에 설정하고 Source를 Excel 응용 프로그램에 설정합니다.

코드에서 오류가 발생했을 때 Source는 작성한 응응 프로그램의 프로그램 ID 값을 갖습니다. 클래스 모듈에 대해 Sourc는 project.class 폼의 이름을 포함해야 합니다. 예상하지 않았던 오류가 발생할 때 Source 속성은 자동적으로 값이 채워집니다. 표준 모듈 오류에 대해 Source는 프로젝트 이름을 포함합니다. 클래스 모듈의 오류에 대해 Source는 project.class 폼의 이름을 포함합니다.


DeleteSetting 문 예제

아래 예제에서는 먼저 MyApp 응용 프로그램에 대한 Windows 레지스트리 또는 16비트 Windows 플랫폼에서는 .INI 파일에 항목을 만들기 위해 SaveSetting 문을 사용하고, 그 다음에 그 항목을 제거하기 위해 DeleteSetting 문을 사용합니다. 어떤 key 인수도 지정되지 않았기 때문에 구역 이름과 모든 키를 포함해 전 구역을 삭제합니다.

' 레지스트리에 몇 개의 설정을 배치합니다.

SaveSetting appname := "MyApp", section := "Startup", _

    key := "Top", setting := 75

SaveSetting "MyApp","Startup", "Left", 50

' 구역과 레지스터리의 모든 구역 설정을 삭제합니다.

DeleteSetting "MyApp", "Startup"


GetAllSettings 함수 예제

아래 예제에서는 먼저 appname으로 지정된 응용 프로그램에 대한 Windows 레지스트리에 항목을 만들기 위해 SaveSetting 문을 사용하고, 그 다음에 설정한 내용을 표시하기 위해 GetAllSettings 함수를 사용합니다. 응용 프로그램 이름과 section 이름은 GetAllSettings로 얻을 수 없습니다. 마지막으로 DeleteSetting 문으로 응용 프로그램의 항목을 제거합니다.

' GetAllSettings에 의해 반환된 2차원 배열을 가지는 Variant입니다.

' 카운터를 가지는 정수입니다.

Dim MySettings As Variant, intSettings As Integer

' 레지스터리에 몇 개의 설정을 배치합니다.

SaveSetting appname := "MyApp", section := "Startup", _

key := "Top", setting := 75

SaveSetting "MyApp","Startup", "Left", 50

' 설정을 검색합니다.

MySettings = GetAllSettings(appname := "MyApp", section := "Startup")

For intSettings = LBound(MySettings, 1) To UBound(MySettings, 1)

Debug.Print MySettings(intSettings, 0), MySettings(intSettings, 1)

Next intSettings

DeleteSetting "MyApp", "Startup"


GetSetting 함수 예제

아래 예제에서는 먼저 appname으로 지정된 응용 프로그램에 대한 Windows 레지스트리  또는 16비트 Windows 플랫폼에서는 .INI 파일에 항목을 만들기 위해 SaveSetting 문을 사용하고, 그 다음에 설정한 내용 중 한 가지를 표시하기 위해 GetSetting 함수를 사용합니다. default 인수가 지정되어 있기 때문에 일부 값은 반환이 보장됩니다. section 이름은 GetSetting으로 얻을 수 없습니다. 마지막으로 DeleteSetting 문으로 응용 프로그램의 항목을 제거합니다.

' GetSetting에 의해 반환된 2차원 배열을 가지는 Variant입니다.

Dim MySettings As Variant

' 레지스터리에 몇 개의 설정을 배치합니다.

SaveSetting "MyApp","Startup", "Top", 75

SaveSetting "MyApp","Startup", "Left", 50

Debug.Print GetSetting(appname := "MyApp", section := "Startup", _

         key := "Left", default := "25")

DeleteSetting "MyApp", "Startup"


SaveSetting 문 예제

아래 예제에서는 먼저 MyApp 응용 프로그램에 대한 Windows 레지스트리 또는 16비트 Windows 플랫폼에서는 .INI 파일에 항목을 만들기 위해 SaveSetting 문을 사용하고, 그 다음에 그 항목을 제거하기 위해 DeleteSetting 문을 사용합니다.

' 레지스터리에 몇 개의 설정을 배치합니다.

SaveSetting appname := "MyApp", section := "Startup", _

    key := "Top", setting := 75

SaveSetting "MyApp","Startup", "Left", 50

' 구역과 레지스트리의 모든 구역 설정을 삭제합니다.

DeleteSetting "MyApp", "Startup"


DeleteSetting 문

Windows 레지스트리의 응용프로그램 항목에서 하나의 영역이나 키 설정값을  또는 매킨토시 레지스트리에서는 응용 프로그램의 초기화 파일에 있는 정보를삭제합니다.

구문

DeleteSetting appname, section[, key]

DeleteSetting 문 구문은 다음과 같은 명명된 인수로 되어 있습니다.

인수	설명
appname	필수적인 요소. 영역이나 키 설정이 적용되는 응용 프로그램이나 프로젝트의 이름을 값으로 하는 문자식입니다. 매킨토시에서는 System 폴더의 Preferences 폴더에 있는 초기화 파일의 이름입니다.
section	필수적인 요소. 키 설정이 삭제되는 영역의 이름을 값으로 가지는 문자식입니다. appname과 section 값만이 인수로 전달되면 그 영역에 해당하는 모든 키 설정들이 삭제됩니다.
key	선택적인 요소. 삭제되는 키 설정의 이름을 값으로 하는 문자식입니다.
참고

모든 인수가 전달될 경우 인수로 전달된 키 설정만이 삭제됩니다. 존재하지 않는 영역이나 키 설정에서 DeleteSetting 문을 사용하려는 경우에는 런타임 오류가 발생합니다.


GetAllSettings 함수

Windows 레지스트리의 응용 프로그램 항목에서 키 설정의 이름과 값(원래 SaveSetting으로 작성) 또는 매킨토시에서는 응용 프로그램의 초기화 파일 정보 목록을 반환합니다.

구문

GetAllSettings(appname, section)

GetAllSettings 함수 구문은 다음과 같은 명명된 인수로 되어 있습니다.

인수	설명
appname	필수적인 요소. 키 설정을 알려고 하는 응용 프로그램이나 프로젝트 이름을 값으로 하는 문자식입니다. 매킨토시에서는 System 폴더의 Preferences 폴더에 있는 초기화 파일의 이름입니다.
section	필수적인 요소. 키 설정을 알려고 하는 영역의 이름을 값으로 하는 문자식입니다. GetAllSettings은 인수로 받은 절과 그 값을 값으로 하는 2차원 문자열 배열인 Variant를 반환합니다.
참고

GetAllSettings은 appname이나 section이 명시되지 않으면 초기화되지 않은 Variant를 반환합니다.


GetSetting 함수

Windows 레지스트리의 응용 프로그램 항목에서 키 설정값을 또는 매킨토시에서는 응용 프로그램의 초기화 파일 정보를 반환합니다.

구문

GetSetting(appname, section, key[, default])

GetSetting 함수 구문은 다음과 같은 명명된 인수로 되어 있습니다.

인수	설명
appname	필수적인 요소. 키 설정을 알려고 하는 응응 프로그램이나 프로젝트의 이름을 값으로 하는 문자식입니다. 매킨토시에서는 System 폴더의 Preferences 폴더에 있는 초기화 파일의 이름입니다.
section	필수적인 요소. 키 설정을 알려고 하는 절의 이름을 값으로 하는 문자식입니다.
key	필수적인 요소. 반환할 키 설정의 이름을 값으로 하는 문자식입니다.
default	선택적인 요소. 키 설정에 아무 값도 없을 때 반환할 값을 가지고 있는 식입니다. 생략할 경우 default는 길이가 0인 문자열 값을 가집니다.
참고

GetSetting 인수 중 아무 값도 지정되지 않으면 GetSetting은 default 값을 반환합니다.


SaveSetting 문

Windows 레지스트리에 응용 프로그램 항목을 또는 매킨토시에서는 응용 프로그램의 초기화 파일 정보를 만들거나 저장합니다.

구문

SaveSetting appname, section, key, setting

SaveSetting 문 구문은 다음과 같은 명명된 인수로 되어 있습니다.

인수	설명
appname	필수적인 요소. 설정이 적용되는 응용 프로그램이나 프로젝트의 이름을 값으로 하는 문자식입니다. 매킨토시에서는 System 폴더의 Preferences 폴더에 있는 초기화 파일의 이름입니다.
section	필수적인 요소. 저장 되는 키 설정에 대한 영역의 이름을 값으로 하는 문자식입니다.
key	필수적인 요소. 저장되는 키 설정의 이름을 값으로 하는 문자식입니다.
setting	필수적인 요소. 키에 대해 설정할 값을 가지고 있는 식입니다.
참고

어떤 이유에서 키 설정이 저장될 수 없을 경우 오류가 발생합니다.


Chr 함수 예제

아래 예제에서는 Chr 함수를 사용하여 지정된 문자 코드와 연관된 문자를 반환합니다.

Dim MyChar

MyChar = Chr(65)	' A를 반환합니다.

MyChar = Chr(97)	' a를 반환합니다.

MyChar = Chr(62)	' >를 반환합니다.

MyChar = Chr(37)	' %를 반환합니다.


Format 함수 예제

아래 예제에서는 Format 함수를 사용하여 주어진 값을 내부에 정의되어 있는 형식이나 아니면 사용자 정의 형식으로 변환합니다. 날짜 구분 기호(/), 시간 구분 기호(:) , 오전/오후 리터럴에 대해서 시스템이 표시하는 실제 출력 형식은 그 코드가 실행되고 있는 시스템의 국가별 설정이 무엇으로 되어있느냐에 따라서 달라집니다. 시간과 날짜가 개발 환경 내에 표시될 때는 코드 로케일의 간단하게 표시 시간 형식과 간단하게 표시 날짜 형식이 사용되고, 실행 중인 코드가 표시될 때는 시스템 로케일의 간단하게 표시 시간 형식과 간단하게 표시 날짜 형식이 사용됩니다. 이는 로케일 코드와 다를 수 있습니다. 이 예제에서는 영어/미국으로 가정합니다.

MyTime과 MyDate는 현재 시스템의 간단하게 표시 시간 설정과 간단하게 표시 날짜 설정을 사용해 개발 환경 내에 표시됩니다.

Dim MyTime, MyDate, MyStr

MyTime = #17:04:23#

MyDate = #January 27, 1993#

' 현재 시스템 시간을 자세하게 표시 시간 형식으로 정의된 시스템에 반환합니다.

MyStr = Format(Time, "Long Time")

' 현재 시스템 날짜를 자세하게 표시 날짜 형식으로 정의된 시스템에 반환합니다.

MyStr = Format(Date, "Long Date")

MyStr = Format(MyTime, "h:m:s")	' "17:4:23"을 반환합니다.

MyStr = Format(MyTime, "hh:mm:ss AMPM")	' "오후 05:04:23"을 반환합니다.

MyStr = Format(MyDate, "dddd, mmm d yyyy")	' "수요일"을 반환합니다.

' 1993년 1월 27

' 형식이 지원되지 않으면 문자열을 반환합니다.

MyStr = Format(23)	' "23"을 반환합니다.

' 사용자 정의 형식

MyStr = Format(5459.4, "##,##0.00")	' "5,459.40"을 반환합니다.

MyStr = Format(334.9, "###0.00")	' "334.90"을 반환합니다.

MyStr = Format(5, "0.00%")	' "500.00%"을 반환합니다.

MyStr = Format("HELLO", "<")	' "hello"를 반환합니다.

MyStr = Format("This is it", ">")	' "THIS IS IT"을 반환합니다.


Hex 함수 예제

아래 예제에서는 Hex 함수를 사용하여 지정된 숫자에 대한 16진수 값을 구합니다.

Dim MyHex

MyHex = Hex(5)	' 5를 반환합니다.

MyHex = Hex(10)	' A를 반환합니다.

MyHex = Hex(459)	' 1CB를 반환합니다.


InStr 함수 예제

아래 예제에서는 InStr 함수를 사용하여 주어진 문자열 내에서 사용자가 지정된 문자열이 처음 나타나는 지점을 찾아냅니다.

Dim SearchString, SearchChar, MyPos

SearchString ="XXpXXpXXPXXP"	' 찾을 문자열

SearchChar = "P"	' "P"를 찾습니다.

' 4 위치에서 텍스트 비교를 시작합니다. 6을 반환합니다.

MyPos = Instr(4, SearchString, SearchChar, 1)

' 1 위치에서 이진 비교를 시작합니다. 9를 반환합니다.

MyPos = Instr(1, SearchString, SearchChar, 0)

' 기본값으로 비교는 이진법입니다. 마지막 인수는 생략합니다.

MyPos = Instr(SearchString, SearchChar)	' 9를 반환합니다.

MyPos = Instr(1, SearchString, "W")	' 0을 반환합니다.


LCase 함수 예제

아래 예제에서는 LCase 함수를 사용하여 주어진 문자열을 소문자로 변환합니다.

Dim UpperCase, LowerCase

Uppercase = "Hello World 1234"	' 변환할 문자열

Lowercase = Lcase(UpperCase)	' "hello world 1234"를 반환합니다.


Left 함수 예제

아래 예제에서는 Left 함수를 사용하여 문자열의 왼쪽 끝에서부터 지정된 문자 수만큼 글자를 반환합니다.

Dim AnyString, MyStr

AnyString = "Hello World"	' 문자열을 정의합니다.

MyStr = Left(AnyString, 1)	' "H"를 반환합니다.

MyStr = Left(AnyString, 7)	' "Hello W"를 반환합니다.

MyStr = Left(AnyString, 20)	' "Hello World"를 반환합니다.


Len 함수 예제

첫 예제에서는 Len 함수를 사용하여 주어진 문자열이나 변수를 저장하는데 필요한 바이트 수를 반환합니다. CustomerRecord를 정의하는데 사용하는 Type...End Type 블록을 클래스 모듈에서 정의할 경우에는 반드시 맨 앞에 Private 키워드를 먼저 선언해 주어야 하고, 그냥 일반 모듈에서 사용할 경우에는 Type 블럭을 Public으로 선언할 수도 있습니다.

Type CustomerRecord	' 사용자 정의 형식 정의

ID As Integer	' 표준 모듈에 이 정의를

Name As String * 10	' 둡니다.

Address As String * 30

End Type

Dim Customer As CustomerRecord	' 변수를 선언합니다.

Dim MyInt As Integer, MyCur As Currency

Dim MyString, MyLen

MyString = "Hello World"	' 변수를 초기화합니다.

MyLen = Len(MyInt)	' 2를 반환합니다.

MyLen = Len(Customer)	' 42를 반환합니다.

MyLen = Len(MyString)	' 11을 반환합니다.

MyLen = Len(MyCur)	' 8을 반환합니다.

둘째 예제에서는 ANSI가 문자열을 나타내는데 사용되면 LenB 함수와 사용자 정의 함수(LenMbcs)를 사용하여 문자열의 바이트 문자 수를 반환합니다.

Function LenMbcs (ByVal str as String)

LenMbcs = LenB(StrConv(str, vbFromUnicode))

End Function

Dim MyString, MyLen

MyString = "ABc"

' "A"와 "B"는 DBCS이고 "c"는 SBCS입니다.

MyLen = Len(MyString)

' 문자열에 3문자가 있어서 3을 반환합니다.

MyLen = LenB(MyString)

' Unicode에 사용할 6바이트이면 6을 반환합니다.

MyLen = LenMbcs(MyString)

' ANSI에 사용할 5바이트이면 5를 반환합니다.


LSet 문 예제

아래 예제에서는 LSet 문을 사용하여 하나의 문자열을 왼쪽으로 정렬합니다. 그리고 이 LSet은 하나의 사용자 정의 형식 변수를 그 변수와 형식은 다르지만 호환성이 있는 또 다른 하나의 사용자 정의 형식 변수에 복사하는 데에도 사용할 수 있습니다. 하지만 이와 같이 하는 것은 바람직하지 않습니다. 플랫폼 간에 데이터 구조 구현 방식이 다르기 때문에 그와 같은 방식으로 LSet을 사용하면 이동을 보장할 수 없게 됩니다.

Dim MyString

MyString = "0123456789"	' 문자열을 초기화합니다.

Lset MyString = "<-Left"	' MyString에 "<-Left  "가 있습니다.


LTrim, RTrim, Trim 함수 예제

아래 예제에서는 문자열 변수에서 Ltrim 함수를 사용하여 선행 공백을 삭제하고 Rtrim 함수를 사용하여 후행 공백을 삭제합니다. 양쪽 공백을 모두 삭제하기 위해서는 Trim 함수를 단독으로 사용합니다.

Dim MyString, TrimString

MyString = "  <-Trim->  "	' 문자열을 초기화합니다.

TrimString = LTrim(MyString)	' TrimString = "<-Trim->  ".

TrimString = RTrim(MyString)	' TrimString = "  <-Trim->".

TrimString = LTrim(RTrim(MyString))	' TrimString = "<-Trim->".

' Trim 함수만 사용하여 같은 결과를 얻습니다.

TrimString = Trim(MyString)	' TrimString = "<-Trim->".


Mid 함수 예제

첫 예제에서는 Mid 함수를 사용하여 문자열에서 지정된 수만큼의 문자를 반환합니다.

Dim MyString, FirstWord, LastWord, MidWords

MyString = "Mid Function Demo"	' 텍스트 문자열을 작성합니다.

FirstWord = Mid(MyString, 1, 3)	' "Mid"를 반환합니다.

LastWord = Mid(MyString, 14, 4)	' "Demo"를 반환합니다.

MidWords = Mid(MyString, 5)	' "Function Demo"를 반환합니다.

둘째 예제에서도 MidB 함수와 사용자 정의 함수(MidMbcs)를 사용하여 문자열에서 문자를 반환합니다. 여기서 다른 점은 입력 문자열이 ANSI이고 길이가 바이트 단위라는 것입니다.

Function MidMbcs(ByVal str as String, start, length)

MidMbcs = StrConv(MidB(StrConv(str, vbFromUnicode), start, length), vbUnicode)

End Function

Dim MyString

MyString = "AbCdEfG"

' "A", "C", "E", "G"는 DBCS이고 "b", "d", "f"는

' SBCS입니다.

MyNewString = Mid(MyString, 3, 4)

' ""CdEf"를 반환합니다.

MyNewString = MidB(MyString, 3, 4)

' ""bC"를 반환합니다.

MyNewString = MidMbcs(MyString, 3, 4)

' "bCd"를 반환합니다.


Mid 문 예제

아래 예제에서는 Mid 문을 사용하여 문자들이 포함된 문자열 변수에 지정된 수만큼 문자를 다른 문자열로 바꿉니다.

Dim MyString

MyString = "The dog jumps"	' 문자열을 초기화합니다.

Mid(MyString, 5, 3) = "fox"	' MyString = "The fox jumps".

Mid(MyString, 5) = "cow"	' MyString = "The cow jumps".

Mid(MyString, 5) = "cow jumped over"	' MyString = "The cow jumpe".

Mid(MyString, 5, 3) = "duck"	' MyString = "The duc jumpe".


Oct 함수 예제

아래 예제에서는 Oct 함수를 사용하여 지정된 숫자에 대한 8진수 값을 구합니다.

Dim MyOct

MyOct = Oct(4) 	' 4를 반환합니다.

MyOct = Oct(8)	' 10을 반환합니다.

MyOct = Oct(459)	' 713을 반환합니다.


Right 함수 예제

아래 예제에서는 Right 함수를 사용하여 주어진 문자열의 맨 오른쪽에서부터 지정된 문자 수만큼 반환합니다.

Dim AnyString, MyStr

AnyString = "Hello World"	' 문자열을 정의합니다.

MyStr = Right(AnyString, 1)	' "d"를 반환합니다.

MyStr = Right(AnyString, 6)	' " World"를 반환합니다.

MyStr = Right(AnyString, 20)	' "Hello World"를 반환합니다.


RSet 문 예제

아래 예제에서는 RSet 문을 사용하여 주어진 문자열 변수 내의 문자열을 오른쪽으로 정렬합니다.

Dim MyString

MyString = "0123456789"	' 문자열을 초기화합니다.

Rset MyString = "Right->"	' MyString은 " Right->"을 포함합니다.


Space 함수 예제

아래 예제에서는 Space 함수를 사용하여 지정된 수만큼의 공백 문자로  이루어진 문자열을 반환합니다.

Dim MyString

' 10 공백을 가진 문자열을 반환합니다.

MyString = Space(10)

' 두 문자열 사이에 10 공백을 삽입합니다.

MyString = "Hello" & Space(10) & "World"


Str 함수 예제

아래 예제에서는 Str 함수를 사용하여 숫자 형식의 데이터를 문자열 형식의 데이터로 변환합니다. 숫자를 문자열로 변환할 때 선행 공백은 부호 표시용으로 보존됩니다.

Dim MyString

MyString = Str(459)	' " 459"를 반환합니다.

MyString = Str(-459.65)	' "-459.65"를 반환합니다.

MyString = Str(459.001)	' " 459.001"를 반환합니다.


StrComp 함수 예제

아래 예제에서는 StrComp 함수를 사용하여 문자열과 문자열을 비교합니다. 세 번째 인수가 1이라면 문자 비교가 수행되고, 세 번째 인수가 0이거나 생략되면 이진 비교가 수행됩니다.

Dim MyStr1, MyStr2, MyComp

MyStr1 = "ABCD": MyStr2 = "abcd"	' 변수를 정의합니다.

MyComp = StrComp(MyStr1, MyStr2, 1)	' 0을 반환합니다.

MyComp = StrComp(MyStr1, MyStr2, 0)	' -1을 반환합니다.

MyComp = StrComp(MyStr2, MyStr1)	' 1을 반환합니다.


String 함수 예제

아래 예제에서는 String 함수를 사용하여 특정 문자가 지정된 길이만큼 반복되는 하나의 문자열을 만듭니다.

Dim MyString

MyString = String(5, "*")	' "*****"을 반환합니다.

MyString = String(5, 42)	' "*****"을 반환합니다.

MyString = String(10, "ABC")	' "AAAAAAAAAA"를 반환합니다.


UCase 함수 예제

아래 예제에서는 UCase 함수를 사용하여 하나의 문자열을 모두 대문자로 변환합니다.

Dim LowerCase, UpperCase

LowerCase = "Hello World 1234"	' 변환할 문자열

UpperCase = UCase(LowerCase)	' "HELLO WORLD 1234"를 반환합니다.


StrConv 함수 예제

아래 예제에서는 StrConv 함수를 사용하여 Unicode 문자열을 ANSI 문자열로 변환합니다.

Dim i As Long

Dim x() As Byte

x = StrConv("ABCDEFG", vbFromUnicode)	'문자열을 변환합니다.

For i = 0 To UBound(x)

Debug.Print x(i)

Next


Chr 함수

지정된 문자 코드와 관련된 문자가 포함된 String 값을 반환합니다.

구문

Chr(charcode)

필수 요소인 charcode 인수는 문자를 식별하는 Long 값입니다.

참고

0부터 31까지 문자는 인쇄할 수 없는 표준 ASCII 코드입니다. 예를 들어 Chr(10)은 라인 피드 문자를 반환합니다. charcode의 표준 범위는 0부터 255까지 입니다. 그러나 DBCS 시스템에서 charcode의 실제 범위는 -32768부터 65535까지입니다.

메모   ChrB 함수는 문자열이 가지는 바이트 데이터를 사용합니다. 1바이트나 2바이트 크기의 문자를 반환하는 대신 ChrB 함수는 1바이트만 반환합니다. ChrW 함수는 Unicode를 지원하지 않는 플랫폼을 제외한 플랫폼에서 Unicode 문자를 포함하는 문자열 값을 반환하고 Chr 함수와 동일한 작동을 합니다.

메모   매킨토시용 Visual Basic에서는 Unicode 문자열이 지원되지 않습니다. Windows 환경에서와 달리 매킨토시에서는 ChrW(n) 함수가 128부터 65,535까지 n 값에 대해 모든 Unicode 문자를 반환하지 않습니다. 대신 매킨토시에서 ChrW(n) 함수는 127보다 큰 Unicode n 값에 대해 적절한 가정치를 계산하려 시도합니다. 그러므로 매킨토시 환경에서 ChrW 함수를 사용하지 않는 것이 좋습니다.


Format 함수

Format 식의 명령대로 구성된 식이 포함된 Variant(String) 값을 반환합니다.

구문

Format(expression[, format[, firstdayofweek[, firstweekofyear]]])

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

구성 요소	설명
expression	필수적인 요소. 유효한 식
format	선택적인 요소. 지정 또는 사용자 정의된 유효한 Format 식을 가진 식
firstdayofweek	선택적인 요소. 한 주의 첫 날을 지정하는 상수
firstweekofyear	선택적인 요소. 한 해의 첫 주를 지정하는 상수
설정

firstdayofweek 인수 설정은 아래와 같습니다.

상수	값	설명
vbUseSystem	0	NLS API 설정 사용
vbSunday	1	일요일(기본값)
vbMonday	2	월요일
vbTuesday	3	화요일
vbWednesday	4	수요일
vbThursday	5	목요일
vbFriday	6	금요일
vbSaturday	7	토요일
firstweekofyear 인수 설정은 아래와 같습니다.

상수	값	설명
vbUseSystem	0	NLS API 설정 사용
vbFirstJan1	1	1월 1일을 포함하는 주에서 시작(기본값)
vbFirstFourDays	2	새해의 처음 4일을 포함하는 주에서 시작
vbFirstFullWeek	3	처음 한 주일(7일)을 포함하는 주에서 시작
참고

형식화 대상	형식화 방법
숫자	미리 정의된 숫자 형식을 사용하거나 사용자 정의 숫자 형식을 만듭니다.
날짜/시간	미리 정의된 날짜/시간 형식을 사용하거나 사용자 정의 날짜/시간 형식을 만듭니다.
날짜와 시간 일련 번호	날짜와 시간 형식 또는 숫자 형식을 사용합니다.
문자열	사용자 정의 문자열 형식을 만듭니다.
format 인수를 지정하지 않고 숫자를 형식화하면 Format 함수는 Str 함수와 유사한 기능을 제공합니다. 하지만 Format 함수를 사용해 양수를 문자열로 형식화한 경우 그 값의 부호를 위한 공간이 포함되지 않습니다. Str 함수를 사용해 변환된 경우 부호를 위한 공간이 포함되어 변환됩니다.

지역화되지 않은 수치 문자열을 형식화하는 경우 사용자 정의 숫자 형식을 사용해야 원하는 모양을 얻을 수 있습니다.

메모   Calendar 속성 설정이 Gregorian(그레고리오력)이고 format 함수에서 날짜 형식을 지정하는 경우에는 제공되는 expression도 Gregorian(그레고리오력)이어야 합니다. Visual Basic Calendar 속성 설정이 Hijri(회교력)이면 제공되는 expression도 Hijri(회교력)이어야 합니다.

Calendar 속성 설정이 Gregorian(그레고리오력)이면 format 식 기호의 의미가 달라지지 않습니다. Calendar 속성 설정이 Hijri(회교력)이면 모든 날짜 형식 기호(예:dddd, mmmm, yyyy)가 의미는 같지만 Hijri(회교력)에 적용됩니다. 형식 기호는 영어 그대로 남습니다. AM과 PM처럼 텍스트로 표시되는 기호는 그 기호에 조합된 문자열(영어 또는 아라비아어)로 나타납니다. 특정 범위의 기호는 Calendar 속성 설정이 Hijri(회교력)일 때 다른 기호로 바뀝니다.

기호	범위
d	1-30
dd	1-30
ww	1-51
mmm	전체 월 이름을 표시(Hijri(회교력)의 월 이름은 약어가 없음)
y	1-355
yyyy	100-9666


지정된 숫자 형식(Format 함수)

미리 정의된 숫자 형식 이름이 아래 표에 나열되어 있습니다.

형식 이름	설명
General Number	천단위 구분 기호 없이 숫자를 표시합니다.
Currency	필요한 경우 천단위 구분 기호를 사용하여 숫자를 표시합니다. 소수점 오른쪽으로 두자리까지 표시합니다. 결과값은 시스템 로케일 설정에 따릅니다.
Fixed	소수점 왼쪽으로 최소 한 자리, 오른쪽으로 최소 두 자리를 표시합니다.
Standard	천단위 구분 기호로 숫자를 표시합니다. 소수점 왼쪽으로 최소 한 자리, 오른쪽으로 최소 두 자리까지 표시합니다.
Percent	숫자에 100을 곱하고 그 오른쪽에 %기호를 덧붙입니다. 항상 소수점 오른쪽으로 두 자리까지 표시합니다.
Scientific	표준 숫자 표기를 사용합니다.
Yes/No	숫자가 0일 경우 No를, 그 외의 경우에는 Yes를 표시합니다.
True/False	숫자가 0일 경우 False를, 그 외의 경우에는 True를 표시합니다.
On/Off	숫자가 0일 경우 Off를, 그 외의 경우에는 On을 표시합니다.


사용자 정의 숫자 형식(Format 함수)

사용자 정의 숫자 형식을 만드는 데 사용될 수 있는 문자들이 아래 표에 나열되어 있습니다.

문자	설명
없음	형식 없이 숫자를 표시합니다.
(0)	자릿수 자리 표시자로서 숫자 또는 0을 표시합니다. 형식 문자열에서 0이 나타나는 자리에 숫자가 있는 식이면 그대로 표시하고 그 외의 경우에는 그 자리에 0을 표시합니다. 식에서 소수점 양쪽에 숫자의 개수가 0보다 적을 때 숫자의 앞/뒤쪽에 0을 채워 표시합니다. format 식에서 소수점 오른쪽에 0의 개수가 원래 숫자의 소수점 오른쪽 숫자의 개수보다 적으면 0의 자릿수에서 반올림해서 표시합니다. Format 식에서 소수점 왼쪽에 0의 개수가 원래 숫자의 소수점 왼쪽의 숫자의 개수보다 적으면 변환없이 그대로 표시합니다.
(#)	자릿수 자리 표시자. 숫자 표시 또는 아무것도 표시하지 않습니다. #기호가 나타나는 자리에 숫자가 있는 식에서는 숫자를 그대로 표시하고 그 외의 경우에는 그 자리에 아무것도 표시하지 않습니다. 이 기호의 기능은 0 숫자 자리 표시자와 비슷합니다. 다만 형식이 정해진 식에서 소수점 양쪽에 #문자의 개수가 숫자의 개수와 같거나 많을 때 숫자의 앞/뒤 쪽에 0을 채우지 않습니다.
(.)	소수점 자리 표시자. 로케일에 따라 쉼표를 소수 구분 기호로 사용합니다. 소수점 자리 표시자는 소수 구분 기호의 양쪽으로 몇 자리의 숫자가 표시되는지를 결정합니다. Format 식에서 이 기호의 왼쪽으로 숫자 부호만 있으면 1보다 작은 숫자는 소수 구분 기호부터 표시됩니다. 소수점 앞에 0을 표시하려면 소수 구분 기호의 왼쪽 첫 차리에 0 소수점 자리 표시자를 사용합니다. 형식화된 출력에서 소수점 자리 표시자로 사용되는 문자는 사용자 시스템에서 인식하는 숫자 형식에 따라 결정됩니다.
(%)	% 자리 표시자. 식을 100으로 곱합니다. %기호는 형식 문자열에서 이 기호가 나타나는 자리에 삽입됩니다.
(,)	천단위 구분 기호. 지역에 따라 마침표는 천단위 구분 기호로 사용됩니다. 천단위 구분 기호는 숫자에서 소수 구분 기호의 왼쪽으로 4자리 이상의 숫자일 때 천단위와 백단위를 구분합니다. Format 식에서 천단위 구분 기호의 앞뒤에 자릿수 자리 표시자(0 또는 #)가 위치한 경우 천단위 구분 기호는 표준 방식으로 사용됨을 지정합니다. 두 개가 나란히 나열된 천단위 구분 기호나 소수 구분 기호(소수점 지정 여부에 상관없이)의 바로 왼쪽 천단위 구분 기호는 "숫자를 천으로 나누어 일정 비율로 줄이며, 필요한 경우 반올림한다"는 것을 의미합니다. 예를 들어 다음 형식 문자열 "##0,,"을 사용해서 1억을 100으로 표현할 수 있습니다. 이때 1백만보다 작은 숫자는 0으로 표시됩니다. 소수 구분 기호 바로 왼쪽 이외의 위치에 두 개의 천단위 구분 기호가 있을 경우 한 개의 천단위 구분 기호의 사용을 지정한 것과 같은 효과를 가져옵니다. 형식화된 출력에서 천단위 구분 기호로 사용되는 실제 문자는 사용자의 시스템에서 인식하는 숫자 형식에 따라 결정됩니다.
(:)	시간 구분 기호. 지역에 따라 다른 문자를 시간 구분 기호로 사용할 수 있습니다. 시간 구분 기호는 시간을 형식화할 때 시, 분, 초를 구분합니다. 형식화된 출력에서 시간 구분 기호로 사용되는 실제 문자는 사용자의 시스템 설정에 따라 결정됩니다.
(/)	날짜 구분 기호. 지역에 따라 다른 기호를 날짜 구분 기호로 사용할 수 있습니다. 날짜 구분 기호는 날짜를 형식화할 때 일, 월, 년을 구분합니다. 형식화된 출력에서 날짜 구분 기호로 사용되는 실제 문자는 사용자의 시스템 설정에 따라 결정됩니다.
(E- E+ e- e+)	공학적 형식. Format 식에서 E-, E+, e-, 또는 e+기호의 오른쪽으로 최소 한 개의 숫자 자리 표시자(0 또는 #)가 위치할 경우 숫자는 공학적 형식으로 표시되며 E 또는 e가 숫자와 지수 사이에 삽입됩니다. 기호 오른쪽에 오는 숫자 자리 표시자의 수는 지수의 자릿수를 결정합니다. 음수의 지수 값을 표현할 때에는 E- 또는 e-를 사용합니다. E+ 또는 e+를 사용할 때에는 음수의 지수값 옆에 음수 부호가, 양수의 지수 값 옆에는 양수 부호가 표시됩니다.
- + $ ( )	리터럴 문자를 표시합니다. 나열된 문자 이외의 문자를 표시하려면 바로 앞에 백슬래시(\)를 삽입하거나 큰따옴표("")로 둘러쌉니다.
(\)	형식 문자열에서 다음 문자를 표시합니다. 리터럴 문자로 특별한 의미가 있는 문자는 그 문자 앞에 백슬래시(\)를 삽입하고 백슬래시를 단독으로 표시하지 않습니다. 백슬래시를 사용하는 것은 큰따옴표로 다음 문자를 둘러싸는 것과 같습니다. 백슬래시를 표시하려면 두 개의 백슬래시(\\)를 사용합니다. 날짜 형식과 시간 형식 문자(a, c, d, h, m, n, p, q, s, t, w, y, /, :), 숫자 형식 문자(#, 0, %, E, e, 쉼표, 마침표), 문자열 형식 문자(@, &, <, >, and !)는 리터럴 문자로 표시될 수 없습니다.
("ABC")	큰따옴표("") 안에 문자열을 표시합니다. 코드 내에서 format으로 문자열을 포함하려면 Chr(34) 안에 글을 둘러싸야 합니다. 34는 큰따옴표(")의 문자 코드입니다.


다른 숫자값에 대한 여러 형식(Format 함수)

사용자 정의 숫자 형식의 식에는 세미콜론으로 나눈 1-4개의 부분을 포함시킬 수 있습니다. format 인수가 지정된 숫자 형식을 포함하고 있으면 한 부분만 허용됩니다.

사용 영역	결과
한 부분만 사용	Format 식은 모든 값에 적용됩니다.
두 부분	첫 부분은 양수와 0값에 적용되고 둘째 부분은 음수 값에 적용됩니다.
세 부분	첫 부분은 양수 값, 둘째 부분은 음수 값, 세째 부분은 0값에 적용됩니다.
네 부분	첫 부분은 양수 값, 둘째 부분은 음수 값, 세째 부분은 0값, 마지막 부분은 Null 값에 적용됩니다.
아래 예제는 두 부분을 사용한 경우입니다. 첫 부분은 양수와 0값의 형식을 정의합니다. 둘째 부분은 음수 값의 형식을 정의합니다.

"$#,##0;($#,##0)"

사이에 아무것도 없는 세미콜론을 포함하면 그 부분은 양수 값 형식으로 출력됩니다. 예를 들어 다음 형식에서 양수와 음수 값은 첫 부분의 형식을 사용해서 표시됩니다. 0값의 경우 "Zero"라고 표시됩니다.

"$#,##0;;\Z\e\r\o"


사용자 정의 숫자 형식의 식 예제

숫자 형식의 식 예제가 아래 표에 나열되어 있습니다. 이 예제는 사용자 시스템의 로케일이 영어(미국)로 설정된 경우입니다. 첫 열에는 형식 문자열, 나머지 열에는 열 제목에 제시된 값이 주어졌을 때 출력되는 결과입니다.

형식	양 5	음 5	소수점 .5	Null
길이가 0인 문자열("")	5	-5	0.5
0	5	-5	1
0.00	5.00	-5.00	0.50
#,##0	5	-5	1
#,##0.00;;;Nil	5.00	-5.00	0.50	Nil
$#,##0;($#,##0)	$5	($5)	$1
$#,##0.00;($#,##0.00)	$5.00	($5.00)	$0.50
0%	500%	-500%	50%
0.00%	500.00%	-500.00%	50.00%
0.00E+00	5.00E+00	-5.00E+00	5.00E-01
0.00E-00	5.00E00	-5.00E00	5.00E-01


지정된 날짜/시간 형식(Format 함수)

지정된 날짜와 시간 형식 이름이 아래 표에 나열되어 있습니다.

형식 이름	설명
General Date	날짜 및/또는 시간 표시. 실제값의 경우 날짜와 시간을 표시(예:97-4-3 오후 05:34)합니다. 소수 이하 부분이 없을 경우에는 날짜만 표시(예:97-4-3)하고 정수 부분이 없을 경우에는 시간만 표시(예:오후 05:34)합니다. 날짜 표시는 사용자의 시스템 설정에 따라 결정됩니다.
Long Date	사용자 시스템의 자세하게 표시 날짜 형식으로 날짜를 표시합니다.
Medium Date	호스트 응용 프로그램의 언어 버전에 맞는 보통 날짜 형식을 사용하는 날짜를 표시합니다.
Short Date	사용자 시스템의 간단하게 표시 날짜 형식으로 날짜를 표시합니다.
Long Time	사용자 시스템의 시간 표시 형식으로 시, 분, 초 정보를 포함하여 시간을 표시합니다.
Medium Time	시와 분, 오전/오후를 사용해 시간을 12시간 형식으로 표시합니다.
Short Time	24시간 형식을 사용해 시간을 표시(예: 17:45)합니다.


사용자 정의 날짜/시간 형식(Format 함수)

사용자 정의 날짜/시간 형식을 만드는 데 사용할 수 있는 문자들이 아래 표에 나열되어 있습니다.

문자	설명
(:)	시간 구분 기호. 로케일에 따라 다른 문자를 시간 구분 기호로 사용할 수 있습니다. 시간 값이 형식화될 때 시간 구분 기호는 시, 분, 초를 나눕니다. 형식화된 출력에서 시간 구분 기호로 사용되는 실제 문자는 사용자의 시스템 설정에 따라 결정됩니다.
(/)	날짜 구분 기호. 로케일에 따라 다른 문자를 날짜 구분 기호로 사용할 수 있습니다. 날짜값이 형식화될 때 날짜 구분 기호는 일, 월, 연도를 나눕니다. 형식화된 출력에서 날짜 구분 기호로 사용되는 실제 문자는 사용자의 시스템 설정에 따라 결정됩니다.
c	날짜는 ddddd로, 시간은  ttttt로 표시하고, 이 순서대로 표시합니다. 날짜 일련 번호에 소수점 이하 부분이 없으면 날짜 정보만 표시하고 정수 부분이 없으면 시간 정보만 표시합니다.
d	앞에 0을 붙이지 않고 1을 표시합니다.(예: 1-31).
dd	앞에 0을 붙여 1을 표시합니다.(예: 01-31).
ddd	요일을 약어로 표시합니다.(예: Sun -Sat).
dddd	요일을 원래대로 표시합니다.(예:Sunday-Saturday).
ddddd	날짜를 사용자 시스템의 간단하게 표시 날짜 형식 설정에 따라 형식화된 완전한 형태의 날짜로 표시(년, 월, 일 포함)합니다. 간단하게 표시 날짜 형식은 기본적으로 년-월-일(yy-mm-dd) 형태로 표시합니다.
dddddd	날짜를 사용자 시스템에서 인식하는 자세하게 표시 날짜 형식 설정대로 형식화된 완전한 날짜로 표시(년, 월, 일 포함)합니다. 자세하게 표시 날짜 형식의 기본 형식은 년, 월 일, 요일입니다.(예: yyyy년 m월 d일 dddd).
aaaa	dddd와 같지만 문자열의 지역화된 버전입니다.
w	한 주를 기준으로 일을 숫자로 표시합니다. 일요일을 1로, 토요일을 7로 표시하여 일요일부터 토요일까지 표시합니다.
ww	한 해를 기준으로 주를 표시합니다.(예: 1-54).
m	앞에 0을 붙이지 않고 월을 숫자로 표시합니다.(예: 1-12). m이 h 또는 hh 바로 뒤에 오면 월이 아니라 분을 표시합니다.
mm	앞에 0을 붙여 월을 숫자로 표시합니다.(예: 01-12). m이 h 또는 hh 바로 뒤에 오면 월이 아니라 분을 표시합니다.
mmm	월을 약어로 표시합니다.(예: Jan - Dec).
mmmm	월 명칭을 원래대로 표시합니다.(예: January-December).
oooo	mmmm과 같지만 문자열의 지역화된 버전입니다.
q	연도의 분기를 숫자로 표시합니다.(예: 1 - 4).
y	한 해를 기준으로 날짜를 표시합니다.(예: 1 - 366).
yy	연도를 2자릿수로 표시합니다.(예: 00 - 99).
yyyy	연도를 4자릿수로 표시합니다.(예: 100 - 9999).
h	앞에 0을 붙이지 않고 시간을 숫자로 표시합니다.(예: 0 - 23).
Hh	앞에 0을 붙여 시간을 숫자로 표시합니다.(예: 00 - 23).
N	앞에 0을 붙이지 않고 분을 숫자로 표시합니다.(예: 0 - 59).
Nn	앞에 0을 붙여 분을 숫자로 표시합니다.(예: 00 - 59).
S	앞에 0을 붙이지 않고 초를 숫자로 표시합니다.(예: 0 - 59).
Ss	앞에 0을 붙여 초를 숫자로 표시합니다.(예: 00 - 59).
t t t t t	시간을 사용자 시스템에서 인식하는 시간 형식으로 정의된 시간 구분 기호를 사용해서 형식화된 완전한 형태의 시간(시, 분, 초 포함)으로 표시합니다. 결과값이 0:00부터 10:00사이(오전/오후)이고 소수점 앞 0 옵션이 선택되어 있으면 1시부터 9시 사이의 시간 값 앞에 0이 붙습니다. 기본 시간 형식은 h:mm:ss입니다.
AM/PM	12시간 시계 사용. 오전 시간이면 AM(오전)이 시간과 함께 표시되고 오후 시간이면 PM(오후)이 시간과 함께 표시됩니다.
am/pm	12시간 시계 사용. 오전 시간이면 am(오전)이 시간과 함께 표시되고 오후 시간이면 pm(오후)이 시간과 함께 표시됩니다.
A/P	12시간 시계 사용. 오전 시간이면 A(오전)가 시간과 함께 표시되고 오후 시간이면 P(오후)가 시간과 함께 표시됩니다.
a/p	12시간 시계 사용. 오전 시간이면 a(오전)가 시간과 함께 표시되고 오후 시간이면 p(오후)가 시간과 함께 표시됩니다.
AMPM	12시간 시계를 사용. 사용자 시스템에서 정의된 대로 오전 문자열 리터럴을 오전 시간인 경우 표시. 시간이 오후인 경우 오후 문자열을 사용자 시스템에서 정의된 대로 표시. 오전 오후는 대/소문자 구분이 없으나 표시되는 문자열은 사용자 시스템 설정과 일치하게 나타납니다. 기본 형식은 오전/오후입니다.


사용자 정의 날짜/시간 형식 예제

아래 예제는 1958년 12월 7일을 표시한 사용자 정의 날짜/시간 형식입니다.

형식	표시
m/d/yy	12/7/58
d-mmm	7-Dec
d-mmmm-yy	7-December-58
d mmmm	7 December
mmmm yy	December 58
hh:mm AM/PM	08:50 PM
h:mm:ss a/p	8:50:35 p
h:mm	20:50
h:mm:ss	20:50:35
m/d/yy h:mm	12/7/58 20:50


사용자 정의 문자열 형식(Format 함수)

아래 문자를 사용해 문자열 Format 식을 만들 수 있습니다.

문자	설명
@	문자 자리 표시자로 문자 또는 공백을 표시합니다. 문자열의 Format 식에서 기호(@)가 나타나는 자리에 문자가 있을 경우 그대로 표시하고 그 외의 경우에는 그 자리에 공백을 표시합니다. 자리 표시자는 오른쪽에서 왼쪽으로 채워집니다. 단 형식 문자열에 느낌표(!)가 있을 경우에는 반대로 채워집니다.
&	문자 자리 표시자로 문자를 표시하거나 아무것도 표시하지 않습니다. 문자열에서 앰퍼샌트(&) 기호가 나타나는 자리에 문자가 있을 경우 그대로 표시하고 없으면 아무것도 표시하지 않습니다. 자리 표시자는 오른쪽에서 왼쪽으로 채워집니다. 단 형식 문자열에 느낌표(!)가 있을 경우에는 반대로 채워집니다.
<	강제로 소문자를 표시합니다. 모든 문자를 소문자로 표시합니다.
>	강제로 대문자를 표시합니다. 모든 문자를 대문자로 표시합니다.
!	자리 표시자 안에서 왼쪽부터 오른쪽으로 채워지게 합니다. 오른쪽에서 왼쪽으로 채워지는 것이 기본 원칙입니다.


다른 문자열 값에 대한 여러 형식(Format 함수)

문자열의 Format 식은 세미콜론(;)으로 나누어진 한 개 또는 두 개의 부분을 가질 수 있습니다.

사용 부분	결과
한 부분만 사용	형식은 모든 문자열 데이터에 적용됩니다.
두 부분	첫 부분은 문자열 정보에 둘째 부분은 Null 값과 길이가 0인 문자열("") 에 적용됩니다.


Hex 함수

숫자의 16진수 값을 나타내는 String 값을 반환합니다.

구문

Hex(number)

필수 요소인 number 인수는 유효한 수식 또는 문자식입니다.

참고

number가 정수가 아니면 가까운 정수로 반올림한 다음 계산됩니다.

number 값	반환되는 Hex값
Null	Null
Empty	영(0)
그 이외의 수	최대 8자리의 16진수
유효한 범위 내의 숫자 앞에 &H를 붙이면 16진수 숫자를 직접 지정할 수 있습니다. 예를 들어 &H10은 십진수 16을 16진수로 표현한 것입니다.


InStr 함수

한 문자열 안에 특정 문자열이 처음으로 나타난 위치를 지정하는 Variant(Long) 값을 반환합니다.

구문

InStr ([start, ]string1, string2[, compare])

InStr 함수 구문은 다음과 같은 인수로 되어 있습니다.

구성 요소	설명
start	선택적인 요소. 검색할 때 시작 위치를 의미하는 수식입니다. 지정되지 않으면 첫 문자에서 검색을 시작합니다. start가 Null값을 포함하면 오류가 발생하고 Compare 값이 지정되면 start 인수는 필수 인수입니다.
String1	필수적인 요소. 검색되는 문자식
String2	필수적인 요소. 찾을 문자식
Compare	선택적인 요소. 문자열 비교 형식을 지정합니다. Compare 값이 Null이면 오류가 발생하고 Compare 값이 지정되지 않으면 Option Compare 설정값에 따라 비교 형식이 결정됩니다. 비교에서 로케일에 종속하는 규칙을 사용하려면 유효한 LCID(LocaleID)를 지정합니다.
설정

compare 인수 설정은 아래와 같습니다.

상수	값	설명
vbUseCompareOption	-1	Option Compare 문 설정을 사용하여 비교합니다.
vbBinaryCompare	0	이진 비교를 수행합니다.
vbTextCompare	1	텍스트를 비교합니다.
vbDatabaseCompare	2	Microsoft Access 전용. 데이터베이스의 정보를 기반으로 비교를 수행합니다.
반환값

조건	InStr 반환값
string1이 길이가 0일 경우	0
string1이 Null일 경우	Null
string2가 길이가 0일 경우	start
string2가 Null일 경우	Null
string2가 발견되지 않은 경우	0
string2가 string1에서 발견되는 경우	일치된 지점의 위치
start > string2	0
참고

InStrB 함수는 문자열 내에 포함된 바이트 데이터에 사용됩니다. InStrB 함수는 한 문자열 내의 특정 문자열의 첫 발생 문자 지점을 반환하지 않고 바이트 위치를 반환합니다.


LCase 함수

소문자로 변환된 String 값을 반환합니다.

구문

LCase(string)

필수 요소인 string 인수는 유효한 문자식입니다. string에 Null값이 포함되면 Null이 반환됩니다.

참고

대문자만 소문자로 변환합니다. 소문자와 글자가 아닌 문자는 변환하지 않습니다.


Left 함수

문자열 왼쪽부터 지정된 수 만큼의 문자를 포함하는 Variant(String) 값을 반환합니다.

구문

Left(string, length)

Left 함수 구문은 다음과 같은 명명된 인수로 되어 있습니다.

구성 요소	설명
string	필수적인 요소. 왼쪽 문자들이 반환되는 문자식입니다. string에 Null이 포함되면 Null이 반환됩니다.
l_ength	필수적인 요소. Variant(Long). 반환할 문자의 수를 지정하는 수식이 0일 경우 길이가 0인 문자열("")이 반환됩니다. String의 문자 수와 같거나 클 경우 문자열 전부가 반환됩니다.
참고

string내의 문자 수를 파악하기 위해서는 Len 함수를 사용합니다.

메모   문자열 내에 포함된 바이트 데이터의 경우 LeftB 함수를 사용하십시오. 반환할 문자 수를 지정하는 대신 length는 바이트 수를 지정합니다.


Len 함수

문자열 내의 문자 수 또는 변수를 저장하는 데 필요한 바이트 수를 포함하는 Long 값을 반환합니다.

구문

Len(string | varname)

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

구성 요소	설명
string	모든 유효한 문자식. string이 Null 값을 포함하면 Null이 반환됩니다.
Varname	모든 유효한 변수 이름. varname이 Null값을 포함하면 Null이 반환됩니다. varname이 Variant 값이면 Len 함수는 이것을 String 값으로 간주하고 항상 포함하고 있는 문자 수를 반환합니다.
참고

두 개의 가능한 인수 중에 단 한 개만 지정되어야 합니다. 사용자 정의 형식의 경우 Len함수는 파일로 저장될 때의 크기를 반환합니다.

메모   2바이트 문자 집합(DBCS) 언어에서처럼 LenB 함수를 문자열에 포함된 바이트 데이터와 함께 사용하십시오. 이 함수는 문자열 내의 문자 수를 반환하지 않고 바이트 수를 반환합니다. 사용자 정의 형식의 경우 LenB 함수는 요소 사이의 패딩을 포함하여 크기 메모리 적재 크기를 반환합니다. LenB 함수를 사용하는 예제 코드를 보려면 예제 항목에서 둘째 예제를 참조하십시오.

메모   Len 함수는 사용자 정의 데이터 형식 내의 가변 길이 문자열에 대해서는 저장하는 데 실제로 필요한 바이트 수를 제대로 파악하지 못할 수 있습니다.


LSet 문

한 문자열 변수 내의 문자열을 왼쪽으로 맞추거나 사용자 정의 형식의 변수를 다른 사용자 정의 형식의 변수로 복사하는데 사용됩니다.

구문

LSet stringvar = string

LSet varname1 = varname2

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

구성 요소	설명
stringvar	필수적인 요소. 문자열 변수 이름
string	필수적인 요소. stringvar 내에서 왼쪽으로 맞추어질 문자식
varname1	필수적인 요소. 복사가 이루어질 사용자 정의 형식의 변수 이름
varname2	필수적인 요소. 복사될 사용자 정의 형식의 변수 이름
참고

LSet은 stringvar 내에서 남은 여분의 문자들을 공백으로 바꿉니다.

string이 stringvar보다 길면 Lset 함수는 가장 왼쪽에 있는 문자만 stringvar로 옮깁니다.(stringvar길이 만큼).

경고   LSet 함수를 사용해서 한 종류의 사용자 정의 형식의 변수를 다른 종류의 사용자 정의 형식의 변수로 복사하는 것은 권장할 만하지 않습니다. 한 데이터 형식 정보를 다른 데이터 형식에게 할당된 메모리 공간에 복사하는 것은 예상치 못한 결과를 초래할 수 있기 때문입니다.

한 사용자 정의 형식에서 다른 수형으로 변수를 복사하면 한 변수의 이진 데이터는 다른 변수의 메모리 공간에 데이터 형식에서 지정된 각 요소들에 상관없이 복사됩니다.


LTrim, RTrim, Trim 함수

지정된 문자열의 왼쪽에 공백이 없는(LTrim), 오른쪽에 공백이 없는(RTrim), 또는 양쪽 끝에 공백이 없는(Trim) 문자열의 복사본을 포함하는 Variant(String) 값을 반환합니다.

구문

LTrim(string)

RTrim(string)

Trim(string)

필수 요소인 string 인수에는 모든 유효한 문자식이 사용됩니다. string이 Null 값을 포함하면 Null이 반환됩니다.


Mid 함수

한 문자열에서 지정된 수의 문자를 포함하는 Variant(String) 값을 반환합니다.

구문

Mid(string, start[, length])

Mid 함수 구문은 다음과 같은 명명된 인수로 되어 있습니다.

구성 요소	설명
string	필수적인 요소. 문자들이 반환되는 문자식. string에 Null이 포함되면 Null 이 반환됩니다.
start	필수적인 요소. Long. string에서 취할 부분이 시작하는 문자 위치입니다. start 값이 string 내 문자 수보다 크면 Mid 함수는 길이가 0인 문자열("")을 반환합니다.
length	선택적인 요소. Variant(Long). 반환할 문자 수. 지정되지 않거나 글에서 length보다 문자 수가 적으면(start의 문자 포함) start 위치부터 문자열 끝까지 모든 문자들이 반환됩니다.
참고

string에 있는 문자 수를 지정하기 위해 Len 함수를 사용합니다.

메모   2바이트 문자 집합 언어에서처럼 MidB 함수를 문자열 내의 바이트 데이터와 함께 사용하십시오. 인수는 문자 수를 지정하는 대신 바이트 수를 지정합니다. MidB 함수를 사용하는 예제 코드를 보려면 예제 항목에서 둘째 예제를 참조하십시오.


Mid 문

Variant(String) 변수에서 지정된 수의 문자를 다른 문자열의 문자로 바꿉니다.

구문

Mid(stringvar, start[, length]) = string

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

구성 요소	설명
stringvar	필수적인 요소. 조작할 문자열 변수의 이름
start	필수적인 요소. Variant(Long). 문자 바꾸기가 시작되는 stringvar 내의 위치
length	선택적인 요소. Variant(Long). 대체할 문자 수. 지정되지 않으면 string 전부가 사용됩니다.
string	필수적인 요소. Stringvar의 일부를 대체하는 문자식
참고

바뀌는 문자 수는 항상 stringvar 내의 문자 수보다 적거나 같습니다.

메모   MidB 문을 문자열 내의 바이트 데이터와 함께 사용하십시오. MidB 문에서start는 stringvar 내에서 바꾸기가 시작되는 바이트 위치를 지정하며 length는 바꿀 바이트 수를 지정합니다.


Oct 함수

숫자의 8진수 값을 나타내는 Variant(String) 값을 반환합니다.

구문

Oct(number)

필수 요소인 number 인수는 모든 유효한 수식 또는 문자식입니다.

참고

number가 정수가 아니면 가까운 정수로 반올림한 다음 계산됩니다.

Number	Oct 반환값
Null	Null
Empty	영(0)
그 이외의 수	최대 11자리의 8진수
유효한 범위 내의 숫자 앞에 &O를 붙여 8진수를 직접 지정할 수 있습니다. 예를 들어 &O10은 10진수 8의 8진수 표기법입니다.


Right 함수

문자열의 오른쪽으로부터 지정된 수의 문자를 포함하는 Variant(String) 값을 반환합니다.

구문

Right(string, length)

Right 함수 구문은 다음과 같은 명명된 인수로 되어 있습니다.

구성 요소	설명
string	필수적인 요소. 가장 오른쪽에 있는 문자가 반환되는 문자식. string에 Null값이 있으면 Null이 반환됩니다.
length	필수적인 요소. Variant(Long). 반환할 문자 수를 지정하는 수식. 0이면 길이가 0인 문자열("")이 반환됩니다. String내의 문자 수보다 크거나 같으면 문자열 전부가 반환됩니다.
참고

string에 있는 문자 수를 지정하려면 Len 함수를 사용합니다.

메모   RightB 함수를 문자열 내의 바이트 데이터와 함께 사용하십시오. length는 반환할 문자 수 대신 바이트 수를 지정합니다.


RSet 문

문자열 변수 내의 한 문자열을 오른쪽으로 정렬합니다.

구문

RSet stringvar = string

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

구성 요소	설명
stringvar	필수적인 요소. 문자열 변수의 이름
string	필수적인 요소. stringvar 내에 오른쪽으로 정렬될 문자식
참고

stringvar가 string보다 길면 RSet 함수는 stringvar 내에 남는 문자를 공백으로 바꾼 다음 시작 부분으로 이동합니다.

메모   RSet 함수는 사용자 정의 형식과 함께 사용할 수 없습니다.


Space 함수

지정된 수의 공백으로 구성된 Variant(String) 값을 반환합니다.

구문

Space(number)

필수 요소인 number 인수는 문자열 내에서 원하는 공백의 수입니다.

참고

Space 함수는 출력을 형식화하거나 고정된 크기의 문자열을 지우는 데 유용합니다.


Str 함수

숫자의 Variant(String) 값을 반환합니다.

구문

Str(number)

필수 요소인 number 인수는 임의의 유효한 수식을 값으로 하는 Long 값입니다.

참고

숫자가 문자열로 변환되면 number의 부호를 표시하기 위해 문자열 앞에 한 개의 공백이 예약됩니다. number가 양수이면 반환된 문자열에 선행 공백이 포함되고 더하기 부호가 함축되어 있습니다.

숫자값을 날짜, 시간, 통화 단위나 다른 사용자 정의 형식으로 형식화하려면 Format 함수를 사용합니다. Str 함수와 다르게 Format 함수는 number의 부호를 표시하기 위한 선행 공백을 포함하지 않습니다.

메모   Str 함수는 마침표(.)만 유효한 소수 구분 기호로 인식합니다. 다른 소수 구분 기호가 사용되면(예: 다국적 응용 프로그램) CStr 함수를 사용해서 숫자를 문자열로 변환합니다.


StrComp 함수

문자열 비교의 결과를 의미하는 Variant(Integer) 값을 반환합니다.

구문

StrComp(string1, string2[, compare])

StrComp 함수 구문은 다음과 같은 명명된 인수로 되어 있습니다.

구성 요소	설명
string1	필수적인 요소. 모든 유효한 문자식
string2	필수적인 요소. 모든 유효한 문자식
compare	선택적인 요소. 문자열 비교 형식을 지정합니다. Compare 인수가 Null이면 오류가 발생하고 compare 값이 지정되지 않으면 Option Compare 설정 값에 따라 비교 형식이 결정됩니다.
설정

compare 인수 설정은 아래와 같습니다.

상수	값	설명
vbUseCompareOption	-1	Option Compare 문 설정을 사용하여 비교합니다.
vbBinaryCompare	0	이진 비교를 수행합니다.
vbTextCompare	1	텍스트를 비교합니다.
vbDatabaseCompare	2	Microsoft Access 전용. 데이터베이스의 정보를 기반으로 비교를 수행합니다.
반환값

StrComp 함수는 아래와 같은 반환값으로 되어 있습니다.

다음 경우	StrComp 반환값
string1이 string2보다 적은 경우	-1
string1이 string2와 같은 경우	0
string1이 string2보다 큰 경우	1
string1 또는 string2가 Null인 경우	Null


StrConv 함수

지정된 대로 변환된 Variant(String) 값을 반환합니다.

구문

StrConv(string, conversion, LCID)

StrConv 함수 구문은 다음과 같은 명명된 인수로 되어 있습니다.

구성 요소	설명
string	필수적인 요소. 변환될 문자식
conversion	필수적인 요소. Integer. 수행될 변환 형식을 지정하는 값들의 합
LCID	선택적인 요소. 시스템 LocaleID와 LocaleID가 다르면 LocaleID입니다. 기본값은 시스템 LocaleID입니다.
설정

conversion 인수 설정은 아래와 같습니다.

상수	값	설명
vbUpperCase	1	문자열을 대문자로 변환합니다.
vbLowerCase	2	문자열을 소문자로 변환합니다.
vbProperCase	3	문자열 내 모든 단어의 첫 글자를 대문자로 변환합니다.
vbWide*	4*	1바이트 문자를 2바이트 문자로 변환합니다.
vbNarrow*	8*	2바이트 문자를 1바이트 문자로 변환합니다.
vbKatakana**	16**	일본 히라가나 문자를 가다가나 문자로 변환합니다.
vbHiragana**	32**	일본 가다가나 문자를 히라가나 문자로 변환합니다.
vbUnicode	64	시스템의 기본 코드 페이지를 사용하여 문자열을 Unicode로 변환합니다. 매킨토시에서는 사용할 수 없습니다.
vbFromUnicode	128	Unicode 문자열을 시스템의 기본 코드 페이지로 변환합니다. 매킨토시에서는 사용할 수 없습니다.
*	이 사항은 극동 아시아 지역의 로케일에만 해당됩니다.

**	이 사항은 일본에만 해당됩니다.

메모   이 상수는 Visual Basic for Applications에 지정되어 있습니다. 따라서 사용자의 코드 내 어디서나 사용될 수 있습니다. 상호 배타적인 경우(예: vbUnicode + vbFromUnicode)만 아니면 대부분 통합될 수 있습니다.(예: vbUpperCase + vbWide). vbWide, vbNarrow, vbKatakana, vbHiragana 상수는 그들이 적용될 수 없는 로케일에서 사용되면 런타임 오류가 발생합니다.

다음은 적절한 대/소문자 구분을 위해 사용할 수 있는 유효한 단어 구분 기호입니다. Null(Chr$(0)), 수평 탭(Chr$(9)), 라인 피드(Chr$(10)), 수직 탭(Chr$(11)), 폼 피드(Chr$(12)), 캐리지 리턴(Chr$(13)), 공백(SBCS)(Chr$(32)). 나라마다 DBCS에 대한 실제 공백값이 다릅니다.

참고

ANSI 형식에서 Byte 배열을 문자열로 변환하려면 StrConv 함수를 사용하고 Unicode 형식에서 이런 배열을 변환하려면 지정문을 사용합니다.


String 함수

지정된 길이의 반복되는 문자열을 포함하는 Variant(String) 값을 반환합니다.

구문

String(number, character)

String 함수 구문은 다음과 같은 명명된 인수로 되어 있습니다.

구성 요소	설명
number	필수적인 요소. Long. 반환되는 문자열의 길이. number에 Null 값이 있으면 Null이 반환됩니다.
character	필수적인 요소. Variant. 문자를 지정하는 문자 코드나 반환 문자열을 구성하는 첫 문자로 사용되는 문자식. character에 Null 값이 있으면 Null이 반환됩니다.
참고

255보다 큰 수를 character값으로 지정하면 String 함수는 다음 공식을 사용해서 그 수를 유효한 문자 코드로 변환합니다.

character Mod 256


UCase 함수

대문자로 변환된 지정된 문자열을 포함하는 Variant(String) 값을 반환합니다.

구문

UCase(string)

필수 요소인 string 인수는 모든 유효한 문자식입니다. string에 Null이 존재하면 Null 값이 반환됩니다.

참고

소문자만 대문자로 변환됩니다. 모든 대문자와 글자가 아닌 문자는 변환되지 않습니다.


작업에 따른 키워드

항목	설명
배열	배열 작성, 정의, 사용
컴파일러 지시문	컴파일러 동작 제어
제어 흐름	프로시저 흐름에 대한 루프 실행과 제어
변환	숫자와 데이터 형식 변환
데이터 형식	데이터 형식과 Variant 하위 형식
날짜와 시간	날짜식과 시간식 변환과 사용
디렉터리와 파일	파일 시스템 제어와 파일 처리
오류	오류값 포착과 반환
재무	회계 계산 수행
입출력	입력 수신과 출력 표시 혹은 인쇄
수학	삼각 계산과 기타 수학 계산 수행
기타	다른 응용 프로그램 시작과 이벤트 처리
연산자	식 비교와 연산 비교
문자열 조작	문자열과 문자열 형식 데이터 조작
변수와 상수	변수와 상수에 대한 선언과 정의


배열 키워드 요약

동작	키워드
배열 확인	IsArray
배열 작성	Array
기본값의 최저값 변경	Option Base
배열 선언과 초기화	Dim, Private, Public, ReDim, Static
배열의 한계 알아내기	LBound, UBound
배열 재초기화	Erase, ReDim


Collection 개체 키워드 요약

동작	키워드
Collection 개체 작성	Collection
개체를 컬렉션에 추가	Add
개체를 컬렉션에서 제거	Remove
컬렉션에서 항목 참조	Item


컴파일러 지시문 키워드 요약

동작	키워드
컴파일러 상수 정의	#Const
선택된 코드 블록 컴파일	#If...Then...#Else


제어 흐름 키워드 요약

동작	키워드
분기	GoSub...Return, GoTo, On Error, On...GoSub, On...GoTo
프로그램 종료 혹은 중지	DoEvents, End, Exit, Stop
루프	Do...Loop, For...Next, For Each...Next, While...Wend, With
결정	Choose, If...Then...Else, Select Case, Switch
프로시저 사용	Call, Function, Property Get, Property Let, Property Set, Sub


변환 키워드 요약

동작	키워드
ANSI 값을 문자열로	Chr
문자열을 소문자 또는 대문자로	Format, LCase, Ucase
날짜를 일련 번호로	DateSerial, DateValue
10진수를 다른 진수로	Hex, Oct
숫자를 문자열로	Format, Str
특정 데이터 형식을 다른 데이터 형식으로	CBool, CByte, CCur, CDate, CDbl, CDec, CInt, CLng, CSng, CStr, CVar, CVErr, Fix, Int
날짜를 일, 월, 주, 년으로	Day, Month, Weekday, Year
시간을 시, 분, 초로	Hour, Minute, Second
문자열을 ASCII 값으로	Asc
문자열을 숫자로	Val
시간을 일련 번호로	TimeSerial, TimeValue


데이터 형식 키워드 요약

동작	키워드
데이터 형식 간 변환	CBool, CByte, CCur, CDate, CDbl, CDec, CInt, CLng, CSng, CStr, CVar, CVErr, Fix, Int
고유 데이터 형식 설정	Boolean, Byte, Currency, Date, Double, Integer, Long, Object, Single, String, Variant (기본값)
데이터 형식 확인	IsArray, IsDate, IsEmpty, IsError, IsMissing, IsNull, IsNumeric, IsObject


날짜와 시간 키워드 요약

동작	키워드
현재의 날짜 또는 시간 얻기	Date, Now, Time
데이터 계산 수행	DateAdd, DateDiff, DatePart
날짜 반환	DateSerial, DateValue
시간 반환	TimeSerial, TimeValue
날짜 또는 시간 설정	Date, Time
프로세스 시간 측정	Timer


디렉터리와 파일 키워드 요약

동작	키워드
디렉터리 또는 폴더 변경	ChDir
드라이브 변경	ChDrive
파일 복사	FileCopy
디렉터리 또는 폴더 작성	MkDir
디렉터리 혹은 폴더 제거	RmDir
파일, 디렉터리, 폴더의 이름 변경	Name
현재 경로 반환	CurDir
파일 날짜/시간 스탬프	FileDateTime
파일, 디렉터리, 레이블 속성 반환	GetAttr
파일 길이 반환	FileLen
파일 이름 또는 볼륨 레이블 반환	Dir
파일에 대한 속성 정보 설정	SetAttr


오류 키워드 요약

동작	키워드
런타임 오류 발생	Clear, Error, Raise
오류 메시지 얻기	Error
오류 정보 제공	Err
Error variant 반환	CVErr
실행 모드에서 오류 포착	On Error, Resume
형식 확인	IsError


재무 키워드 요약

동작	키워드
감가상각 계산	DDB, SLN, SYD
미래 가치 계산	FV
이자율 계산	Rate
내부 수익률 계산	IRR, MIRR
기간 수 계산	NPer
지급액 계산	IPmt, Pmt, PPmt
현재 가치 계산	NPV, PV


입출력 키워드 요약

동작	키워드
파일에 액세스 또는 파일 작성	Open
파일 닫기	Close, Reset
출력 모양 제어	Format, Print, Print #, Spc, Tab, Width #
파일 복사	FileCopy
파일에 대한 정보 얻기	EOF, FileAttr, FileDateTime, FileLen, FreeFile, GetAttr, Loc, LOF, Seek
파일 관리	Dir, Kill, Lock, Unlock, Name
파일에서 읽어오기	Get, Input, Input #, Line Input #
파일의 길이 반환	FileLen
파일 속성 설정 또는 얻기	FileAttr, GetAttr, SetAttr
파일에서 읽고 쓰는 위치 설정	Seek
파일에 쓰기	Print #, Put, Write #


수학 키워드 요약

동작	키워드
삼각 함수 유도	Atn, Cos, Sin, Tan
일반 계산	Exp, Log, Sqr
난수 발생	Randomize, Rnd
절대값 얻기	Abs
식의 부호 얻기	Sgn
숫자 변환 수행	Fix, Int


기타 키워드 요약

동작	키워드
보류 중인 이벤트 처리	DoEvents
다른 프로그램 실행	AppActivate, Shell
키 누름을 응용 프로그램에게 전송	SendKeys
경고음 소리내기	Beep
시스템	Environ
명령줄 문자열 제공	Command
자동화	CreateObject, GetObject
색	QBColor, RGB


연산자 키워드 요약

동작	키워드
산술	^, � , *, /, \, Mod, +, &, =
비교	=, <>, <, >, <=, >=, Like, Is
논리 연산	Not, And, Or, Xor, Eqv, Imp


레지스트리 키워드 요약

동작	키워드
프로그램 설정 삭제	DeleteSetting
프로그램 설정 읽기	GetSetting, GetAllSettings
프로그램 설정 저장	SaveSetting


문자열 조작 키워드 요약

동작	키워드
두 문자열 비교	StrComp
문자열 변환	StrConv
소문자 또는 대문자로 변환	Format, Lcase, Ucase
반복 문자의 문자열 작성	Space, String
문자열의 길이 알아내기	Len
문자열 서식 지정	Format
문자열 정렬	LSet, Rset
문자열 조작	InStr, Left, LTrim, Mid, Right, RTrim, Trim
문자열 비교 규칙 설정	Option Compare
ASCII 값과 ANSI 값을 가지고 작업	Asc, Chr


변수와 상수 키워드 요약

동작	키워드
값 지정	Let
변수 또는 상수 선언	Const, Dim, Private, Public, New, Static
모듈을 private로 선언	Option Private Module
Variant에 대한 정보 얻기	IsArray, IsDate, IsEmpty, IsError, IsMissing, IsNull, IsNumeric, IsObject, TypeName, VarType
현재 개체 참조	Me
명확한 변수 선언 요구	Option Explicit
기본 데이터 형식 설정	Deftype


잡을수 있는 오류

응용 프로그램이 실행중일 때 잡을 수 있는 오류가 발생합니다. 이 오류 중 일부 오류는 개발 과정에서 발생하고 또 어떤 오류는 컴파일 시간에서 발생합니다. On Error 문과 Err 개체를 사용하여 잡을 수 있는 오류를 검사하고 오류에 응답할 수 있습니다. 1부터 1000까지의 오류 번호 중 아직 사용하지 않는 오류 번호는 Visual Basic이 예약하여 나중에 사용합니다.

코드	메시지
3	Return에 GoSub가 필요합니다
5	프로시저 호출이 잘못되었습니다
6	숫자가 너무 큽니다
7	메모리가 부족합니다
9	아래 첨자 사용이 잘못되었습니다
10	이 배열은 고정되었거나 일시적으로 잠금 상태입니다
11	0으로 나누었습니다
13	형식이 일치하지 않습니다
14	문자열 공간이 부족합니다
16	식이 너무 복잡합니다
17	요청된 작업을 수행할 수 없습니다
18	사용자 인터럽트가 발생하였습니다
20	오류가 없는 Resume입니다
28	스택 공간이 부족합니다
35	Sub, Function 또는 Property가 정의되지 않았습니다
47	코드 리소스나 DLL 응용 프로그램 클라이언트가 너무 많습니다
48	코드 리소스나 DLL을 불러오는 중 오류가 발생하였습니다
49	코드 리소스나 DLL 호출 규정이 잘못되었습니다
51	내부 오류입니다
52	파일 이름 또는 번호가 잘못되었습니다
53	파일을 찾을 수 없습니다
54	파일 모드가 잘못되었습니다
55	파일이 이미 열려있습니다
57	장치 입출력 오류입니다
58	파일이 이미 존재합니다
59	레코드 길이가 잘못되었습니다
61	디스크에 여유 공간이 없습니다
62	파일 끝을 넘는 입력값입니다
63	레코드 번호가 잘못되었습니다
67	파일이 너무 많습니다
68	사용할 수 없는 장치입니다
70	사용 권한이 없습니다
71	디스크가 준비되지 않았습니다
74	다른 드라이브로 이름을 변경할 수 없습니다
75	경로/파일 액세스 오류입니다
76	경로를 찾을 수 없습니다
91	개체 변수 또는 With 블록 변수가 설정되어 있지 않습니다
92	For 루프를 초기화하지 않았습니다
93	패턴 문자열이 잘못되었습니다
94	Null의 사용이 잘못되었습니다
97	클래스 정의 인스턴스가 아닌 개체에 대한 Friend 프로시저를 호출할 수 없습니다
98	속성이나 메서드 호출은 인수나 반환값으로 전용 개체에 대한 참조를 포함할 수 없습니다
298	시스템 리소스 또는 DLL을 로드할 수 없습니다
320	파일 이름에 문자 입출력 장치 이름을 사용할 수 없습니다
321	파일 형식이 잘못되었습니다
322	필요한 임시 파일을 작성할 수 없습니다
325	리소스 파일에 잘못된 형식이 있습니다
327	명명된 데이터 값을 찾을 수 없습니다
328	잘못된 매개 변수입니다. 배열을 기록할 수 없습니다
335	시스템 레지스트리에 액세스할 수 없습니다
336	ActiveX 구성 요소가 바르게 등록되지 않았습니다
337	ActiveX 구성 요소를 찾을 수 없습니다
338	ActiveX 구성 요소 실행이 잘못되었습니다
360	이미 로드한 개체입니다
361	이 개체를 로드하거나 언로드할 수 없습니다
363	지정된 ActiveX 컨트롤을 찾을 수 없습니다
364	개체가 언로드되었습니다
365	이 구문 내에서는 언로드할 수 없습니다
368	지정된 파일은 더 이상 유효하지 않습니다. 이 프로그램은 이후 버전을 필요로 합니다
371	지정된 개체는 Show에 대한 소유 폼으로 사용될 수 없습니다
380	속성 값이 잘못되었습니다
381	속성 배열 인덱스가 잘못되었습니다
382	Property Set은 실행 모드에서는 작동할 수 없습니다
383	Property Set은 읽기 전용 속성으로 사용될 수 없습니다
385	속성 배열 인덱스가 필요합니다
387	Property Set이 허가되지 않았습니다
393	Property Get은 실행 모드에서 실행할 수 없습니다
394	Property Get을 쓰기 전용 속성에 실행할 수 없습니다
400	폼이 이미 표시되어 있으므로 모달로 표시할 수 없습니다
402	먼저 맨 위의 모달 폼을 닫아야 합니다
419	개체 사용 권한이 없습니다
422	속성을 찾을 수 없습니다
423	속성이나 메서드를 찾을 수 없습니다
424	개체가 필요합니다
425	개체 사용이 잘못되었습니다
429	ActiveX 구성 요소는 개체를 만들거나 이 개체에 참조 값을 반환할 수 없습니다
430	클래스는 자동화를 지원하지 않습니다
432	자동화 작업 중 파일 이름이나 클래스 이름을 찾을 수 없습니다
438	개체가 이 속성 또는 메서드를 지원하지 않습니다
440	자동화 오류입니다
442	원격 프로세스를 위한 형식 라이브러리나 개체 라이브러리 속성 연결이 소실되었습니다
443	자동화 개체가 기본값을 갖고 있지 않습니다
445	개체는 이 기능을 지원하지 않습니다
446	개체는 명명된 인수를 지원하지 않습니다
447	개체는 현재의 로케일 설정을 지원하지 않습니다
448	명명된 인수를 찾을 수 없습니다
449	선택적 인수가 아니거나 속성 지정이 잘못되었습니다
450	인수의 수나 속성 지정이 잘못되었습니다
451	컬렉션이 아닌 개체입니다
452	서수가 잘못되었습니다
453	지정한 DLL 함수 코드 리소스를 찾을 수 없습니다
454	코드 리소스를 찾을 수 없습니다
455	코드 리소스 잠금 시 오류가 발생하였습니다
457	이 키는 컬렉션의 요소와 이미 연결되어 있습니다
458	변수가 Visual Basic에서 지원하지 않는 형식을 사용하고 있습니다
459	이 구성 요소는 이벤트 집합을 지원하지 않습니다
460	클립보드 형식이 잘못되었습니다
461	메서드나 데이터 구성원을 찾을 수 없습니다
462	원격 서버 시스템이 없거나 사용할 수 없습니다
463	로컬 시스템에 등록되지 않은 클래스입니다
480	AutoRedraw 이미지를 만들 수 없습니다
481	그림이 잘못되었습니다
482	프린터 오류입니다
483	프린터 드라이버가 지정된 속성을 지원하지 않습니다
484	시스템의 프린터 정보를 읽으들이는 데 문제가 발생하였습니다. 프린터 설정이 바르게 되었는지 확인하십시오
485	그림 형식이 잘못되었습니다
486	이 프린터로는 폼 이미지를 인쇄할 수 없습니다
520	클립보드를 비울 수 없습니다
521	클립보드를 열 수 없습니다
735	파일을 TEMP 디렉터리에 저장할 수 없습니다
744	찾는 텍스트가 없습니다
746	바꿀 문자열이 너무 깁니다
31001	메모리가 부족합니다
31004	개체가 없습니다
31018	클래스가 설정되지 않았습니다
31027	개체를 활성화할 수 없습니다
31032	포함 개체를 만들 수 없습니다
31036	파일 저장 오류입니다
31037	파일 로드 오류입니다


AddressOf 연산자

인수 목록의 해당 위치에 함수 포인터가 있기를 기대하는 API 프로시저에 전달될 프로시저의 주소를 지정하는 단항 연산자입니다.

구문

AddressOf procedurename

procedurename은 주소를 전달할 프로시저를 지정합니다. 그리고 호출할 프로젝트의 표준 모듈에 있는 프로시저를 표시해야 합니다.

참고

인수 목록에 프로시저 이름이 있으면 프로시저가 평가되며 프로시저가 반환하는 값의 주소가 전달됩니다. AddressOf는 프로시저의 반환값을 전달하는 것이 아니라 동적 연결 라이브러리(DLL)에 있는 Windows API 함수로 전달할 프로시저의 주소를 가집니다. 그러면 API 함수가 주소를 사용하여 콜백으로 알려진 프로세스인 Basic 프로시저를 호출합니다. AddressOf 연산자는 API 프로시저의 호출에서만 나타납니다. 그러나 포인터를 전달할 API 함수를 설명하는 Declare 문에서 프로시저의 주소 인수는 As Long로 선언되어야 합니다.

AddressOf를 사용하여 Basic 프로시저의 포인터를 전달할 수 있지만 Basic 내부에서 그러한 포인터를 통해 함수를 호출할 수는 없습니다. 예를 들어 이것은 Basic에서 기술한 클래스가 그러한 포인터를 사용하여 컨트롤러에 대한 콜백을 만들 수 없음을 의미합니다. AddressOf를 사용하여 Basic 내부의 프로시저에 대한 프로시저 포인터를 전달할 때 호출된 프로시저의 매개 변수는 As Long으로 형식이 지정되어야 합니다.

경고   함수 콜백의 개념을 완전히 이해하지 못하고 AddressOf를 사용하면 예상하지 못한 결과를 초래할 수 있습니다. Basic에서 콜백이 어떻게 작동하는 지와 함수 주소를 전달하고 있는 DLL 코드에 대해 이해해야 합니다. 프로그램이 개발 환경과 동일한 프로세스에서 실행하기 때문에 이러한 상호 동작에 대한 디버깅은 어렵습니다. 일부 경우에 시스템적인 디버깅은 불가능할 수 있습니다.

메모   Microsoft Visual C++ (또는 비슷한 도구)로 컴파일된 DLL에 사용자 자신의 콜백 함수 원형을 만들 수 있습니다. AddressOf로 작업하려면 사용자의 원형은 __stdcall 호출 규칙을 사용해야 합니다. 기본 호출 규칙(__cdecl)은 AddressOf에서 작동하지 않습니다.

콜백 호출자가 프로그램 내에 없으므로 호출자에게 콜백 프로시저에 있는 오류를 되돌려 전파하지 않는 것이 중요합니다. 콜백 프로시저의 앞 부분에 On Error Resume Next 문을 놓아 이것을 이룰 수 있습니다.


Assert 메서드

메서드가 나타나는 줄에서 조건적으로 실행을 일시 중단합니다.

구문

object.Assert booleanexpression

Assert 메서드 구문은 다음과 같은 개체 수식어와 인수로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 항상 Debug 개체임
booleanexpression	필수적인 요소. True 또는 False로 값을 평가할 식
참고

Assert 실행은 개발 환경에서만 작동합니다. 모듈이 실행 가능하게 컴파일되면 Debug 개체에서의 메서드 호출은 생략됩니다.

모든 booleanexpression은 항상 평가됩니다. 예를 들어 And 식의 첫째 부분만 False로 평가되더라도 전체 식이 평가됩니다.


Friend <키워드>
Friend

클래스 모듈이나 폼 모듈에 있는 프로시저의 정의를 수정하여 클래스 외부의 모듈에서도 프로시저를 호출할 수 있도록 만듭니다. 그러나 클래스가 정의된 프로젝트의 일부는 호출할 수 없습니다. Friend 프로시저를 표준 모듈에서 사용할 수 없습니다.

구문

[Private | Friend | Public] [Static] [Sub | Function | Property] procedurename

procedurename은 프로젝트를 볼 수 있도록 만들 프로시저 이름이며 클래스의 컨트롤러는 이 프로시저를 볼 수 없습니다.

참고

클래스에 있는 Public 프로시저는 어디서나 호출할 수 있으며 클래스 인스턴스의 컨트롤러도 호출할 수 있습니다. 프로시저를 Private로 선언하면 개체의 컨트롤러가 프로시저를 호출할 수 없을 뿐만 아니라 클래스 자체가 정의된 프로젝트 내에서 프로시저를 호출할 수도 없습니다. Friend는 프로시저를 프로젝트 전체에서 볼 수 있도록 만들지만 개체 인스턴스의 컨트롤러에서는 볼 수 없습니다. Friend는 폼 모듈이나 클래스 모듈에서만 나타날 수 있으며 변수 또는 형식을 수정할 수 없고 프로시저 이름만 수정할 수 있습니다. 클래스에 있는 프로시저는 프로젝트에 있는 다른 모든 클래스의 Friend 프로시저에 접근할 수 있습니다. Friend 프로시저는 해당 클래스의 형식 라이브러리에는 나타나지 않습니다. Friend 프로시저는 나중에 지정할 수 없습니다.


RaiseEvent 문

클래스, 폼, 문서 내부의 모듈 수준에서 선언된 이벤트를 일으킵니다.

구문

RaiseEvent eventname [(argumentlist)]

eventname은 모듈 내에서 선언된 이벤트 이름이며 Basic의 변수 이름 짓기 규칙을 따릅니다.

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

구성 요소	설명
eventname	필수적인 요소. 일으킬 이벤트 이름
argumentlist	선택적인 요소. 변수, 배열, 식의 쉼표로 구분된 목록. argumentlist는 괄호 안에 들어가야 합니다. 인수가 없으면 괄호는 삭제해야 합니다.
참고

이벤트가 발생한 모듈 내에 해당 이벤트가 선언되어 있지 않으면 오류가 발생합니다. 다음 코드는 이벤트 선언과 이벤트가 발생한 프로시저를 보여줍니다.

' 클래스 모듈의 모듈 수준에서 이벤트를 선언합니다.

Event LogonCompleted (UserName as String)

Sub

' 이벤트가 발생합니다.

RaiseEvent LogonCompleted ("AntoineJan")

End Sub

이벤트에 인수가 없는 경우(빈 괄호를 포함), RaiseEvent에서 이벤트를 실행하면 오류가 발생합니다. RaiseEvent를 사용해서는 모듈 안에 명시적으로 선언되지 않은 이벤트를 일으킬 수 없습니다. 예를 들어 폼에 Click 이벤트가 있으면 RaiseEvent를 사용하여 Click 이벤트를 일으킬 수 없습니다. 폼 모듈에서 Click 이벤트를 선언하면 폼의 Click 이벤트가 흐리게 됩니다. 이벤트를 호출하기 위한 보통 구문을 사용하여 폼의 Click 이벤트를 실행할 수 있지만 RaiseEvent 문을 사용해서는 실행할 수 없습니다.

이벤트 발생은 연결된 순서대로 완료됩니다. 이벤트가 ByRef 매개 변수를 가질 수 있기 때문에 나중에 연결한 프로세스는 이전 이벤트 처리기에서 변경된 매개 변수를 받을 수도 있습니다.


AddressOf 연산자 예제

아래 예제에서는 시스템에 있는 글꼴을 사전순으로 정렬한 글꼴 목록 상자를 가진 폼을 만듭니다.

이 예제를 실행하면 목록 상자를 가진 폼을 만듭니다. 폼의 코드는 다음과 같습니다.

Option Explicit

Private Sub Form_Load()

  Module1.FillListWithFonts List1

End Sub

아래 코드를 모듈에 넣습니다. EnumFontFamilies 함수 정의에서 세 번째 인수는 프로시저를 나타내는 Long입니다. 인수에는 프로시저가 반환하는 값이 아니라 프로시저의 주소가 들어 있어야 합니다. EnumFontFamilies에 대한 호출에서 세 번째 인수는 AddressOf 연산자가 있어야 EnumFontFamProc 프로시저의 주소를 반환합니다. 이 때 프로시저의 주소는 Windows API 함수인 EnumFontFamilies를 호출할 때 제공한 콜백 프로시저의 이름입니다. Windows는 사용자가 AddressOf EnumFontFamProc을 EnumFontFamilies로 전달할 때 시스템의 글꼴군에 대한 각 EnumFontFamProc을 호출합니다. EnumFontFamilies로 전달된 마지막 인수는 정보가 표시될 목록 상자를 지정합니다.

'Font 열거형

Public Const LF_FACESIZE = 32

Public Const LF_FULLFACESIZE = 64

Type LOGFONT

    lfHeight As Long

    lfWidth As Long

    lfEscapement As Long

    lfOrientation As Long

    lfWeight As Long

    lfItalic As Byte

    lfUnderline As Byte

    lfStrikeOut As Byte

    lfCharSet As Byte

    lfOutPrecision As Byte

    lfClipPrecision As Byte

    lfQuality As Byte

    lfPitchAndFamily As Byte

    lfFaceName(LF_FACESIZE) As Byte

End Type

Type NEWTEXTMETRIC

    tmHeight As Long

    tmAscent As Long

    tmDescent As Long

    tmInternalLeading As Long

    tmExternalLeading As Long

    tmAveCharWidth As Long

    tmMaxCharWidth As Long

    tmWeight As Long

    tmOverhang As Long

    tmDigitizedAspectX As Long

    tmDigitizedAspectY As Long

    tmFirstChar As Byte

    tmLastChar As Byte

    tmDefaultChar As Byte

    tmBreakChar As Byte

    tmItalic As Byte

    tmUnderlined As Byte

    tmStruckOut As Byte

    tmPitchAndFamily As Byte

    tmCharSet As Byte

    ntmFlags As Long

    ntmSizeEM As Long

    ntmCellHeight As Long

    ntmAveWidth As Long

End Type

' ntmFlags 필드 플래그

Public Const NTM_REGULAR = &H40&

Public Const NTM_BOLD = &H20&

Public Const NTM_ITALIC = &H1&

'  tmPitchAndFamily 플래그

Public Const TMPF_FIXED_PITCH = &H1

Public Const TMPF_VECTOR = &H2

Public Const TMPF_DEVICE = &H8

Public Const TMPF_TRUETYPE = &H4

Public Const ELF_VERSION = 0

Public Const ELF_CULTURE_LATIN = 0

'  EnumFonts 마스크

Public Const RASTER_FONTTYPE = &H1

Public Const DEVICE_FONTTYPE = &H2

Public Const TRUETYPE_FONTTYPE = &H4

Declare Function EnumFontFamilies Lib "gdi32" Alias _
 "EnumFontFamiliesA" _
 (ByVal hDC As Long, ByVal lpszFamily As String, _
 ByVal lpEnumFontFamProc As Long, LParam As Any) As Long

Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long

Declare Function ReleaseDC Lib "user32" (ByVal hWnd As Long, _
 ByVal hDC As Long) As Long

Function EnumFontFamProc(lpNLF As LOGFONT, lpNTM As NEWTEXTMETRIC, _

  ByVal FontType As Long, LParam As ListBox) As Long

Dim FaceName As String

Dim FullName As String

  FaceName = StrConv(lpNLF.lfFaceName, vbUnicode)

  LParam.AddItem Left$(FaceName, InStr(FaceName, vbNullChar) - 1)

  EnumFontFamProc = 1

End Function

Sub FillListWithFonts(LB As ListBox)

Dim hDC As Long

  LB.Clear

  hDC = GetDC(LB.hWnd)

  EnumFontFamilies hDC, vbNullString, AddressOf EnumFontFamProc, LB

  ReleaseDC LB.hWnd, hDC

End Sub


Assert 메서드 예제

아래 예제에서는 Assert 메서드를 사용하는 방법을 보여줍니다. 이 예제에서 폼은 두 개의 단추 컨트롤이 있어야 합니다. 기본 단추 이름은 Command1과 Command2입니다.

예제를 실행할 때 Command1 단추를 누르면 단추 위의 문자열이 0과 1 사이를 전환합니다. Command2를 누르면 Command1에 표시된 값에 따라 아무 동작도 하지 않거나 오류를 일으킵니다. 오류가 발생하면 실행된 마지막 문인 Debug.Assert 행이 반전되면서 실행을 중단합니다.

Option Explicit

Private blnAssert As Boolean

Private intNumber As Integer

Private Sub Command1_Click()

  blnAssert = Not blnAssert

  intNumber = IIf(intNumber <> 0, 0, 1)

  Command1.Caption = intNumber

End Sub

Private Sub Command2_Click()

  Debug.Assert blnAssert

End Sub

Private Sub Form_Load()

  Command1.Caption = intNumber

  Command2.Caption = "Assert Tester"

End Sub


Friend 키워드 예제
Friend 예제

클래스 모듈에 있을 때 아래 코드는 member 변수인 dblBalance를 프로젝트 내에 있는 클래스의 모든 사용자가 사용할 수 있도록 해줍니다. 모든 클래스 사용자는 값을 얻을 수 있으며 프로젝트 내의 코드만이 해당 변수에 값을 할당할 수 있습니다.

Private dblBalance As Double

Public Property Get Balance() As Double

  Balance = dblBalance

End Property

Friend Property Let Balance(dblNewBalance As Double)

  dblBalance = dblNewBalance

End Property


RaiseEvent 문 예제

아래 예제에서는 100미터 경주의 모의 실험에서 초를 계산하는 이벤트를 사용합니다. 코드에서는 이벤트와 관련된 메서드, 속성, RaiseEvent 문을 포함한 문 등을 모두 기술합니다.

이벤트를 일으키는 클래스는 이벤트 원본이고 이벤트를 처리하는 클래스는 싱크(sink)입니다. 이벤트 원본은 생성한 이벤트에 대해 여러 개의 싱크(sink)를 가질 수 있습니다. 클래스가 이벤트를 일으킬 때 그 이벤트는 개체의 해당 인스턴스에 대한 sink 이벤트를 선택한 모든 클래스에서 발생합니다.

예제에서는 단추(Command1)를 가진 폼(Form1), 레이블(Label1), 그리고 두 개의 텍스트 상자(Text1과 Text2)를 사용합니다. 단추를 누르면 첫 번째 텍스트 상자는 "지금부터"를 표시하고 두 번째는 초를 계산하기 시작합니다. 전체 시간(9.84 초)이 경과하면 첫 번째 텍스트 상자에 "지금까지"가 표시되고 두 번째 상자에는 "9.84"가 표시됩니다.

Form1의 코드는 폼의 시작과 종료 상태를 지정합니다. 또한 이벤트가 발생했을 때 실행된 코드도 들어 있습니다.

Option Explicit

Private WithEvents mText As TimerState

Private Sub Command1_Click()

  Text1.Text = "지금부터"

  Text1.Refresh

  Text2.Text = "0"

  Text2.Refresh

  Call mText.TimerTask(9.84)

End Sub

Private Sub Form_Load()

  Command1.Caption = "타이머를 시작하려면 누르십시오."

  Text1.Text = ""

  Text2.Text = ""

  Label1.Caption = "가장 빠른 100미터 주행 시간:"

  Set mText = New TimerState

  End Sub

Private Sub mText_ChangeText()

  Text1.Text = "지금까지"

  Text2.Text = "9.84"

End Sub

Private Sub mText_UpdateTime(ByVal dblJump As Double)

  Text2.Text = Str(Format(dblJump, "0"))

  DoEvents

End Sub

나머지 코드는 TimerState라는 이름의 클래스 모듈에 있습니다. 이 모듈에 포함된 명령은 Raise Event 문입니다.

Option Explicit

Public Event UpdateTime(ByVal dblJump As Double)

Public Event ChangeText()

Public Sub TimerTask(ByVal Duration As Double)

  Dim dblStart As Double

  Dim dblSecond As Double

  Dim dblSoFar As Double

  dblStart = Timer

  dblSoFar = dblStart

  Do While Timer < dblStart + Duration

    If Timer - dblSoFar >= 1 Then

    dblSoFar = dblSoFar + 1

    RaiseEvent UpdateTime(Timer - dblStart)

    End If

  Loop

  RaiseEvent ChangeText

End Sub


문자 집합(128 - 255)

128	•	160	[공백]	192	�	224	�
129	•	161	�	193	�	225	�
130	•	162	�	194	�	226	�
131	•	163	�	195	�	227	�
132	•	164	�	196	�	228	�
133	•	165	�	197	�	229	�
134	•	166	�	198	�	230	�
135	•	167	�	199	�	231	�
136	•	168	�	200	�	232	�
137	•	169	�	201	�	233	�
138	•	170	�	202	�	234	�
139	•	171	�	203	�	235	�
140	•	172	�	204	�	236	�
141	•	173	�	205	�	237	�
142	•	174	�	206	�	238	�
143	•	175	�	207	�	239	�
144	•	176	�	208	�	240	�
145	�	177	�	209	�	241	�
146	�	178	�	210	�	242	�
147	•	179	�	211	�	243	�
148	•	180	�	212	�	244	�
149	•	181	�	213	�	245	�
150	•	182	�	214	�	246	�
151	•	183	�	215	�	247	�
152	•	184	�	216	�	248	�
153	•	185	�	217	�	249	�
154	•	186	�	218	�	250	�
155	•	187	�	219	�	251	�
156	•	188	�	220	�	252	�
157	•	189	�	221	�	253	�
158	•	190	�	222	�	254	�
159	•	191	�	223	�	255	�
•	이 기호로 표시된 문자는 Microsoft Windows에서 지원하지 않습니다.

테이블의 값은 Windows 기본값입니다. 그렇지만 위의 127개의 ANSI 문자 집합 값은 운영 체제에 따라 코드 페이지에서 결정됩니다.


날짜 형식 상수

이 상수들은 프로젝트가 이들 상수 정의를 갖고 있는 해당 형식 라이브러리에 대해 명확한 참조를 갖고 있을 경우에만 사용할 수 있습니다.

상수	값	설명
vbGeneralDate	0	날짜/시간을 표시합니다. 실수일 경우에는 날짜와 시간을 같이 표시합니다. 소수 부분이 없으면 날짜만 표시하고 정수 부분이 없으면 시간만 표시합니다. 시스템 설정에 따라 날짜와 시간 표시가 결정됩니다.
vbLongDate	1	시스템의 국가별 설정에서 지정된 자세한 날짜 형식을 사용해서 날짜를 표시합니다.
vbShortDate	2	시스템의 국가별 설정에서 지정된 간단한 날짜 형식을 사용해서 날짜를 표시합니다.
vbLongTime	3	시스템의 국가별 설정에서 지정된 자세한 시간 형식을 사용해서 시간을 표시합니다.
vbShortTime	4	시스템의 국가별 설정에서 지정된 간단한 시간 형식을 사용해서 시간을 표시합니다.


DriveType 상수

이 상수들은 프로젝트가 이들 상수 정의를 갖고 있는 해당 형식 라이브러리에 대해 명확한 참조를 갖고 있을 경우에만 사용할 수 있습니다.

상수	값	설명
Unknown	0	드라이브 형식을 결정할 수 없습니다.
Removable	1	드라이브에 이동식 매체가 있습니다. 여기에는 모든 플로피 드라이브와 다른 종류의 저장 장치가 많이 포함됩니다.
Fixed	2	드라이브에 고정된(휴대용이 아닌) 미디어가 있습니다. 여기에는 휴대용 하드 드라이브 및 모든 하드 드라이브가 포함됩니다.
Remote	3	네트워크 드라이브입니다. 여기에는 네트워크에서 공유되는 드라이브가 있습니다.
CDROM	4	CD-ROM 드라이브입니다. 읽기 전용과 읽기/쓰기가 가능한 CD-ROM 드라이브를 구별하지 않습니다.
RAMDisk	5	디스크 드라이브처럼 작동되는 로컬 컴퓨터의 RAM 드라이브입니다.


파일 특성 상수

이 상수들은 프로젝트가 이들 상수 정의를 갖고 있는 해당 형식 라이브러리에 대해 명확한 참조를 갖고 있을 경우에만 사용할 수 있습니다.

상수	값	설명
Normal	0	표준 파일. 설정된 특성이 없습니다.
ReadOnly	1	읽기 전용 파일. 읽기와 쓰기가 모두 가능한 특성입니다.
Hidden	2	숨겨진 파일. 읽기와 쓰기가 모두 가능한 특성입니다.
System	4	시스템 파일. 읽기와 쓰기가 모두 가능한 특성입니다.
Volume	8	디스크 드라이브 레이블. 읽기 전용 특성입니다.
Directory	16	폴더나 디렉터리. 읽기 전용 특성입니다.
Archive	32	최종 백업 이후 파일이 변경되었습니다. 읽기와 쓰기가 모두 가능한 특성입니다.
Alias	64	연결이나 바로 가기. 읽기 전용 특성입니다.
Compressed	128	압축 파일. 읽기 전용 특성입니다.


파일 입출력 상수

이 상수들은 프로젝트가 이들 상수 정의를 갖고 있는 해당 형식 라이브러리에 대해 명확한 참조를 갖고 있을 경우에만 사용할 수 있습니다.

상수	값	설명
ForReading	1	읽기 전용 파일로 엽니다. 파일에 쓸 수 없습니다.
ForWriting	2	쓰기 파일로 엽니다. 같은 이름의 파일이 있다면 이전 내용은 지워 집니다.
ForAppending	8	파일을 열어 파일 끝에 씁니다.


SpecialFolder 상수

이 상수들은 프로젝트가 이들 상수 정의를 갖고 있는 해당 형식 라이브러리에 대해 명확한 참조를 갖고 있을 경우에만 사용할 수 있습니다.

상수	값	설명
WindowsFolder	0	Windows 폴더에는 Windows 운영 체제로 설치된 파일이 있습니다.
SystemFolder	1	System 폴더에는 라이브러리, 글꼴 및 장치 드라이버가 있습니다.
TemporaryFolder	2	Temp 폴더는 임시 파일을 저장하는 데 사용됩니다. 그 경로는 TMP 환경 변수에 있습니다.


Tristate 상수

이 상수들은 프로젝트가 이들 상수 정의를 갖고 있는 해당 형식 라이브러리에 대해 명확한 참조를 갖고 있을 경우에만 사용할 수 있습니다.

상수	값	설명
vbTrue	�1	참
vbFalse	0	거짓
vbUseDefault	�2	기본 설정 사용


Filter 함수

설명

지정된 필터 기준을 기반으로 하는 문자열 배열의 부분 집합을 포함하는 0을 기수로 하는 배열을 반환합니다.

구문

Filter(sourcesrray, match[, include[, compare]])

Filter 함수 구문은 다음과 같은 명명된 인수로 되어 있습니다.

구성 요소	설명
sourcearray	필수적인 요소. 찾을 1차원 문자열 배열
match	필수적인 요소. 찾을 문자열
include	선택적인 요소. match를 포함하거나 제외시키는 부분 문자열을 반환할 것인지를 나타내는 Boolean 값. Include가 True이면 Filter는 부분 문자열로 match를 포함하는 배열의 부분 집합을 반환합니다. include가 False면 Filter는 부분 문자열로 match를 포함하지 않는 배열의 부분 집합을 반환합니다.
compare	선택적인 요소. 사용할 문자열 비교의 종류를 나타내는 숫자값. 값에 대한 설명은 아래 설정을 참조하십시오.
설정

Compare 인수값은 아래와 같습니다.

상수	값	설명
vbUseCompareOption	�1	Option Compare 문의 설정을 사용하여 비교를 수행합니다.
vbBinaryCompare	0	이진 비교를 수행합니다.
vbTextCompare	1	텍스트 비교를 수행합니다.
vbDatabaseCompare	2	Microsoft Access 전용. 데이터베이스의 정보를 기반으로 비교를 수행합니다.
참고

match와 일치되는 것을 sourcearray에서 찾을 수 없으면 Filter는 빈 배열을 반환합니다. sourcearray가 Null이거나 1차원 배열이 아니면 오류가 발생합니다.

Filter 함수에 의해 반환되는 배열에는 일치되는 항목들을 포함할 수 있을 만큼의 요소만 포함됩니다.


FormatCurrency 함수

설명

시스템 제어판에 정의된 통화 기호를 사용하여 통화 값으로 서식이 지정된 식을 반환합니다.

구문

FormatCurrency(Expression[,NumDigitsAfterDecimal [,IncludeLeadingDigit [,UseParensForNegativeNumbers [,GroupDigits]]]])

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

구성 요소	설명
Expression	필수적인 요소. 서식을 지정할 식입니다.
NumDigitsAfterDecimal	선택적인 요소. 소수를 표시할 자릿수를 나타내는 숫자값. 기본값은 �1입니다. 이것은 컴퓨터의 국가별 설정 값이 사용됨을 나타냅니다.
IncludeLeadingDigit	선택적인 요소. 지수 값에 소수점 앞 0이 표시되는지의 여부를 나타내는 Tristate 상수. 값에 대한 설명은 아래 설정을 참조하십시오.
UseParensForNegativeNumbers	선택적인 요소. 음수를 괄호로 묶을 것인지를 나타내는 Tristate 상수. 값에 대한 설명은 아래 설정을 참조하십시오.
GroupDigits	선택적인 요소. 시스템의 국가별 설정에 지정된 그룹 구분 기호를 사용하여 숫자들을 그룹화하는지를 나타내는 Tristate 상수. 값에 대한 설명은 아래 설정을 참조하십시오.
설정

IncludeLeadingDigit, UseParensForNegativeNumbers, GroupDigits 인수의 설정 값은 아래와 같습니다.

상수	값	설명
vbTrue	�1	참
vbFalse	0	거짓
vbUseDefault	�2	컴퓨터의 국가별 설정 값을 사용합니다.
참고

하나 이상의 선택 인수가 생략되면 생략된 인수의 값은 시스템의 국가별 설정 값에 의해 제공됩니다.

통화 값에 상대적인 통화 기호의 위치는 시스템의 국가별 설정 값에 의해 결정됩니다.

메모   모든 설정 정보는 숫자 탭에서 제공되는 소수점 앞 0을 제외하고 국가별 설정 통화 탭에서 제공됩니다.


FormatDateTime 함수

설명

날짜와 시간으로 서식이 지정된 식을 반환합니다.

구문

FormatDateTime(Date[,NamedFormat])

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

구성 요소	설명
Date	필수적인 요소. 서식을 지정할 날짜식
NamedFormat	선택적인 요소. 사용되는 날짜/시간 형식을 나타내는 숫자값. 이 값을 생략하면 vbGeneralDate가 사용됩니다.
설정

NamedFormat 인수 설정은 아래와 같습니다.

상수	값	설명
vbGeneralDate	0	날짜 및/또는 시간을 표시합니다. 날짜 부분이 있으면 간단히 표시합니다. 시간 부분이 있으면 자세히 표시합니다. 날짜와 시간이 모두 있으면 둘 다 표시됩니다.
vbLongDate	1	시스템의 국가별 설정에 지정된 자세한 날짜 형식을 사용하여 날짜를 표시합니다.
vbShortDate	2	시스템의 국가별 설정에 지정된 간단한 날짜 형식을 사용하여 날짜를 표시합니다.
vbLongTime	3	시스템의 국가별 설정에 지정된 시간 형식을 사용하여 시간을 표시합니다.
vbShortTime	4	24시간 형식(hh:mm)을 사용하여 시간을 표시합니다.


FormatNumber 함수

설명

숫자로 서식이 지정된 식을 반환합니다.

구문

FormatNumber(Expression[,NumDigitsAfterDecimal [,IncludeLeadingDigit [,UseParensForNegativeNumbers [,GroupDigits]]]])

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

구성 요소	설명
Expression	필수적인 요소. 서식을 지정할 식
NumDigitsAfterDecimal	선택적인 요소. 소수를 나타낼 자릿수를 나타내는 숫자 값. 기본값은 �1입니다. 이것은 시스템의 국가별 설정 값이 사용됨을 나타냅니다.
IncludeLeadingDigit	선택적인 요소. 지수 값에 소수점 앞 0이 표시되는지의 여부를 나타내는 Tristate 상수. 값에 대한 설명은 아래 설정을 참조하십시오.
UseParensForNegativeNumbers	선택적인 요소. 음수를 괄호로 묶을 것인지를 나타내는 Tristate 상수. 값에 대한 설명은 아래 설정을 참조하십시오.
GroupDigits	선택적인 요소. 컴퓨터 국가별 설정에서 지정된 그룹 구분 기호를 사용하여 숫자들을 그룹화하는지를 나타내는 Tristate 상수. 값에 대한 설명은 아래 설정을 참조하십시오.
설정

IncludeLeadingDigit, UseParensForNegativeNumbers, GroupDigits의 인수 설정은 아래와 같습니다.

상수	값	설명
TristateTrue	�1	참
TristateFalse	0	거짓
TristateUseDefault	�2	시스템의 국가별 설정 값을 사용합니다.
참고

하나 이상의 선택 인수가 생략되면 생략된 인수의 값은 시스템 국가별 설정 값에 의해 제공됩니다.

메모   모든 설정 정보는 국가별 설정 숫자 탭에 의해 제공됩니다.


FormatPercent 함수

설명

뒤에 % 문자가 붙는 백분율(100이 곱해짐)로 서식이 지정된 식을 반환합니다.

구문

FormatPercent(Expression[,NumDigitsAfterDecimal [,IncludeLeadingDigit [,UseParensForNegativeNumbers [,GroupDigits]]]])

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

구성 요소	설명
Expression	필수적인 요소. 서식을 지정할 식
NumDigitsAfterDecimal	선택적인 요소. 소수를 나타낼 자릿수를 나타내는 숫자값. 기본값은�1입니다. 이것은 시스템의 국가별 설정 값이 사용됨을 나타냅니다.
IncludeLeadingDigit	선택적인 요소. 지수 값에 소수점 앞 0이 표시되는 지의 여부를 나타내는 Tristate 상수. 값에 대한 설명은 아래 설정을 참조하십시오.
UseParensForNegativeNumbers	선택적인 요소. 음수를 괄호로 묶을 것인지를 나타내는 Tristate 상수. 값에 대한 설명은 아래 설정을 참조하십시오.
GroupDigits	선택적인 요소. 시스템 국가별 설정에서 지정된 그룹 구분 기호를 사용하여 숫자들을 그룹화하는지를 나타내는 Tristate 상수. 값에 대한 설명은 아래 설정을 참조하십시오.
설정

IncludeLeadingDigit, UseParensForNegativeNumbers, GroupDigits 인수의 설정은 아래와 같습니다.

상수	값	설명
TristateTrue	�1	참
TristateFalse	0	거짓
TristateUseDefault	�2	시스템의 국가별 설정 값을 사용합니다.
참고

하나 이상의 선택 인수가 생략되면 생략된 인수의 값은 시스템의 국가별 설정 값에 의해 제공됩니다.

메모   모든 설정 정보는 국가별 설정 숫자 탭에 의해 제공됩니다.


InStrRev 함수

설명

다른 문자열 내에서 한 문자열이 시작하는 위치를 문자열 끝에서부터 계산하여 반환합니다.

구문

InstrRev(stringcheck, stringmatch[, start[, compare]])

InstrRev 함수 구문은 다음과 같은 명명된 인수로 되어 있습니다.

구성 요소	설명
stringcheck	필수적인 요소. 찾을 문자식
stringmatch	필수적인 요소. 찾을 문자식
start	선택적인 요소. 검색을 시작할 위치를 설정하는 수식. 이를 생략하면 �1을 사용합니다. 이것은 마지막 문자에서 검색이 시작됨을 의미합니다. start가 Null 이면 오류가 발생합니다.
compare	선택적인 요소. 부분 문자열을 평가할 때 사용할 비교의 종류를 나타내는 숫자값. 생략하면 이진 비교가 수행됩니다. 값에 대한 설명은 아래 설정을 참조하십시오.
설정

compare 인수의 값은 아래와 같습니다.

상수	값	설명
vbUseCompareOption	�1	Option Compare 문의 설정을 사용하여 비교를 수행합니다.
vbBinaryCompare	0	이진 비교를 수행합니다.
vbTextCompare	1	텍스트 비교를 수행합니다.
vbDatabaseCompare	2	Microsoft Access 전용. 데이터베이스의 정보를 기반으로 비교를 수행합니다.
반환값

InStrRev는 아래 값을 반환합니다.

다음의 경우	InStrRev가 반환하는 값
stringcheck의 길이가 0일 경우	0
stringcheck이 Null일 경우	Null
stringmatch의 길이가 0일 경우	Start
stringmatch가 Null일 경우	Null
stringmatch가 없을 경우	0
stringmatch가 stringcheck 내에 있을 경우	일치되는 사항이 발견되는 위치
start > Len(stringmatch)	0
참고

InstrRev 함수의 구문은 Instr 함수의 구문과 같지 않습니다.


Join 함수

설명

배열에 포함된 여러 부분 문자열을 조인하여 작성되는 문자열을 반환합니다.

구문

Join(sourcearray[, delimiter])

Join 함수 구문은 다음과 같은 명명된 인수로 되어 있습니다.

구성 요소	설명
sourcearray	필수적인 요소. 조인할 부분 문자열을 포함하는 1차원 배열
delimiter	선택적인 요소. 반환되는 문자열에서 부분 문자열들을 구분하는 데 사용되는 문자열. 생략하면 공백 문자(" ")가 사용됩니다. delimiter가 길이가 0인 문자열("")이면 목록의 모든 항목이 구분 기호 없이 연결됩니다.


MonthName 함수

설명

지정된 월을 나타내는 문자열을 반환합니다.

구문

MonthName(month[, abbreviate])

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

구성 요소	설명
month	필수적인 요소. 월에 대한 숫자. 예를 들어 1월은 1, 2월은 2입니다.
abbreviate	선택적인 요소. 월의 이름이 축약되는지를 나타내는 Boolean 값. 생략하면 기본값은 False이며 월 이름을 축약하지 않습니다.


Replace 함수

설명

지정된 부분 문자열이 지정된 횟수만큼 다른 부분 문자열로 대체된 문자열을 반환합니다.

구문

Replace(expression, find, replace[, start[, count[, compare]]])

Replace 함수 구문은 다음과 같은 명명된 인수로 되어 있습니다.

구성 요소	설명
expression	필수적인 요소. 대체할 부분 문자열을 포함하는 문자식.
find	필수적인 요소. 찾을 부분 문자열
replace	필수적인 요소. 대체될 부분 문자열
start	선택적인 요소. 부분 문자열 검색이 시작될 expression 내의 위치. 생략하면 1이 사용됩니다.
count	선택적인 요소. 수행할 부분 문자열 대체 횟수. 생략하면 기본값은 �1입니다. 이것은 가능한 모든 대체 사항이 대체됨을 의미합니다.
compare	선택적인 요소. 부분 문자열을 평가할 때 사용할 비교의 종류를 나타내는 숫자 값. 값에 대한 설명은 아래 설정을 참조하십시오.
설정

compare 인수의 값은 아래와 같습니다.

상수	값	설명
vbUseCompareOption	�1	Option Compare문의 설정을 사용하여 비교를 수행합니다.
vbBinaryCompare	0	이진 비교를 수행합니다.
vbTextCompare	1	텍스트 비교를 수행합니다.
vbDatabaseCompare	2	Microsoft Access 전용. 데이터베이스의 정보를 기반으로 비교를 수행합니다.
반환값

Replace는 아래 값을 반환합니다.

다음의 경우	Replace가 반환하는 값
expression의 길이가 0일 경우	길이가 0인 문자열("")
expression이Null일 경우	오류
find의 길이가 0일 경우	expression의 사본
replace의 길이가 0일 경우	find의 모든 발생이 제거된 expression의 사본
start > Len(expression)	길이가 0인 문자열
count가 0일 경우	expression의 사본
참고

Replace 함수의 반환값은 start에 의해 지정된 위치에서 시작하여 expression 문자열의 끝에서 결정되는 대체가 수행된 문자열입니다. 처음부터 끝까지 원래 문자열의 사본이 아닙니다.


Round 함수

설명

지정된 소수 자릿수로 반올림된 숫자를 반환합니다.

구문

Round(expression [,numdecimalplaces])

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

구성 요소	설명
expression	필수적인 요소. 반올림할 수식.
numdecimalplaces	선택적인 요소. 반올림에 포함되는 소수 오른쪽 자릿수를 나타내는 숫자. 생략하면 정수가 Round 함수에 의해 반환됩니다.


Split 함수

설명

지정된 부분 문자열의 개수를 포함하는 0을 기수로 하는 1차원 배열을 반환합니다.

구문

Split(expression[, delimiter[, limit[, compare]]])

Split 함수 구문은 다음과 같은 명명된 인수로 되어 있습니다.

구성 요소	설명
expression	필수적인 요소. 부분 문자열과 구분 기호를 포함하는 문자식. expression이 길이가 0인 문자열("")이면 Split는 빈 배열, 즉 요소와 데이터가 전혀 없는 배열을 반환합니다.
delimiter	선택적인 요소. 부분 문자열의 한계를 식별하기 위해 사용되는 문자열. 생략하면 공백 문자(" ")가 구분 기호로 가정됩니다. delimiter가 길이가 0인 문자열이면 전체 expression 문자열을 포함하는 단일 요소가 반환됩니다.
limit	선택적인 요소. 반환할 문자열 수로 �1은 모든 부분 문자열이 반환됨을 의미합니다.
compare	선택적인 요소. 부분 문자열을 평가할 때 사용할 비교 종류를 나타내는 숫자값. 값에 대한 설명은 아래 설정을 참조하십시오.
설정

compare 인수의 값은 아래와 같습니다.

상수	값	설명
vbUseCompareOption	�1	Option Compare 문의 설정을 사용하여 비교를 수행합니다.
vbBinaryCompare	0	이진 비교를 수행합니다.
vbTextCompare	1	텍스트 비교를 수행합니다.
vbDatabaseCompare	2	Microsoft Access 전용. 데이터베이스의 정보를 기반으로 비교를 수행합니다.


StrReverse 함수

설명

지정된 문자열의 순서를 역으로 바꾼 문자열로 반환합니다.

구문

StrReverse(expression)

expression 인수는 순서가 역으로 될 문자열입니다. expression이 길이가 0인 문자열("")이면 0 길이의 문자열이 반환됩니다. expression이 Null이면 오류가 발생합니다.


WeekdayName 함수

설명

해당되는 주의 지정된 요일을 나타내는 문자열을 반환합니다.

구문

WeekdayName(weekday, abbreviate, firstdayofweek)

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

구성 요소	설명
weekday	필수적인 요소. 해당 주의 요일을 나타내는 숫자. 각 요일의 숫자값은 firstdayofweek 문자열의 설정에 따라 다릅니다.
abbreviate	선택적인 요소. 요일 이름이 축약되는지를 나타내는 Boolean 값. 생략하면 기본값은 False이며 이것은 요일 이름이 축약되지 않음을 의미합니다.
firstdayofweek	선택적인 요소. 해당 주의 첫째 요일을 나타내는 숫자값. 값에 대한 설명은 아래 설정을 참조하십시오.
설정

firstdayofweek 인수의 값은 아래와 같습니다.

상수	값	설명
vbUseSystem	0	자국어 지원(NLS) API 설정을 사용합니다.
vbSunday	1	일요일(기본값)
vbMonday	2	월요일
vbTuesday	3	화요일
vbWednesday	4	수요일
vbThursday	5	목요일
vbFriday	6	금요일
vbSaturday	7	토요일


Add 메서드(Dictionary)

설명

키와 항목 한 쌍을 Dictionary 개체에 추가합니다.

구문

object.Add key, item

Add 메서드는 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 항상 Dictionary 개체의 이름입니다.
key	필수적인 요소. 추가되는 항목과 관련된 키입니다.
item	필수적인 요소. 추가되는 키와 관련된 항목입니다.
참고

key가 이미 존재하고 있으면 오류가 발생합니다.


AddFolders 메서드
Add 메서드(Folders)

설명

새 Folder를 Folders 컬렉션에 추가합니다.

구문

object.Add folderName

Add 메서드는 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 항상 Folders 컬렉션의 이름입니다.
folderName	필수적인 요소. 추가되는 Folder의 이름입니다.
참고

folderName이 이미 존재하고 있으면 오류가 발생합니다.


BuildPath 메서드

설명

기존의 경로에 이름을 추가합니다.

구문

object.BuildPath(path, name)

BuildPath 메서드 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 항상 FileSystemObject의 이름입니다.
path	필수적인 요소. name이 추가된 기존의 경로입니다. 경로는 절대적이거나 상대적이므로 존재하는 폴더를 지정할 필요가 없습니다.
name	필수적인 요소. 기존 path에 추가되는 이름입니다.
참고

필요할 때만 BuildPath 메서드는 기존의 경로와 이름 사이에 경로 구분 기호를 추가로 삽입합니다.


Close 메서드(FileSystemObject 개체)
Close 메서드

설명

열려있는 TextStream 파일을 닫습니다.

구문

object.Close

object는 항상 TextStream 개체의 이름입니다.


Copy 메서드

설명

지정된 파일이나 폴더를 한 곳에서 다른 곳으로 복사합니다.

구문

object.Copy destination[, overwrite]

Copy 메서드 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 항상 File이나 Folder 개체의 이름입니다.
destination	필수적인 요소. 파일이나 폴더가 복사될 대상입니다. 와일드카드 문자는 사용할 수 없습니다.
overwrite	선택적인 요소. 기존의 파일이나 폴더에 겹쳐 쓰려면 Boolean 값은 True(기본값)이고 겹쳐 쓰지 않을 경우는 False입니다.
참고

File이나 Folder에 대한 Copy 메서드의 결과는 object로 참조된 파일이나 폴더가 인수로 전달되는 FileSystemObject.CopyFile 또는 FileSystemObject.CopyFolder를 사용해 실행된 것과 일치합니다. 그러나 대체 메서드들은 여러 파일이나 폴더를 복사할 수 있습니다.


CopyFile 메서드

설명

하나 이상의 파일을 한 곳에서 다른 곳으로 복사합니다.

구문

object.CopyFile source, destination[, overwrite]

CopyFile 메서드 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. object는 항상 FileSystemObject의 이름입니다.
source	필수적인 요소. 하나 이상의 파일을 복사하기 위하여 와일드카드 문자를 포함할 수 있는 파일을 문자열로 지정합니다.
destination	필수적인 요소. source의 한 개나 여러 개의 파일이 복사될 대상을 문자열로 지정합니다. 와일드카드 문자는 사용할 수 없습니다.
overwrite	선택적인 요소. 기존의 파일을 겹쳐 쓸 것인지 여부를 나타내는 Boolean 값입니다. 값이 True이면 파일을 겹쳐 쓰고 False이면 겹쳐 쓰지 않습니다. 기본값은 True입니다. overwrite의 값에 관계 없이 destination이 읽기 전용 특성 집합을 갖고 있으면 CopyFile 메서드는 실패합니다.
참고

와일드카드 문자는 source 인수 경로의 맨 뒤에만 사용할 수 있습니다. 예를 들어 아래와 같이 사용할 수 있습니다.

FileSystemObject.CopyFile "c:\mydocuments\letters\*.doc", "c:\tempfolder\"

그러나 아래와 같은 방법으로는 사용할 수 없습니다.

FileSystemObject.CopyFile "c:\mydocuments\*\R1???97.xls", "c:\tempfolder"

source에 와일드카드 문자가 있거나 destination이 경로 구분 기호(\)로 끝나면 destination을 일치하는 파일을 복사하기 위한 기존의 폴더라고 가정합니다. 그렇지 않을 경우 destination을 작성할 파일의 이름이라고 가정합니다. 어느 경우라도 각 파일이 복사될 때 아래 세 경우가 발생할 수 있습니다.

•	보편적인 경우 destination이 존재하지 않으면 source가 복사됩니다.

•	destination이 존재하고 있는 파일이고 overwrite 값이 False라면 오류가 발생합니다. 그렇지 않으면 존재하는 파일에 덮어 쓰도록 source를 복사하게 됩니다.

•	destination이 디렉터리이면 오류가 발생합니다.

와일드카드 문자를 사용하는 source가 어느 파일과도 일치하지 않을 경우에도 오류가 발생합니다. CopyFile 메서드는 오류가 처음 발생할 때 중단됩니다. 오류가 발생하기 전에 이루어진 변경 사항을 처음으로 되돌리거나 취소하지 않습니다.


CopyFolder 메서드

설명

순환적으로 폴더를 한 곳에서 다른 곳으로 복사합니다.

구문

object.CopyFolder source, destination[, overwrite]

CopyFolder 메서드 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 항상 FileSystemObject의 이름입니다.
source	필수적인 요소. 하나 이상의 파일을 복사하기 위하여 와일드카드 문자를 포함할 수 있는 파일을 문자열로 지정합니다.
destination	필수적인 요소. source의 폴더나 하위 폴더가 복사될 대상을 문자열로 지정합니다. 와일드카드 문자는 사용할 수 없습니다.
overwrite	선택적인 요소. 기존의 폴더를 겹쳐 쓸 것인지 여부를 나타내는 Boolean 값입니다. 값이 True이면 파일을 겹쳐 쓰고 False이면 겹쳐 쓰지 않습니다. 기본값은 True입니다.
참고

와일드카드 문자는 source 인수 경로의 맨 뒤에만 사용할 수 있습니다. 예를 들어 아래와 같이 사용할 수 있습니다.

FileSystemObject.CopyFolder "c:\mydocuments\letters\*", "c:\tempfolder\"

그러나 아래와 같은 방법으로는 사용할 수 없습니다.

FileSystemObject.CopyFolder "c:\mydocuments\*\*", "c:\tempfolder\"

source에 와일드카드 문자가 있거나 destination이 경로 구분 기호(\)로 끝나면 destination을 일치하는 폴더나 하위 폴더를 복사하기 위한 기존의 폴더라고 가정합니다. 그렇지 않을 경우 destination을 작성할 폴더의 이름이라고 가정합니다. 어느 경우라도 각 폴더가 복사될 때 아래 네 가지 경우가 발생할 수 있습니다.

•	일반적인 경우 destination이 존재하지 않으면 source 폴더와 그 안의 파일들이 복사됩니다.

•	destination이 기존 파일이면 오류가 발생합니다.

•	destination이 디렉터리이면 폴더와 그 안의 파일들을 복사합니다. source에 포함된 파일이 이미 destination에 존재하고 있고 overwrite 값이 False면 오류가 발생합니다. 그렇지 않으면 존재하는 파일에 겹쳐 쓰게 됩니다.

•	destination이 읽기 전용 디렉터리인 경우에 기존의 읽기 전용 파일을 그 디렉터리에 복사하려 하고 overwrite가 False이면 오류가 발생합니다.

와일드카드 문자를 사용하는 source가 어느 폴더와도 일치하지 않을 경우에도 오류가 발생합니다. CopyFolder 메서드는 오류가 처음 발생할 때 중단됩니다. 오류가 발생하기 전에 이루어진 변경 사항을 처음으로 되돌리거나 취소하지 않습니다.


CreateFolder 메서드

설명

폴더를 작성합니다.

구문

object.CreateFolder(foldername)

CreateFolder 메서드는 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 항상 FileSystemObject의 이름입니다.
foldername	필수적인 요소. 작성할 폴더를 나타내는 문자식입니다.
참고

지정된 폴더가 이미 존재하고 있으면 오류가 발생합니다.


CreateTextFile 메서드

설명

지정된 파일 이름을 작성하고 파일을 읽거나 쓰는데 사용되는 TextStream 개체를 반환합니다.

구문

object.CreateTextFile(filename[, overwrite[, unicode]])

CreateTextFile 메서드는 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 항상 FileSystemObject나 Folder 개체의 이름입니다.
filename	필수적인 요소. 작성할 파일을 나타내는 문자식입니다.
overwrite	선택적인 요소. 존재하는 파일에 겹쳐 쓰기 여부를 나타내는 Boolean 값입니다. 값이 True이면 겹쳐 쓸 수 있고 False이면 겹쳐 쓸 수 없습니다. 생략하면 겹쳐 쓰지 않습니다.
unicode	선택적인 요소. 파일이 Unicode나 ASCII 파일로 작성되는지 여부를 나타내는 Boolean 값입니다. 파일이 Unicode 파일로 작성된다면 값은 True이고 ASCII 파일로 작성된다면 값은 False입니다. 생략되면 ASCII 파일로 가정합니다.
참고

아래 코드는 CreateTextFile 메서드를 사용하여 텍스트 파일을 작성하고 열어 보는 방법을 설명합니다.

Sub CreateAfile

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set a = fs.CreateTextFile("c:\testfile.txt", True)

    a.WriteLine("테스트용입니다.")

    a.Close

End Sub

이미 존재하고 있는 filename에 대해 overwrite 인수의 값이 False이거나 주어지지 않으면 오류가 발생합니다.


Delete 메서드

설명

지정된 파일이나 폴더를 삭제합니다.

구문

object.Delete force

Delete 메서드 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 항상 File이나 Folder 개체의 이름입니다.
force	선택적인 요소. Boolean 값이 True이면 읽기 전용 특성 집합이 있는 파일이나 폴더가 삭제되고 False(기본값)이면 삭제되지 않습니다.
참고

지정된 파일이나 폴더가 존재하지 않으면 오류가 발생합니다.

File이나 Folder에 대한 Delete 메서드의 결과는 FileSystemObject.DeleteFile이나 FileSystemObject.DeleteFolder를 사용해서 수행된 것과 같습니다.

Delete 메서드는 파일이 있는 폴더와 없는 폴더를 구별하지 못합니다. 폴더 안에 파일이 있는지 여부에 관계 없이 지정한 폴더를 삭제합니다.


DeleteFile 메서드

설명

지정된 파일을 삭제합니다.

구문

object.DeleteFile filespec[, force]

DeleteFile 메서드 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 항상 FileSystemObject의 이름입니다.
filespec	필수적인 요소. 삭제할 파일의 이름입니다. filespec은 경로의 맨 뒤에 와일드카드 문자를 사용할 수 있습니다.
force	선택적인 요소. Boolean 값이 True이면 읽기 전용 특성 집합이 있는 파일이 삭제되고 False(기본값)이면 삭제되지 않습니다.
참고

일치하는 파일이 발견되지 않으면 오류가 발생합니다. DeleteFile 메서드는 오류가 처음 발생될 때 중단됩니다. 오류가 발생하기 전에 이루어진 변경 사항을 처음으로 되돌리거나 취소하지 않습니다.


DeleteFolder 메서드

설명

지정된 폴더와 폴더 안의 파일을 삭제합니다.

구문

object.DeleteFolder folderspec[, force]

DeleteFolder 메서드 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 항상 FileSystemObject의 이름입니다.
folderspec	필수적인 요소. 삭제할 폴더의 이름입니다. folderspec은 경로의 맨 뒤에 와일드카드 문자를 사용할 수 있습니다.
force	선택적인 요소. Boolean 값이 True이면 읽기 전용 특성 집합이 있는 폴더가 삭제되고 False(기본값)이면 삭제되지 않습니다.
참고

DeleteFolder 메서드는 파일이 있는 폴더와 없는 폴더를 구별하지 못합니다. 폴더 안에 파일이 있는지 여부에 관계 없이 지정한 폴더를 삭제합니다.

일치하는 폴더가 발견되지 않으면 오류가 발생합니다. DeleteFolder 메서드는 오류가 처음 발생될 때 중단됩니다. 오류가 발생하기 전에 이루어진 변경 사항을 처음으로 되돌리거나 취소하지 않습니다.


DriveExists 메서드

설명

지정된 드라이브가 존재하면 True를 반환하고 없으면 False를 반환합니다.

구문

object.DriveExists(drivespec)

DriveExists 메서드 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 항상 FileSystemObject의 이름입니다.
drivespec	필수적인 요소. 드라이브 문자나 전체 경로 지정 이름입니다.
참고

이동식 매체가 있는 드라이브에 대해서는 현재 미디어가 없을 지라도 DriveExists 메서드는 True를 반환합니다. Drive 개체의 IsReady 속성을 사용하여 드라이브 준비 여부를 결정합니다.


Exists 메서드

설명

지정된 키가 Dictionary 개체에 있으면 True를 반환하고 없으면 False를 반환합니다.

구문

object.Exists(key)

Exists 메서드 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 항상 Dictionary 개체의 이름입니다.
key	필수적인 요소. Dictionary 개체에서 검색할 key 값입니다.


FileExists 메서드

설명

지정된 파일이 존재하면 True 값을 반환하고 없으면 False 값을 반환합니다.

구문

object.FileExists(filespec)

FileExists 메서드 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 항상 FileSystemObject의 이름입니다.
filespec	필수적인 요소. 존재 여부를 확인할 파일 이름입니다. 파일이 현재 폴더에 없으면 절대 경로이든 또는 상대 경로이든 전체 경로 지정 이름을 사용해야 합니다.


FolderExists 메서드

설명

지정된 폴더가 존재하면 True를 반환하고 없으면 False를 반환합니다.

구문

object.FolderExists(folderspec)

FolderExists 메서드 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 항상 FileSystemObject의 이름입니다.
folderspec	필수적인 요소. 존재 여부를 확인할 폴더 이름입니다. 폴더가 현재 폴더에 없으면 절대 경로이든 또는 상대 경로이든 전체 경로 지정 이름을 사용해야 합니다.


GetAbsolutePathName 메서드

설명

제공된 경로 지정 이름에서 완전하고 분명한 경로를 반환합니다.

구문

object.GetAbsolutePathName(pathspec)

GetAbsolutePathName 메서드 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 항상 FileSystemObject의 이름입니다.
pathspec	필수적인 요소. 완전하고 분명한 경로로 변경할 경로 지정 이름입니다.
참고

지정된 드라이브의 루트에서부터 경로가 참조된다면 경로 이름은 완전하고 분명합니다. 드라이브의 루트 폴더를 지정한다면 완전한 경로는 경로 구분 기호(\)로만 마칠 수 있습니다.

현재 디렉터리를 c:\mydocuments\reports라고 가정하고 아래 표에 GetAbsolutePathName 메서드의 작동을 설명합니다.

pathspec	반환되는 경로
"c:"	"c:\mydocuments\reports"
"c:.."	"c:\mydocuments"
"c:\\\"	"c:\"
"c:*.*\may97"	"c:\mydocuments\reports\*.*\may97"
"region1"	"c:\mydocuments\reports\region1"
"c:\..\..\mydocuments"	"c:\mydocuments"


GetBaseName 메서드

설명

경로에서 어느 파일 확장명보다 적은 경로 이름의 맨 뒤에 사용되는 요소의 기본 이름을 포함하는 문자열을 반환합니다.

구문

object.GetBaseName(path)

GetBaseName 메서드 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 항상 FileSystemObject의 이름입니다.
path	필수적인 요소. 기본 이름이 반환되는 요소의 경로 지정 이름입니다.
참고

path 인수와 일치하는 요소가 없으면 GetBaseName 메서드는 길이가 0인 문자열("")을 반환합니다.

메모   GetBaseName 메서드는 제공된 path 문자열에 대해서만 작동합니다. 이것은 경로를 해제하거나 지정된 경로의 존재 여부를 확인하지 않습니다.


GetDrive 메서드

설명

지정된 경로에 있는 드라이브와 일치하는 Drive 개체를 반환합니다.

구문

object.GetDrive drivespec

GetDrive 메서드 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 항상 FileSystemObject의 이름입니다.
drivespec	필수적인 요소. drivespec 인수는 드라이브 문자(c)나 콜론이 추가된 드라이브 문자(c:), 콜론과 경로 구분 기호(c:\)가 추가된 또는 모든 네트워크 공유 경로 지정 이름(\\computer2\share1)이 될 수 있습니다.
참고

네트워크 공유에 대해 공유가 존재하는지 확인합니다.

drivespec이 인정된 폼 중 하나를 따르지 않거나 존재하지 않는다면 오류가 발생합니다.

표준 경로 문자열에 대해 GetDrive 메서드를 호출하려면 아래와 같은 방법을 사용해 drivespec 사용에 알맞은 문자열을 가져옵니다.

DriveSpec = GetDriveName(GetAbsolutePathName(Path))


GetDriveName 메서드

설명

지정된 경로의 드라이브 이름을 포함하는 문자열을 반환합니다.

구문

object.GetDriveName(path)

GetDriveName 메서드 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 항상 FileSystemObject의 이름입니다.
path	필수적인 요소. 드라이브 이름이 반환될 요소의 경로 지정 이름입니다.
참고

드라이브를 결정할 수 없으면 GetDriveName 메서드는 길이가 0인 문자열("")을 반환합니다.

메모   GetDriveName 메서드는 제공된 path 문자열에 대해서만 작동합니다. 이것은 경로를 해제하거나 지정된 경로의 존재 여부를 확인하지 않습니다.


GetExtensionName 메서드

설명

경로에서 맨 뒤에 사용한 요소의 확장명 이름을 포함하는 문자열을 반환합니다.

구문

object.GetExtensionName(path)

GetExtensionName 메서드 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 항상 FileSystemObject의 이름입니다.
path	필수적인 요소. 확장명 이름이 반환될 요소의 경로 지정 이름입니다.
참고

네트워크 드라이브에서 루트 디렉터리(\)는 요소의 하나로 간주합니다.

path 인수와 일치하는 요소가 없으면 GetExtensionName 메서드는 길이가 0인 문자열("")을 반환합니다.


GetFile 메서드

설명

지정된 경로에 있는 파일과 일치하는 File 개체를 반환합니다.

구문

object.GetFile(filespec)

GetFile 메서드 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 항상 FileSystemObject의 이름입니다.
filespec	필수적인 요소. filespec은 특정 파일에 대한 경로(절대적 또는 상대적)입니다.
참고

지정된 파일이 존재하지 않으면 오류가 발생합니다.


GetFileName 메서드

설명

지정된 경로에서 드라이브 지정 이름의 요소가 아닌 맨 뒤의 요소(파일 이름)를 반환합니다.

구문

object.GetFileName(pathspec)

GetFileName 메서드 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 항상 FileSystemObject의 이름입니다.
pathspec	필수적인 요소. 특정 파일에 대한 경로(절대적 또는 상대적)입니다.
참고

pathspec이 명명된 요소로 끝나지 않으면 GetFileName 메서드는 길이가 0인 문자열("")을 반환합니다.

메모   GetFileName 메서드는 제공된 path 문자열에 대해서만 작동합니다. 이것은 경로를 해제하거나 지정된 경로의 존재 여부를 확인하지 않습니다.


GetFolder 메서드

설명

지정된 경로에서 폴더와 일치하는 Folder 개체를 반환합니다.

구문

object.GetFolder(folderspec)

GetFolder 메서드 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 항상 FileSystemObject의 이름입니다.
folderspec	필수적인 요소. folderspec은 특정 폴더에 대한 경로(절대 경로 또는 상대 경로)입니다.
참고

지정된 폴더가 존재하지 않으면 오류가 발생합니다.


GetParentFolderName 메서드

설명

지정된 경로의 맨 뒤 요소의 상위 폴더 이름을 포함하는 문자열을 반환합니다.

구문

object.GetParentFolderName(path)

GetParentFolderName 메서드 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 항상 FileSystemObject의 이름입니다.
path	필수적인 요소. 상위 폴더 이름이 반환될 요소의 경로 지정 이름입니다.
참고

path 인수에서 지정된 요소의 상위 폴더가 없으면 GetParentFolderName 메서드는 길이가 0인 문자열("")을 반환합니다.

메모   GetParentFolderName 메서드는 제공된 path 문자열에 대해서만 작동합니다. 이것은 경로를 해제하거나 지정된 경로의 존재 여부를 확인하지 않습니다.


GetSpecialFolder 메서드

설명

지정된 특정 폴더를 반환합니다.

구문

object.GetSpecialFolder(folderspec)

GetSpecialFolder 메서드 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 항상 FileSystemObject의 이름입니다.
folderspec	필수적인 요소. 반환될 특정 폴더의 이름입니다. 다음의 설정에 있는 모든 상수를 사용할 수 있습니다.
설정

folderspec 인수 값은 아래와 같습니다.

상수	값	설명
WindowsFolder	0	Windows 폴더에는 Windows 운영 체제로 설치한 파일이 있습니다.
SystemFolder	1	System 폴더에는 라이브러리, 글꼴 및 장치 드라이버가 있습니다.
TemporaryFolder	2	임시 파일을 저장하기 위해 Temp 폴더를 사용합니다. 이 폴더의 경로는 TMP 환경 변수에서 찾을 수 있습니다.


GetTempName 메서드

설명

임시 파일이나 폴더를 필요로 하는 작업에 유용한 임의로 만든 임시 파일이나 폴더 이름을 반환합니다.

구문

object.GetTempName

선택 요소인 object는 항상 FileSystemObject의 이름입니다.

참고

GetTempName 메서드는 파일을 작성하지 않습니다. 단지 CreateTextFile로 파일을 작성하는데 사용될 수 있는 임시 파일 이름만 제공합니다.


Items 메서드

설명

Dictionary 개체에 있는 모든 항목을 포함하는 배열을 반환합니다.

구문

object.Items

object는 항상 Dictionary 개체의 이름입니다.

참고

아래 코드는 Items 메서드의 사용 방법을 설명합니다.

Dim a, d, i             '변수를 몇 개 만듭니다.

Set d = CreateObject("Scripting.Dictionary")

d.Add "a", "Athens"     '키와 항목을 몇 개 추가합니다.

d.Add "b", "Belgrade"

d.Add "c", "Cairo"

a = d.Items             '항목을 가져옵니다.

For i = 0 To d.Count -1 '배열을 반복합니다.

    Print a(i)          '항목을 인쇄합니다.

Next

...


Keys 메서드

설명

Dictionary 개체에 존재하고 있는 모든 키를 포함하는 배열을 반환합니다.

구문

object.Keys

object는 항상 Dictionary 개체의 이름입니다.

참고

아래 코드는 Keys 메서드의 사용 방법을 설명합니다.

Dim a, d, i             '변수를 몇 개 만듭니다.

Set d = CreateObject("Scripting.Dictionary")

d.Add "a", "Athens"     '키와 항목을 몇 개 추가합니다.

d.Add "b", "Belgrade"

d.Add "c", "Cairo"

a = d.keys              '키를 가져옵니다.

For i = 0 To d.Count -1 '배열을 반복합니다.

    Print a(i)          '키를 인쇄합니다.

Next

...


Move 메서드(FileSystemObject object)
Move 메서드

설명

지정된 파일이나 폴더를 한 곳에서 다른 곳으로 이동합니다.

구문

object.Move destination

Move 메서드 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 항상 File이나 Folder 개체의 이름입니다.
destination	필수적인 요소. 파일이나 폴더가 이동될 대상입니다. 와일드카드 문자는 사용할 수 없습니다.
참고

File이나 Folder에 대한 Move 메서드의 결과는 FileSystemObject.MoveFile이나 FileSystemObject.MoveFolder를 사용해서 수행된 것과 같습니다.

그러나 대체 메서드가 여러 파일이나 폴더를 이동시킬 수 있습니다.


MoveFile 메서드

설명

한 개 이상의 파일을 한 곳에서 다른 곳으로 이동합니다.

구문

object.MoveFile source, destination

MoveFile 메서드 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 항상 FileSystemObject의 이름입니다.
source	필수적인 요소. 이동할 하나 이상의 파일 경로입니다. source 인수 문자열은 맨 뒤의 요소에서만 와일드카드 문자를 사용할 수 있습니다.
destination	필수적인 요소. 하나 이상의 파일이 이동될 경로입니다. destination 인수는 와일드카드 문자를 사용할 수 없습니다.
참고

source에 와일드카드 문자가 있거나 destination이 경로 구분 기호(\)로 끝나면 destination을 일치하는 파일을 이동하기 위한 기존의 폴더라고 가정합니다. 그렇지 않을 경우 destination을 작성할 대상 파일의 이름이라고 가정합니다. 어느 경우라도 각 파일이 이동될 때 아래 세 경우가 발생할 수 있습니다.

•	보편적인 경우 destination이 존재하지 않으면 파일이 이동됩니다.

•	destination이 존재하는 파일이라면 오류가 발생합니다.

•	destination이 디렉터리라면 오류가 발생합니다.

source에서 사용되는 와일드카드 문자가 어느 파일과도 일치하지 않을 경우에도 오류가 발생합니다. MoveFile 메서드는 오류가 처음 발생할 때 중단됩니다. 오류가 발생하기 전에 이루어진 변경 사항을 처음으로 되돌리거나 취소하지 않습니다.

중요   이 메서드는 운영 체제에 의해 지원될 경우에만 볼륨 간에 파일을 이동시킬 수 있습니다.


MoveFolder 메서드

설명

한 개 이상의 폴더를 한 곳에서 다른 곳으로 이동합니다.

구문

object.MoveFolder source, destination

MoveFolder 메서드 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 항상 FileSystemObject의 이름입니다.
source	필수적인 요소. 이동할 하나 이상의 폴더 경로입니다. source 인수 문자열은 맨 뒤의 요소에서만 와일드카드 문자를 사용할 수 있습니다.
destination	필수적인 요소. 하나 이상의 폴더가 이동될 경로입니다. destination 인수는 와일드카드 문자를 사용할 수 없습니다.
참고

source에 와일드카드 문자가 있거나 destination이 경로 구분 기호(\)로 끝나면 destination을 일치하는 파일을 이동하기 위한 기존의 폴더라고 가정합니다. 그렇지 않을 경우 destination을 작성할 대상 폴더의 이름이라고 가정합니다. 어느 경우라도 각 폴더가 이동될 때 아래 세 경우가 발생할 수 있습니다.

•	보편적인 경우 destination이 존재하지 않으면 폴더가 이동됩니다.

•	destination이 존재하는 파일이라면 오류가 발생합니다.

•	destination이 디렉터리라면 오류가 발생합니다.

source에서 사용되는 와일드카드 문자가 어느 폴더와도 일치하지 않을 경우에도 오류가 발생합니다. MoveFolder 메서드는 오류가 처음 발생할 때 중단됩니다. 오류가 발생하기 전에 이루어진 변경 사항을 처음으로 되돌리거나 취소하지 않습니다.

중요   이 메서드는 운영 체제에 의해 지원될 경우에만 볼륨 간에 폴더를 이동시킬 수 있습니다.


OpenAsTextStream 메서드

설명

지정된 파일을 열어 파일을 읽거나 쓰거나 또는 추가하는데 사용할 수 있는 TextStream 개체를 반환합니다.

구문

object.OpenAsTextStream([iomode, [format]])

OpenAsTextStream 메서드 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 항상 File 개체의 이름입니다.
iomode	선택적인 요소. 입출력 모드를 나타냅니다. 다음 세 상수 중의 하나입니다. ForReading, ForWriting, ForAppending.
format	선택적인 요소. 세가지 Tristate 값 중의 하나가 열린 파일의 형식을 나타내는데 사용됩니다. 생략되면 파일은 ASCII 형식으로 열립니다.
설정

iomode 인수 값은 아래와 같습니다.

상수	값	설명
ForReading	1	읽기 전용 파일을 엽니다. 이 파일에 쓸 수는 없습니다.
ForWriting	2	쓰기 파일을 엽니다. 같은 이름의 파일이 존재하고 있으면 이전 내용은 새 내용으로 겹쳐집니다.
ForAppending	8	파일을 열어 파일의 끝에 추가로 씁니다.
format 인수 값은 아래와 같습니다.

상수	값	설명
TristateUseDefault	-2	시스템의 기본값으로 파일을 엽니다.
TristateTrue	-1	Unicode로 파일을 엽니다.
TristateFalse	0	ASCII로 파일을 엽니다.
참고

OpenAsTextStream 메서드는 FileSystemObject의 OpenTextFile 메서드와 같은 기능을 제공합니다. 이외에 OpenAsTextStream 메서드를 사용하여 파일을 쓸 수 있습니다.

아래 코드는 OpenAsTextStream 메서드의 사용 방법을 설명합니다.

Sub TextStreamTest

    Const ForReading = 1, ForWriting = 2, ForAppending = 3

    Const TristateUseDefault = -2, TristateTrue = -1,

TristateFalse = 0

    Dim fs, f, ts, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    fs.CreateTextFile "test1.txt"            '파일을 작성합니다.

    Set f = fs.GetFile("test1.txt")

    Set ts = f.OpenAsTextStream(ForWriting, TristateUseDefault)

    ts.Write "안녕하십니까?"

    ts.Close

    Set ts = f.OpenAsTextStream(ForReading, TristateUseDefault)

    s = ts.ReadLine

    MsgBox s

    ts.Close

End Sub


OpenTextFile 메서드

설명

지정된 파일을 열어 파일을 읽거나 추가하는데 사용되는 TextStream 개체를 반환합니다.

구문

object.OpenTextFile(filename[, iomode[, create[, format]]])

OpenTextFile 메서드는 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 항상 FileSystemObject의 이름입니다.
filename	필수적인 요소. 열어 볼 파일을 식별하는 문자식입니다.
iomode	선택적인 요소. 입출력 모드를 나타냅니다. ForReading과 ForAppending 중 하나가 될 수 있습니다.
create	선택적인 요소. 지정된 filename이 존재하지 않을 경우 새 파일의 작성 여부를 나타내는 Boolean 값입니다. 값이 True이면 새 파일을 작성하고 그렇지 않다면 False입니다. 기본값은 False입니다.
format	선택적인 요소. 세가지 Tristate 값 중의 하나가 열린 파일의 형식을 나타내는데 사용됩니다. 생략하면 파일은 ASCII 형식으로 열립니다.
설정

iomode 인수 값은 아래와 같습니다.

상수	값	설명
ForReading	1	파일을 읽기 전용으로 엽니다. 이 파일에 쓸 수는 없습니다.
ForAppending	8	파일을 열어 파일의 끝에 추가로 씁니다.
format 인수 값은 아래와 같습니다.

상수	값	설명
TristateUseDefault	-2	시스템의 기본값으로 파일을 엽니다.
TristateTrue	-1	Unicode로 파일을 엽니다.
TristateFalse	0	ASCII로 파일을 엽니다.
참고

아래 코드는 OpenTextFile 메서드를 사용하여 파일을 열어 텍스트를 추가하는 방법을 설명합니다.

Sub OpenTextFileTest

    Const ForReading = 1, ForWriting = 2, ForAppending = 3

    Dim fs, f

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.OpenTextFile("c:\testfile.txt", ForAppending,TristateFalse)

    f.Write "안녕하십니까?"

    f.Close

End Sub


Read 메서드

설명

TextStream 파일에서 지정된 개수만큼의 문자를 읽고 그 문자열을 반환합니다.

구문

object.Read(characters)

Read 메서드 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 항상 TextStream 개체의 이름입니다.
characters	필수적인 요소. 파일에서 읽고 싶은 문자의 개수입니다.


ReadAll 메서드

설명

전체 TextStream 파일을 읽어 전체 문자열을 반환합니다.

구문

object.ReadAll

object는 항상 TextStream 개체의 이름입니다.

참고

큰 파일의 경우 ReadAll 메서드를 사용하면 메모리를 낭비합니다. 파일을 입력하기 위해서는 줄 단위로 파일을 읽는 것 같은 다른 방법을 사용하는 것이 좋습니다.


ReadLine 메서드

설명

TextStream 파일에서 줄 바꿈 문자까지의(포함하지는 않고) 전체 줄을 읽고 그 문자열을 반환합니다.

구문

object.ReadLine

object 인수는 항상 TextStream 개체의 이름입니다.


Remove 메서드(FileSystemObject 개체)
Remove 메서드

설명

Dictionary 개체에서 키와 항목 한 쌍을 제거합니다.

구문

object.Remove(key)

Remove 메서드 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 항상 Dictionary 개체의 이름입니다.
key	필수적인 요소. Dictionary 개체에서 제거하려는 키와 항목 한 쌍과 관련된 Key입니다.
참고

지정된 키와 항목 한 쌍이 존재하지 않으면 오류가 발생합니다.

아래 코드는 Remove 메서드의 사용 방법을 설명합니다.

Dim a, d, i             '변수 몇 개를 만듭니다.

Set d = CreateObject("Scripting.Dictionary")

d.Add "a", "Athens"     '키와 항목을 몇 개 추가합니다.

d.Add "b", "Belgrade"

d.Add "c", "Cairo"

...

a = d.Remove()          '둘째 쌍을 제거합니다.


RemoveAll 메서드

설명

RemoveAll 메서드는 Dictionary 개체에서 모든 키와 항목 쌍을 제거합니다.

구문

object.RemoveAll

object는 항상 Dictionary 개체의 이름입니다.

참고

아래 코드는 RemoveAll 메서드의 사용 방법을 설명합니다.

Dim a, d, i             '변수 몇 개를 만듭니다.

Set d = CreateObject("Scripting.Dictionary")

d.Add "a", "Athens"     '키와 항목 몇 개를 추가합니다.

d.Add "b", "Belgrade"

d.Add "c", "Cairo"

...

a = d.RemoveAll         'Dictionary를 지웁니다.


Skip 메서드

설명

TextStream 파일을 읽을 때 지정된 문자 수만큼 건너뜁니다.

구문

object.Skip(characters)

Skip 메서드 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 항상 TextStream 개체의 이름입니다.
characters	필수적인 요소. 파일을 읽을 때 건너뛸 문자의 수입니다.
참고

건너뛴 문자는 버립니다.


SkipLine 메서드

설명

TextStream 파일을 읽을 때 다음 줄을 건너뜁니다.

구문

object.SkipLine

object는 항상 TextStream 개체의 이름입니다.

참고

줄을 건너뛰는 것은 다음 줄 바꿈 문자를 포함해서 그 곳까지 줄 안의 모든 문자를 읽고 버린다는 것을 의미합니다.

파일이 읽기 전용으로 열려 있지 않으면 오류가 발생합니다.


Write 메서드

설명

지정된 문자열을 TextStream 파일에 씁니다.

구문

object.Write(string)

Write 메서드 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 항상 TextStream 개체의 이름입니다.
string	필수적인 요소. 파일에 쓰려는 텍스트입니다.
참고

지정된 문자열들을 파일에 각 문자열 사이에 어떤 공백이나 문자 없이 씁니다. WriteLine 메서드를 사용해서 줄 바꿈 문자나 줄 바꿈 문자로 끝나는 문자열을 쓸 수 있습니다.


WriteBlankLines 메서드

설명

TextStream 파일에 줄 바꿈 문자를 지정한 수만큼 씁니다.

구문

object.WriteBlankLines(lines)

WriteBlankLines 메서드 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 항상 TextStream 개체의 이름입니다.
lines	필수적인 요소. 파일에 쓰려는 줄 바꿈 문자의 수입니다.


WriteLine 메서드

설명

지정한 문자열과 줄 바꿈 문자를 TextStream 파일에 씁니다.

구문

object.WriteLine([string])

WriteLine 메서드 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
object	필수적인 요소. 항상 TextStream 개체의 이름입니다.
string	선택적인 요소. 파일에 쓰려는 텍스트입니다. 생략하면 파일에 줄 바꿈 문자를 씁니다.


Dictionary 개체

설명

데이터 키와 항목 쌍을 저장하는 개체입니다.

구문

Scripting.Dictionary

참고

Dictionary 개체는 PERL 조합 배열과 동일합니다. 모든 형태의 데이터가 될 수 있는 항목은 배열에 저장됩니다. 각 항목은 고유 키와 연결됩니다. 키는 각 항목을 검색하는 데 사용되며 보통 하나의 정수나 한 문자열이지만 배열을 제외한 어떠한 것도 될 수 있습니다.

아래 코드에서는 Dictionary 개체의 작성 방법을 설명한 것입니다.

Dim d                   '변수를 작성합니다.

Set d = CreateObject(Scripting.Dictionary)

d.Add "a", "Athens"     '키와 항목을 몇 개 추가합니다.

d.Add "b", "Belgrade"

d.Add "c", "Cairo"

...


Drive 개체

설명

특정 디스크 드라이브나 네트워크 공유 속성에 액세스 합니다.

참고

아래 코드에서는 Drive 개체를 사용하여 드라이브 속성에 액세스하는 방법을 설명합니다.

Sub ShowFreeSpace(drvPath)

    Dim fs, d, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set d = fs.GetDrive(fs.GetDriveName(drvPath))

    s = "드라이브 " & UCase(drvPath) & " - "

    s = s & d.VolumeName  & vbCrLf

    s = s & "사용할 수 있는 공간: " & FormatNumber(d.FreeSpace/1024, 0)

    s = s & " KB"

    MsgBox s

End Sub


Drives 컬렉션

설명

사용 가능한 모든 드라이브의 읽기 전용 컬렉션입니다.

참고

이동식 매체 드라이브에 미디어를 넣지 않아도 그 드라이브들은 Drives 컬렉션에 나타납니다.

아래 코드에서는 For Each...Next 문을 사용해서 Drives 컬렉션을 가져오는 방법과 컬렉션을 반복하는 방법을 설명합니다.

Sub ShowDriveList

    Dim fs, d, dc, s, n

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set dc = fs.Drives

    For Each d in dc

        s = s & d.DriveLetter & " - "

        If d.DriveType = Remote Then

            n = d.ShareName

        Else

            n = d.VolumeName

        End If

        s = s & n & vbCrLf

    Next

    MsgBox s

End Sub


File 개체

설명

한 파일의 모든 속성에 액세스합니다.

참고

아래 코드에서는 File 개체를 얻는 방법과 이 개체의 속성 중 하나를 보는 방법을 설명합니다.

Sub ShowFileInfo(filespec)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(filespec)

    s = f.DateCreated

    MsgBox s

End Sub


Files 컬렉션

설명

폴더에 있는 모든 File 개체의 컬렉션입니다.

참고

아래 코드에서는 For Each...Next 문을 사용해서 Files 컬렉션을 가져오는 방법과 컬렉션을 반복하는 방법을 설명합니다.

Sub ShowFolderList(folderspec)

    Dim fs, f, f1, fc, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFolder(folderspec)

    Set fc = f.Files

    For Each f1 in fc

        s = s & f1.name

        s = s & vbCrLf

    Next

    MsgBox s

End Sub


FileSystemObject 개체

설명

컴퓨터의 파일 시스템에 액세스합니다.

구문

Scripting.FileSystemObject

참고

아래 코드에서는 읽거나 쓸 수 있는 TextStream 개체를 반환하기 위해 사용되는 FileSystemObject를 설명합니다.

Set fs = CreateObject("Scripting.FileSystemObject")

Set a = fs.CreateTextFile("c:\testfile.txt", True)

a.WriteLine("테스트용입니다.")

a.Close

위 코드에서 CreateObject 함수는 FileSystemObject(fs)를 반환합니다. CreateTextFile 메서드는 파일을 TextStream 개체(a)로 작성하고 WriteLine 메서드는 작성된 텍스트 파일에 한 줄의 텍스트를 씁니다. Close 메서드는 버퍼의 내용을 지우고 파일을 닫습니다.


Folder 개체

설명

폴더의 모든 속성에 액세스합니다.

참고

아래 코드에서는 Folder 개체를 얻는 방법과 이 개체의 속성 중 하나를 반환하는 방법을 설명합니다.

Sub ShowFolderInfo(folderspec)

    Dim fs, f, s,

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFolder(folderspec)

    s = f.DateCreated

    MsgBox s

End Sub


Folders 컬렉션

설명

Folder 개체 안에 포함된 모든 Folder 개체의 컬렉션입니다.

참고

아래 코드에서는 For Each...Next 문을 사용해서 Folders 컬렉션을 가져오는 방법과 컬렉션을 반복하는 방법을 설명합니다.

Sub ShowFolderList(folderspec)

    Dim fs, f, f1, fc, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFolder(folderspec)

    Set fc = f.SubFolders

    For Each f1 in fc

        s = s & f1.name

        s = s &  vbCrLf

    Next

    MsgBox s

End Sub


TextStream 개체

설명

파일에 순차적으로 액세스합니다.

구문

TextStream.{property | method}

property와 method 인수는 TextStream 개체와 관련된 속성이나 메서드 중 어느 것도 될 수 있습니다. 실제 사용할 때는 FileSystemObject에서 반환된 TextStream 개체를 나타내는 변수 자리 표시자에 의해 TextStream이 대체됩니다.

참고

아래 코드에서 a는 FileSystemObject의 CreateTextFile 메서드에 의해 반환된 TextStream 개체입니다.

Set fs = CreateObject("Scripting.FileSystemObject")

Set a = fs.CreateTextFile("c:\testfile.txt", True)

a.WriteLine("테스트용입니다.")

a.Close

WriteLine과 Close는 TextStream 개체의 두 가지 메서드입니다.


= 연산자

설명

변수 또는 속성 값을 지정하는 데 사용됩니다.

구문

variable = value

= 연산자 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소	설명
variable	임의의 변수나 쓰기 가능한 속성
value	임의의 숫자나 문자열 리터럴, 상수, 식
참고

등호 왼쪽에 있는 이름은 단순 스칼라 변수나 배열의 요소가 될 수 있습니다. 등호 왼쪽에 있는 속성은 실행 모드에서 쓰기 가능한 속성들만 될 수 있습니다.


AtEndOfLine 속성

설명

TextStream 파일에서 파일 끝 표시 바로 앞에 파일 포인터가 있으면 True를 반환하고 그렇지 않으면 False를 반환하는 읽기 전용 속성입니다.

구문

object.AtEndOfLine

object는 항상 TextStream 개체의 이름입니다.

참고

AtEndOfLine 속성은 읽기 전용으로 열려 있는 TextStream 파일에만 적용되며 그렇지 않은 경우에는 오류가 발생합니다.

아래 코드에서는 AtEndOfLine 속성의 사용 방법을 설명합니다.

Dim fs, a, retstring

Set fs = CreateObject("Scripting.FileSystemObject")

Set a = fs.OpenTextFile("c:\testfile.txt", ForReading, False)

Do While a.AtEndOfLine <> True

    retstring = a.Read(1)

    ...

Loop

a.Close


AtEndOfStream 속성

설명

TextStream의 파일 끝에 파일 포인터가 있으면 True를 반환하고, 그렇지 않으면 False를 반환하는 읽기 전용 속성입니다.

구문

object.AtEndOfStream

object는 항상 TextStream 개체의 이름입니다.

참고

AtEndOfStream 속성은 읽기 전용으로 열려 있는 TextStream 파일에만 적용되며 그렇지 않은 경우에는 오류가 발생합니다.

아래 코드에서는 AtEndOfStream 속성의 사용 방법을 설명합니다.

Dim fs, a, retstring

Set fs = CreateObject("Scripting.FileSystemObject")

Set a = fs.OpenTextFile("c:\testfile.txt", ForReading, False)

Do While a.AtEndOfStream <> True

    retstring = a.ReadLine

    ...

Loop

a.Close


Attributes 속성

설명

파일 또는 폴더의 특성을 반환하거나 설정합니다. 특성에 따라 읽기와 쓰기가 모두 가능하거나 읽기 전용 특성입니다.

구문

object.Attributes [= newattributes]

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

구성 요소	설명
object	필수적인 요소. 항상 File 또는 Folder 개체의 이름입니다.
newattributes	선택적인 요소. 제공될 경우 newattributes는 지정된 object의 특성에 대해 새로운 값입니다.
설정

newattributes 인수의 값은 아래 값 중 하나 또는 아래 값들이 논리적으로 결합된 조합을 사용할 수 있습니다.

상수	값	설명
Normal	0	일반적인 파일. 특성이 설정되어 있지 않습니다.
ReadOnly	1	읽기 전용 파일. 읽기와 쓰기가 모두 가능한 특성입니다.
Hidden	2	숨겨진 파일. 읽기와 쓰기가 모두 가능한 특성입니다.
System	4	시스템 파일. 읽기와 쓰기가 모두 가능한 특성입니다.
Volume	8	디스크 드라이브 레이블입니다. 읽기 전용 특성입니다.
Directory	16	폴더 또는 디렉터리. 읽기 전용 특성입니다.
Archive	32	최종 백업 후에 파일이 변경되었습니다. 읽기와 쓰기가 모두 가능한 특성입니다.
Alias	64	링크 또는 바로 가기. 읽기 전용 특성입니다.
Compressed	128	압축된 파일. 읽기 전용 특성입니다.
참고

아래 코드에서는 파일에 Attributes 특성을 사용하는 방법을 설명합니다.

Sub SetClearArchiveBit(filespec)

    Dim fs, f, r

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(fs.GetFileName(filespec))

    If f.attributes and 32 Then

        r = MsgBox("Archive 비트가 설정되었습니다. 이것을 지우시겠습니까?", vbYesNo, "Archive 비트를 설정하거나/지우십시오.")

        If r = vbYes Then

            f.attributes = f.attributes - 32

            MsgBox "Archive 비트가 지워집니다."

        Else

            MsgBox "Archive 비트가 설정된 채 남아 있습니다."

        End If

    Else

        r = MsgBox("Archive 비트가 설정되지 않았습니다. 이것을 설정하시겠습니까?", vbYesNo, "Archive 비트를 설정하거나/지웁니다.")

        If r = vbYes Then

            f.attributes = f.attributes + 32

            MsgBox "Archive 비트가 설정됩니다."

        Else

            MsgBox "Archive 비트가 지워진 채로 남아 있습니다."

        End If

    End If

End Sub


AvailableSpace 속성

설명

지정된 드라이브나 네트워크 공유에서 사용자가 사용할 수 있는 공간의 양을 반환합니다.

구문

object.AvailableSpace

object는 항상 Drive 개체입니다.

참고

AvailableSpace 특성이 반환하는 값은 보통 FreeSpace 특성이 반환하는 값과 동일합니다. 할당량을 지원하는 시스템의 경우 두 값 사이에 차이가 생길 수도 있습니다.

아래 코드에서는 AvailableSpace 특성의 사용 방법을 설명합니다.

Sub ShowAvailableSpace(drvPath)

    Dim fs, d, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set d = fs.GetDrive(fs.GetDriveName(drvPath))

    s = "드라이브 " & UCase(drvPath) & " - "

    s = s & d.VolumeName  & vbCrLf

    s = s & "사용할 수 있는 공간: " & FormatNumber(d.AvailableSpace/1024, 0)

    s = s & " KB"

    MsgBox s

End Sub


Column 속성

설명

TextStream 파일에서 현재 문자 위치의 열 번호를 반환하는 읽기 전용 속성입니다.

구문

object.Column

object는 항상 TextStream 개체의 이름입니다.

참고

줄 바꿈 문자를 기록하고 다른 문자를 기록하기 전에 Column은 1입니다.


CompareMode 속성

설명

Dictionary 개체에서 문자열 키를 비교하기 위해 비교 모드를 반환하고 설정합니다.

구문

object.CompareMode[ = compare]

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

구성 요소	설명
object	필수적인 요소. 항상 Dictionary 개체의 이름입니다.
compare	선택적인 요소. 값을 제공할 경우 compare는 StrComp와 같은 함수가 사용하는 비교 모드를 나타내는 값입니다.
설정

compare 인수 값은 아래와 같습니다.

상수	값	설명
vbUseCompareOption	�1	Option Compare 문의 설정을 사용하여 비교를 수행합니다.
vbBinaryCompare	0	이진 비교를 수행합니다.
vbTextCompare	1	텍스트 비교를 수행합니다.
vbDatabaseCompare	2	Microsoft Access 전용. 데이터베이스의 정보를 기반으로 비교를 수행합니다.
참고

이미 데이터가 있는 Dictionary 개체의 비교 모드를 변경하려고 하면 오류가 발생합니다.

CompareMode 특성은 StrComp 함수의 compare 인수와 동일한 값을 사용합니다. 2보다 큰 값을 사용하여 특정 로케일 ID(LCID)를 사용하는 비교를 참조할 수 있습니다.


Count 속성(FileSystemObject 개체)
Count 속성

설명

컬렉션이나 Dictionary 개체의 항목 수를 반환합니다. 읽기 전용입니다.

구문

object.Count

object는 항상 적용 대상 목록에 있는 항목 중 하나의 이름입니다.

참고

아래 코드에서는 Count 속성의 사용 방법을 설명합니다.

Dim a, d, i             '변수 몇 개를 만듭니다.

Set d = CreateObject("Scripting.Dictionary")

d.Add "a", "Athens"     '키와 항목을 몇 개 추가합니다.

d.Add "b", "Belgrade"

d.Add "c", "Cairo"

a = d.Keys              '키를 가져 옵니다.

For i = 0 To d.Count -1 '배열을 반복합니다.

    Print a(i)          '키를 인쇄합니다.

Next

...


DateCreated 속성

설명

지정된 파일이나 폴더가 작성된 날짜와 시간을 반환합니다. 읽기 전용입니다.

구문

object.DateCreated

object는 항상 File 또는 Folder 개체입니다.

참고

아래 코드에서는 파일에 DateCreated 속성을 사용하는 방법을 설명합니다.

Sub ShowFileInfo(filespec)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(filespec)

    s = "만든 날짜: " & f.DateCreated

    MsgBox s

End Sub


DateLastAccessed 속성

설명

지정된 파일이나 폴더에 마지막으로 액세스한 날짜와 시간을 반환합니다. 읽기 전용입니다.

구문

object.DateLastAccessed

object는 항상 File 또는 Folder 개체입니다.

참고

아래 코드에서는 파일에 DateLastAccessed 속성을 사용하는 방법을 설명합니다.

Sub ShowFileAccessInfo(filespec)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(filespec)

    s = UCase(filespec) & vbCrLf

    s = s & "만든 날짜: " & f.DateCreated & vbCrLf

    s = s & "마지막으로 액세스한 날짜: " & f.DateLastAccessed & vbCrLf

    s = s & "마지막으로 수정한 날짜: " & f.DateLastModified

    MsgBox s, 0, "파일 액세스 정보"

End Sub

중요   이 방법은 동작에 대해 기초를 이루는 운영 체제에 따라 다릅니다. 운영 체제에서 시간 정보를 제공하지 않으면 어떤 것도 반환되지 않습니다.


DateLastModified 속성

설명

지정된 파일이나 폴더가 마지막으로 수정된 날짜와 시간을 반환합니다. 읽기 전용입니다.

구문

object.DateLastModified

object는 항상 File 또는 Folder 개체입니다.

참고

아래 코드에서는 파일에 DateLastModified 속성을 사용하는 방법을 설명합니다.

Sub ShowFileAccessInfo(filespec)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(filespec)

    s = UCase(filespec) & vbCrLf

    s = s & "만든 날짜: " & f.DateCreated & vbCrLf

    s = s & "마지막으로 액세스한 날짜: " & f.DateLastAccessed & vbCrLf

    s = s & "마지막으로 수정한 날짜: " & f.DateLastModified

    MsgBox s, 0, "파일 액세스 정보"

End Sub


Drive 속성

설명

지정된 파일이나 폴더가 있는 드라이브 문자를 반환합니다. 읽기 전용입니다.

구문

object.Drive

object는 항상 File 또는 Folder 개체입니다.

참고

아래 코드에서는 Drive 속성의 사용 방법을 설명합니다.

Sub ShowFileAccessInfo(filespec)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(filespec)

    s = f.Name & " 드라이브 " & UCase(f.Drive) & vbCrLf

    s = s & "만든 날짜: " & f.DateCreated & vbCrLf

    s = s & "마지막으로 액세스한 날짜: " & f.DateLastAccessed & vbCrLf

    s = s & "마지막으로 수정한 날짜: " & f.DateLastModified

    MsgBox s, 0, "파일 액세스 정보"

End Sub


DriveLetter 속성

설명

물리적인 지역 드라이브나 네트워크 공유 드라이브 문자를 반환합니다. 읽기 전용입니다.

구문

object.DriveLetter

object는 항상 Drive 개체입니다.

참고

지정된 드라이브가 드라이브 문자와 연관되지 않을 경우 예를 들어 네트워크 공유가 드라이브 문자에 매핑되지 않을 경우 DriveLetter 속성은 길이가 0인 문자열("")을 반환합니다.

아래 코드에서는 DriveLetter 속성의 사용 방법을 설명합니다.

Sub ShowDriveLetter(drvPath)

    Dim fs, d, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set d = fs.GetDrive(fs.GetDriveName(drvPath))

    s = "드라이브 " & d.DriveLetter & ": - "

    s = s & d.VolumeName  & vbCrLf

    s = s & "사용할 수 있는 공간: " & FormatNumber(d.FreeSpace/1024, 0)

    s = s & " KB"

    MsgBox s

End Sub


Drives 속성

설명

지역 시스템에서 사용 가능한 모든 Drive 개체로 구성되는 Drives 컬렉션을 반환합니다.

구문

object.Drives

object는 항상 FileSystemObject입니다.

참고

이동식 매체 드라이브에 미디어를 넣지 않아도 그 드라이브들은 Drives 컬렉션에 나타납니다.

아래 코드처럼 For Each...Next 구조를 사용하여 Drives 컬렉션의 구성원들을 반복할 수 있습니다.

Sub ShowDriveList

    Dim fs, d, dc, s, n

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set dc = fs.Drives

    For Each d in dc

        s = s & d.DriveLetter & " - "

        If d.DriveType = 3 Then

            n = d.ShareName

        Else

            n = d.VolumeName

        End If

        s = s & n & vbCrLf

    Next

    MsgBox s

End Sub


DriveType 속성

설명

지정된 드라이브의 형식을 나타내는 값을 반환합니다.

구문

object.DriveType

object는 항상 Drive 개체입니다.

참고

아래 코드에서는 DriveType 속성의 사용 방법을 설명합니다.

Sub ShowDriveType(drvpath)

    Dim fs, d, s, t

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set d = fs.GetDrive(drvpath)

    Select Case d.DriveType

        Case 0: t = "알 수 없음"

        Case 1: t = "제거 가능"

        Case 2: t = "고정"

        Case 3: t = "네트워크"

        Case 4: t = "CD-ROM"

        Case 5: t = "RAM 디스크"

    End Select

    s = "드라이브 " & d.DriveLetter & ": - " & t

    MsgBox s

End Sub


Files 속성

설명

숨겨진 파일 특성과 시스템 파일 특성이 설정된 것을 포함하여 지정된 폴더에 포함된 모든 File 개체로 구성되는 Files 컬렉션을 반환합니다.

구문

object.Files

object는 항상 Folder 개체입니다.

참고

아래 코드에서는 Files 속성의 사용 방법을 설명합니다.

Sub ShowFileList(folderspec)

    Dim fs, f, f1, fc, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFolder(folderspec)

    Set fc = f.Files

    For Each f1 in fc

        s = s & f1.name

        s = s &  vbCrLf

    Next

    MsgBox s

End Sub


FileSystem 속성

설명

지정된 드라이브에 대해 사용 중인 파일 시스템의 형식을 반환합니다.

구문

object.FileSystem

object는 항상 Drive 개체입니다.

참고

사용 가능한 반환 형식으로는 FAT, NTFS, CDFS가 있습니다.

아래 코드에서는 FileSystem 속성의 사용 방법을 설명합니다.

Sub ShowFileSystemType

    Dim fs,d, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set d = fs.GetDrive("e:")

    s = d.FileSystem

    MsgBox s

End Sub


FreeSpace 속성

설명

지정된 드라이브나 네트워크 공유에서 사용자가 사용할 수 있는 공간의 양을 반환합니다. 읽기 전용입니다.

구문

object.FreeSpace

object는 항상 Drive 개체입니다.

참고

FreeSpace 속성이 반환하는 값은 보통 AvailableSpace 속성이 반환하는 값과 동일합니다. 할당량을 지원하는 컴퓨터 시스템에서는 이 두 속성 값 사이에 차이가 있을 수 있습니다.

아래 코드에서는 FreeSpace 속성의 사용 방법을 설명합니다.

Sub ShowFreeSpace(drvPath)

    Dim fs, d, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set d = fs.GetDrive(fs.GetDriveName(drvPath))

    s = "드라이브 " & UCase(drvPath) & " - "

    s = s & d.VolumeName  & vbCrLf

    s = s & "사용할 수 있는 공간: " & FormatNumber(d.FreeSpace/1024, 0)

    s = s & " KB"

    MsgBox s

End Sub


IsReady 속성

설명

지정된 드라이브가 준비되어 있으면 True를 반환하고, 그렇지 않으면 False를 반환합니다.

구문

object.IsReady

개체는 항상 Drive 개체입니다.

참고

이동식 매체 드라이브와 CD-ROM 드라이브의 경우 적절한 미디어를 넣고 액세스 준비를 완료한 경우에만 IsReady가 True를 반환됩니다.

아래 코드에서는 IsReady 속성의 사용 방법을 설명합니다.

Sub ShowDriveInfo(drvpath)

    Dim fs, d, s, t

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set d = fs.GetDrive(drvpath)

    Select Case d.DriveType

        Case 0: t = "알 수 없음"

        Case 1: t = "제거 가능"

        Case 2: t = "고정"

        Case 3: t = "네트워크"

        Case 4: t = "CD-ROM"

        Case 5: t = "RAM 디스크"

    End Select

    s = "드라이브 " & d.DriveLetter & ": - " & t

    If d.IsReady Then

        s = s & vbCrLf & "드라이브가 준비되었습니다."

    Else

        s = s & vbCrLf & "드라이브가 준비되지 않았습니다."

    End If

    MsgBox s

End Sub


IsRootFolder 속성

설명

지정된 폴더가 루트 폴더이면 True를 반환하고, 그렇지 않으면 False를 반환합니다.

구문

object.IsRootFolder

object는 항상 Folder 개체입니다.

참고

아래 코드에서는 IsRootFolder 속성의 사용 방법을 설명합니다.

Dim fs

Set fs = CreateObject("Scripting.FileSystemObject")

Sub DisplayLevelDepth(pathspec)

    Dim f, n

    Set f = fs.GetFolder(pathspec)

    If f.IsRootFolder Then

        MsgBox "지정된 폴더는 루트 폴더입니다."

    Else

        Do Until f.IsRootFolder

            Set f = f.ParentFolder

            n = n + 1

        Loop

        MsgBox "지정된 폴더가 " & n & " 수준까지 중첩되었습니다."

    End If

End Sub


Item 속성(FileSystemObject 개체)
Item 속성

설명

Dictionary 개체에서 지정된 key에 대한 item을 반환하거나 설정합니다. 컬렉션에 대해서는 key를 기반으로 하는 item을 반환합니다. 읽기와 쓰기가 모두 가능합니다.

구문

object.Item(key) [= newitem]

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

구성 요소	설명
object	필수적인 요소. 항상 컬렉션이나 Dictionary 개체의 이름입니다.
key	필수적인 요소. 검색하거나 추가할 항목과 관련된 key
newitem	선택적인 요소. Dictionary 개체에만 사용되며 컬렉션에는 전혀 적용되지 않습니다. 값을 제공할 경우 newitem은 지정된 key와 관련되는 새 값입니다.
참고

item을 변경할 때 key가 없으면 지정된 newitem을 사용하여 새로운 key가 만들어집니다. 기존의 항목을 반환하려고 하는데 key가 없으면 새로운 key가 만들어지고 해당되는 항목은 빈 상태로 남아 있습니다.


Key 속성

설명

Dictionary 개체에서 key를 설정합니다.

구문

object.Key(key) = newkey

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

구성 요소	설명
object	필수적인 요소. 항상 Dictionary 개체의 이름입니다.
key	필수적인 요소. 변경될 Key 값
newkey	필수적인 요소. 지정된 key를 대체하는 새로운 값
참고

key를 변경할 때 key가 없으면 런타임 오류가 발생합니다.


Line 속성

설명

TextStream 파일에서 현재 행 번호를 반환하는 읽기 전용 속성입니다.

구문

object.Line

object는 항상 TextStream 개체의 이름입니다.

참고

파일이 처음으로 열리고 나서 아무 것도 기록되기 전에는 Line은 1입니다.


Name 속성(FileSystemObject 개체)
Name 속성

설명

지정된 파일이나 폴더의 이름을 반환하거나 설정합니다. 읽기와 쓰기가 모두 가능합니다.

구문

object.Name [= newname]

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

구성 요소	설명
object	필수적인 요소. 항상 File 또는 Folder 개체의 이름입니다.
newname	선택적인 요소. 값을 제공할 경우 newname은 지정된 object의 새 이름입니다.
참고

아래 코드에서는 Name 속성의 사용 방법을 설명합니다.

Sub ShowFileAccessInfo(filespec)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(filespec)

    s = f.Name & " 드라이브 " & UCase(f.Drive) & vbCrLf

    s = s & "만든 날짜: " & f.DateCreated & vbCrLf

    s = s & "마지막으로 액세스한 날짜: " & f.DateLastAccessed & vbCrLf

    s = s & "마지막으로 수정한 날짜: " & f.DateLastModified

    MsgBox s, 0, "파일 액세스 정보"

End Sub


ParentFolder 속성

설명

지정된 파일이나 폴더의 상위 파일 또는 폴더에 대한 폴더 개체를 반환합니다. 읽기 전용입니다.

구문

object.ParentFolder

object는 항상 File 또는 Folder 개체입니다.

참고

아래 코드에서는 파일에 ParentFolder 속성을 사용하는 방법을 설명합니다.

Sub ShowFileAccessInfo(filespec)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(filespec)

    s = UCase(f.Name) & " in " & UCase(f.ParentFolder) & vbCrLf

    s = s & "만든 날짜: " & f.DateCreated & vbCrLf

    s = s & "마지막으로 액세스한 날짜: " & f.DateLastAccessed & vbCrLf

    s = s & "마지막으로 수정한 날짜: " & f.DateLastModified

    MsgBox s, 0, "파일 액세스 정보"

End Sub


Path 속성(FileSystemObject 개체)
Path 속성

설명

지정된 파일, 폴더 또는 드라이브의 경로를 반환합니다.

구문

object.Path

object는 항상 File, Folder 또는 Drive 개체입니다.

참고

드라이브 문자에 루트 드라이브는 포함되지 않습니다. 예를 들어 C 드라이브의 경로는 C:이지 C:\가 아닙니다.

아래 코드에서는 File 개체에 Path 속성을 사용하는 방법을 설명합니다.

Sub ShowFileAccessInfo(filespec)

    Dim fs, d, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(filespec)

    s = UCase(f.Path) & vbCrLf

    s = s & "만든 날짜: " & f.DateCreated & vbCrLf

    s = s & "마지막으로 액세스한 날짜: " & f.DateLastAccessed & vbCrLf

    s = s & "마지막으로 수정한 날짜: " & f.DateLastModified

    MsgBox s, 0, "파일 액세스 정보"

End Sub


RootFolder 속성

설명

지정된 드라이브의 루트 폴더를 나타내는 Folder 개체를 반환합니다. 읽기 전용입니다.

구문

object.RootFolder

object는 항상 Drive 개체입니다.

참고

드라이브에 있는 모든 파일과 폴더는 반환되는 Folder 개체를 사용하여 액세스할 수 있습니다.


SerialNumber 속성

설명

디스크 볼륨을 고유하게 식별하기 위해 사용되는 일련 번호를 십진수으로 반환합니다.

구문

object.SerialNumber

object는 항상 Drive 개체입니다.

참고

SerialNumber 속성을 사용하여 이동식 매체가 있는 드라이브에 올바른 디스크가 들어 있는지 확인할 수 있습니다.

아래 코드에서는 SerialNumber 속성의 사용 방법을 설명합니다.

Sub ShowDriveInfo(drvpath)

    Dim fs, d, s, t

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set d = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName(drvpath)))

    Select Case d.DriveType

        Case 0: t = "알 수 없음"

        Case 1: t = "제거 가능"

        Case 2: t = "고정"

        Case 3: t = "네트워크"

        Case 4: t = "CD-ROM"

        Case 5: t = "RAM 디스크"

    End Select

    s = "드라이브 " & d.DriveLetter & ": - " & t

    s = s & vbCrLf & "SN: " & d.SerialNumber

    MsgBox s

End Sub


ShareName 속성

설명

지정된 드라이브의 네트워크 공유 이름을 반환합니다.

구문

object.ShareName

object는 항상 Drive 개체입니다.

참고

object가 네트워크 드라이브가 아니면 ShareName 속성은 길이가 0인 문자열("")을 반환합니다.

아래 코드에서는 ShareName 속성의 사용 방법을 설명합니다.

Sub ShowDriveInfo(drvpath)

    Dim fs, d, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set d = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName(drvpath)))

    s = "드라이브 " & d.DriveLetter & ": - " & d.ShareName

    MsgBox s

End Sub


ShortName 속성

설명

이전의 8.3 명명 규칙을 사용해야 하는 프로그램에서 사용되는 간단한 이름을 반환합니다.

구문

object.ShortName

object는 항상 File 또는 Folder 개체입니다.

참고

아래 코드에서는 File 개체에 ShortName 속성을 사용하는 방법을 설명합니다.

Sub ShowShortName(filespec)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(filespec)

    s = " & "" & UCase(f.Name)

    s = s & "" & vbCrLf

    s = s & "의 간단한 이름은 다음과 같습니다." & "" & f.ShortName & ""

    MsgBox s, 0, "간단한 이름 정보"

End Sub


ShortPath 속성

설명

이전의 8.3 파일 명명 규칙을 사용해야 하는 프로그램에서 사용되는 간단한 경로를 반환합니다.

구문

object.ShortPath

object는 항상 File 또는 Folder 개체입니다.

참고

아래 코드에서는 File 개체에 ShortName 속성을 사용하는 방법을 설명합니다.

Sub ShowShortPath(filespec)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(filespec)

    s = " & "" & UCase(f.Name)

    s = s & "" & vbCrLf

    s = s & "의 간단한 경로는 다음과 같습니다. " & "" & f.ShortPath & ""

    MsgBox s, 0, "간단한 경로 정보"

End Sub


Size 속성(FileSystemObject 개체)
Size 속성

설명

파일의 경우 지정된 파일의 크기를 바이트 단위로 반환합니다. 폴더의 경우에는 해당 폴더에 포함된 모든 파일과 하위 폴더의 크기를 바이트 단위로 반환합니다.

구문

object.Size

object는 항상 File 또는 Folder 개체입니다.

참고

아래 코드에서는 Folder 개체에 Size 속성을 사용하는 방법을 설명합니다.

Sub ShowFolderSize(filespec)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFolder(filespec)

    s = UCase(f.Name) & "은(는) " & f.size & "바이트를 사용합니다."

    MsgBox s, 0, "폴더 크기 정보"

End Sub


SubFolders 속성

설명

숨겨진 파일 특성과 시스템 파일 특성이 설정된 것을 포함하여 지정된 폴더에 포함된 모든 폴더로 구성되는 Folders 컬렉션을 반환합니다.

구문

object.SubFolders

object는 항상 Folder 개체입니다.

참고

아래 코드에서는 SubFolders 속성의 사용 방법을 설명합니다.

Sub ShowFolderList(folderspec)

    Dim fs, f, f1, s, sf

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFolder(folderspec)

    Set sf = f.SubFolders

    For Each f1 in sf

        s = s & f1.name

        s = s &  vbCrLf

    Next

    MsgBox s

End Sub


TotalSize 속성

설명

드라이브나 네트워크 공유의 총 크기를 바이트 단위로 반환합니다.

구문

object.TotalSize

object는 항상 Drive 개체입니다.

참고

아래 코드에서는 TotalSize 속성의 사용 방법을 설명합니다.

Sub ShowSpaceInfo(drvpath)

    Dim fs, d, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set d = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName(drvpath)))

    s = "드라이브 " & d.DriveLetter & ":"

    s = s & vbCrLf

    s = s & "전체 크기: " & FormatNumber(d.TotalSize/1024, 0) & " KB"

    s = s & vbCrLf

    s = s & "사용할 수 있는 크기: " & FormatNumber(d.AvailableSpace/1024, 0) & " KB"

    MsgBox s

End Sub


Type 속성(FileSystemObject 개체)
Type 속성

설명

파일이나 폴더의 형식에 대한 정보를 반환합니다. 예를 들어 .TXT로 끝나는 파일의 경우 "텍스트 문서"가 반환됩니다.

구문

object.Type

object는 항상 File 또는 Folder 개체입니다.

참고

아래 코드에서는 Type 속성을 사용하여 폴더 형식을 반환하는 방법을 설명합니다. 이 예제에서는 휴지통이나 다른 고유한 폴더의 경로를 프로시저에 제공합니다.

Sub ShowFileSize(filespec)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFolder(filespec)

    s = UCase(f.Name) & "은(는) " & f.Type " & "입니다.

    MsgBox s, 0, "파일 크기 정보"

End Sub


VolumeName 속성

설명

지정된 드라이브의 볼륨 이름을 반환하거나 설정합니다. 읽기와 쓰기가 모두 가능합니다.

구문

object.VolumeName [= newname]

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

구성 요소	설명
object	필수적인 요소. 항상 Drive 개체의 이름입니다.
newname	선택적인 요소. 값을 제공할 경우 newname은 지정된 object 개체의 새 이름입니다.
참고

아래 코드에서는 VolumeName 속성의 사용 방법을 설명합니다.

Sub ShowVolumeInfo(drvpath)

    Dim fs, d, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set d = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName(drvpath)))

    s = "드라이브 " & d.DriveLetter & ": - " & d.VolumeName

    MsgBox s

End Sub


선택이 잘못되었습니다

키워드를 선택하지 않았거나 통합 개발 환경(IDE)의 구성 요소에 대한 도움말을 선택했습니다. 키워드를 선택하려면 키워드를 하나만 다시 선택하십시오. 만약 IDE에 대한 정보를 보려면 아래 항목 중 하나를 선택하십시오.

코드 창 또는 모듈 창

직접 실행 창 또는 하위 창

지역 창 또는 하위 창

개체 찾아보기

조사식 창 또는 하위 창