3 장비주얼베이직 6.0 문법
TimeValue() 함수 DateValue() 함수와마찬가지로일정규칙에정해진문자열을인자로하여 Time 함수형을 표시 Print TimeValue( 13:2 ) Print TimeValue( 1:2 PM ) Print TimeValue( 13:02:00 ) 결과값 : 1:02:00 오후 MagBox() 와 InputBox() 함수 MsgBox() 함수 : 대화상자에메시지를표시하는함수로사용자가선택한버튼의정수값을리턴 MsgBox() 함수의리턴값 상수값설명 vbok 1 [ 확인 ] 버튼을눌렀을경우 vbcancel 2 [ 취소 ] 버튼을눌렀을경우 vbabout 3 [ 중단 ] 버튼을눌렀을경우 vbretry 4 [ 재시도 ] 버튼을눌렀을경우 vbignore 5 [ 무시 ] 버튼을눌렀을경우 vbyes 6 [ 예 ] 버튼을눌렀을경우 vbno 7 [ 아니오 ] 버튼을눌렀을경우
MsgBox 명령 메시지박스함수와동일한기능을하지만리턴되는값은없다. MsgBox( 메시지 [, 버튼상수 ] [, 타이틀 ] [, 도움말항목, 도움말항목의번호 ]) 메시지 : 사용자에게전달할메시지 타이틀 : 메시지박스의타이틀에표시된문자열 버튼상수 : 박스에표시될버튼의종류. 버튼과아이콘또는기타상수를함께사용하려면각해당상수를더해서사용 종류상수값설명 버튼 아이콘 vbokonly 0 [ 확인 ] 버튼 vbokcancel 1 [ 확인 ], [ 취소 ] 버튼 vbabortretrylgnore 2 [ 중단 ], [ 재시도 ], [ 무시 ] 버튼 vbyesnocancel 3 [ 예 ], [ 아니오 ], [ 취소 ] 버튼 vbyesno 4 [ 예 ], [ 아니오 ] 버튼 vbretrycancel 5 [ 재시도 ], [ 취소 ] 버트 vbcritical 16 치명적메시지아이콘 vbquestion 32 질의경고메시지아이콘 vbexclamation 48 경고메시지아이콘 vbinformation 64 정보메시지아이콘
MsgBox 명령 종류상수값설명 기타 InputBox() 함수 vbdefaultbutton1 0 첫번째버튼을기본값으로 vbdefaultbutton2 256 두번째버튼을기본값으로 vbdefaultbutton3 512 세번째버튼을기본값으로 vbdefaultbutton4 768 네번째버튼을기본값으로 vbapplicationmodal 0 응용프로그램에서의모달속성을가짐 vbsystemmodal 4096 시스템에서의모달속성을가짐 InputBox() 함수는메시지박스와는다르게사용자의입력을필요로할때사용하는대화상자이다. 리턴값은사용자가입력한문자열 MsgBox( 메시지 [, 타이틀 ] [, 기본값 ] [, xpos] [, ypos] [, helpfile, context]) 메시지 : 사용자에게전달할메시지 타이틀 : 대화상자에타이틀에표시된문자열 기본값 : 대화상자안의입력텍스트박스에기본적으로표시될문자열
연산자의종류와우선순위 - 산술연산자 음수를표현밸셈 < 보다작다 + 덧셈 <= 보다작거나같다 / 부동소수나눗셈 > 보다크다 \ 정수나눗셈 >= 보다크거나같다 * 곱셈 <> 같지않다 ^ 누승 = 관계연산자 같다오른쪽항을왼쪽항에대입 Mod 나머지연산 Ls 두개의객체변수가동일한객체를지칭하는지를비교 & 문자열연결 Like 패턴일치비교 논리연산자 Not And Or Xor Equ Imp 논리적부정 : 참 -> 거짓논리곱 : 둘다참인경우만참논리합 : 둘다거짓인경우만거짓배타적논리합 : 서로의논리값이서로다른경우만참양쪽두식의논리값이서로같으면참첫번째항이참이고두번째항이거짓일대거짓
연산자의종류와우선순위 연산자우선순위 예제 ) ^ 누승 - 음수 */ 곱셈, 나눗셈 \ 정수나눗셈 Mod 나머지연산 +- 덧셈, 뺄셈 Private Sub Foum_Paint() X = 123 Y = x ^ 3 * 2 / 3 + 10 Print y End Sub 결과값 : 1240588 Private Sub Foum_Paint() X = 123 Y = (((x ^ 3) * 2) / 3) + 10 Print y End Sub 결과값 : 1240588
제어문 조건비교문 if : 조건을비교하여다른명령을수행하고자할때 if 문을사용 If ~ then ~ End If If 조건 then 처리내용 If 문에서의조건은관계연산자가주로사용된다. 관계연산자사용예의미 = x = y x 는 y 와같다 > x > y x 는 y 보다크다 < x < y x 는 y 보다작다 >= x >= y x 는 y 보다크거나같다 <= x <= y x 는 y 보다작거나같다 <> x <> y x 는 y 는같지않다 If 문에서조건이참일때, 두가지이상의명령을수행하고자할때 If 조건 then 처리내용 1 처리내용 2. End If
If ~ then ~ Else ~ End If If 문에서의조건이맞지않을경우의처리는 Else 문을사용하여처리 If 문은단지조건을가지고그것이참이냐거짓이냐에따라다른내용을수행하도록해주는제어문 If 조건 then 처리내용 1 처리내용 2 Else 처리내용 3 처리내용 4 End If 조건이둘이상인제어구조를원한다면 Elseif 를사용 If 조건 then 처리내용 1 처리내용 2 Elseif 조건 2 then 처리내용 3 처리내용 4 Else 처리내용 5 End If
For ~ Next 문 For ~ Next 는지정한횟수만큼구문을반복실행하게하는명령어 카운터 (count) 의값은 step 이양수인지음수인지에따라늘어나기도하고줄어들기도한다. For ~ Next 문이아직끝나지않았지만루프를종료해야할경우도있는데이때는루프안에서 Exit For 를사용 For 카운트변수 = 초기식 To 정지식 [Stop 증감식 ] [ 반복될명령 ] Next [ 카운트변수 ] 프로그램이실행중 For 문을만나면 변수값이시작값으로세팅된후, For 문과 Next 문사이에있는명령을실행하고 Next 문을만나면변수값을 1 만큼증가시킨후, 변수값이끝값과같거나크면순환을멈추고, 그렇지않으면다시 For 문으로돌아가명령을반복한다. For ~ Next 는단순히동일한명령을반복하는데그치지않고, 변경하는변수값을프로그램에반영할수있다는장점
Do ~ Loop 문 Do Loop Until 문 Do 반복할내용 Loop Until 조건 - For Loop 는어떤횟수만큼실행하고 Do Loop 는어떤조건이참일경우만실행 - For Next 문은카운터변수가았어서정해진횟수만큼반복하면되지만, Do.. Loop 문 에는카운터변수가없기때문에언제순환을끝낼것인가를결정 이순환을종료하는상황을 Until 뒤에따라오는조건에부여 Do Loop Until sum > 1000 Do Unitl Loop 문 - Do Until Loop 문은 Do Loop Until 문과동일한기능을수행하지만, 조건을비교하 는위치가뒤냐앞이냐의차이가있다. - 차이점은 Do Loop Until 문은순환문이적어도한번은수행. 이는조 건을비교하는 Until 구문이뒷부분에위치하고있기때문
Do Loop While 문 - Do Loop While 문은 Until 조건문을사용한 Do 순환문과비슷하지만, 조건을비교하는방식이다르다. Do 반복할내용 Loop While 조건 Do While Loop 문 - Do Loop Until 문과 Do Until Loop 문의차이처럼, Do While Loop 문은조건을 먼저비교한후, 순환여부를결정 X = 0 Do While X < 10 Print X X = X + 1 Loop 결과값 : 없음
While ~ Wend 문 While ~ Wend 문은 Do ~ Loop 문보다덜강력한명령이다. Do ~ Loop 문은 Exit Do 로종료할수있지만 While ~ Whend 문은조건이참일동안루프를계속수행 While 조건식 [ 반복할명령 ] Wend Select Case 문 여러개의 If ~ Then 구조를사용할때혼란을야기할수도있게된다. 이때 Select Case 문을쓰는것이훨씬용이하다. Select Case 문은어떤대상을일치가능한모든목록과비교 Select Case 변수 Case 값 1 처리 1 Case 값 2 처리 2 Case 값 3 처리 3. End Select
Select Case 문 Select Case 문에서여러개의값에동일한처리를하고싶으면콤마 (,) 로묶어서나타낸다. 범위를비교하기위해서는비교연산자를사용할수있다. ( =. <>, >, <. >=, <= ) Is 키워드와 To 키워드를사용키워드사용예용도 Is Case Is <10 To Case 10 To 20 변수의값을 Is 다음의식과비교한다. 왼쪽의사용예는변수값이 10 미만일때를의미변수값의범위를정한다. 왼쪽의사용예는변수의값이 10에서 10 사이일때를의미 GoTo 문 GoTo 문은주어진프로시저, 함수, 이벤트프로시저안에서만원하는다른위치로프로그램흐름을이동 참고로하나의프로시저에서다른프로시저나서브함수등으로는이동할수없다. GoTo line. Line:
With ~ End With 문 객체의속성을참조하는데있어서그객체의속성을한꺼번에참조할수있도록해주는편리한기능을제공 객체의속성을지정하거나메소드를사용할때, 때로는여러개의속성을동시에변경하거나여러번메소드를반복해서사용하는경우가있다. 일일히객체의이름을사용하기보다는 With End With 문을사용하면코드가깔끔하고보기편리 With 객체 [ 실행명령 ] End With
함수와프로시저 Return 값의여부에따른분류 Sub 프로시저 - 프로시저는일정한기능을수행하는코드명령어. 이전에는 절차문 이라 고도번역 - 프로시저는일을수행하기위해서매개변수를입력받을수있으나결과값은 되돌려받을수없다. 결과값을받고자한다면함수를사용 [ Private Public Friend Static] Sub 프로시저명 [ ( 매개변수 ) ] [ 실행명령 ] [ Exit Sub ] [ 실행명령 ] End Sub - [ Private Public Friend Static] 는제한자. 제한자를사용하지않을경우는내부적으로 public 으로선언
함수 - 함수는프로시저와비슷한기능을가지고있으나프로시저와는달리연산결과 의리턴값을받을수있다. [ Private Public Friend Static] Function 함수명 [ ( 매개변수 ) ] [ As 데이터형 ] [ 실행명령 ] [ Exit Function ] [ 실행명령 ] End Sub - 함수에서는연산의결과값을돌려주는방법으로자신의이름을사용. 이것 은함수도일종의포인터이기때문에가능. 함수를사용할경우함수 명뒤에리턴되는데이터의크기를명시 - 프로그램내부에서는 Public 처럼사용되고외부에서는 Private 처럼사용되는 것이 Friend 란선언문이다. 단변수에는사용할수없다. Scope( 범위 ) 에따른분류 Public 프로시저 Private 프로시저
비주얼베이직에서 Sub 프로시저와함수의선언방법 비주얼베익직의메뉴항목에서 도구 메뉴를선택한후 프로시저추가 항목을선택하게되면함수나 Sub 프로시저를설정할수있는대화상자를볼수있다. 추가할프로시저의이름을설정 추가할프로시저의형식을설정 추가할프로시저의범위를설정 DemoFunction 이란함수를생성 추가할프로시저내의변수를 Static 으로설정
매개변수 ( 파라미터 ) 전달방법 Call By Reference - 디폴트방식 - 키워드 ByRef 사용 Private Sub changeproc(x as Integer, Y as Integer) Temp = X X = Y Y = temp End Sub Call By Value - 키워드 ByVal 사용 선택적인인수 - 키워드 Optional 사용
배열 배열이란같은형식의데이터들로이루어진집합 고정길이배열 처음배열을선언할때그크기를정해주어야한다. 선언방법은변수선언과크게다르지않으나저장할데이터의수를지정 배열을선언할때사용되는배열의크기 ( 상한값 ) 를 첨자 라고한다. 상한값은 Long 데이터형으로 -2,147,483,648~2,147,483,647 의범위를벗어날수없다. 배열의하한값설정 Dim 배열이름 ( 상한값 ) As 데이터형식 Dim 배열이름 ( 하한값 To 상한값 ) As 데이터형식 다차원배열 (Mulitdimensional Array) Dim KorScore(9) As Integer Dim EngScore(9) As Integer
고정크기배열사용을위한제언 - 저장할데이터의용도를고려 - 저장할데이터의수를고려 동적배열 (Dynamic Array) 고정크기배열을사용할때, 얼마나큰배열을만들어야할지정확하게알지못한다면쓸데없이큰배열을생성또는요구사항보다작은배열을만들어에러를유발할지도모를경우에사용 Dim 배열이름 () As 데이터형식 동적배열의크기를설정하고자한다면 ReDim 문을사용 ReDim 배열이름 ( 배열의크기 )
객체변수 3-2 비주얼베이직 6.0 기본문법 비주얼베이직에서는폼이나컨트롤같은객체를하나의변수로사용할수있는데이변수를객체변수 객체를변수로사용하려면우선객체의주소를저장할수있는객체변수를선언 -- 객체변수 ObjVar 를폼 Form1 형으로선언 - Dim ObjVar As Form1 -- 객체변수 ObjVar 를텍스트박스형으로선언 - Dim ObjVar As TextBox 객체변수를선언하고그객체변수를특정한컨트롤과연결시켜주어야한다. Set 명령을이용해서연결 -- 객체변수 ObjVar 를픽쳐박스형으로선언하고사용하려는픽쳐박스 - 컨트롤과연결 Dim ObjVar As PictureBox Set ObjVar = piccolor
주석및들여쓰기 비주얼베이직에서의주석문은어퍼스트로피 ( ) 를사용하는데 Rem 에의한주석문도가능. 설정된주석문은코드 Windows 에서녹색으로나타나고로직과는무관한문장으로변화. Dim A as Integer 변수 A 는정수형이다. Dim B as String Rem 변수 B 는문자열이다. 코드를한줄에작성을다못하고다음줄로넘어가는경우에는언더스코어 (_) 를다음줄로넘어가기전에한칸을띄운상태에서사용 한줄에여러명령을기술하고자할때는명령사이에콜론 (:) 을사용하여나열 Private Sub Form_Paing() x = 123 Print x : Print Str(x) : Print TypeName(x) : Print _ TypeName(Str(x)) End Sub 결과값 : 123( 정수 ) 123( 문자열 ) Integer String