#1 엑셀VBA 처음 사용 (1)우선 처음 실행한 Excel 프로그램은 Visual Basic(이하 생략;VB)이 숨겨져 있다. 사용자에게 괜한 혼란을 가중시킬 필요가 없기 때문이다. 그러므로 숨겨져 있는 프로그램을 화면상에 나오도록 해야 한다.1.[개발 도구] 메뉴에 표시하기[오피스 단추]>[Excel 옵션]>[기본설정]>[리본 메뉴에 개발도구 탭 표시 Check! ]>[확인단추]이 과정은 VBA를 이용한 프로그래밍이 필요할 경우에만 메뉴를 표시하고 워크 시트만 사용할 경우에는 [개발 도구]메뉴를 나타낼 필요가 없다.2.[보안 설정] 하기Excel 매크로는 복잡한 기능을 단순화할 수 있는 편리한 프로그램임과 동시에 컴퓨터 보안에 큰 영향을 미칠수도 있기 때문에 신뢰할수 없는 엑셀 매크로는 사용 하여서는 안된다.*[신뢰할 수 있는 위치] 지정[신뢰할수 있는 위치][Office 단추]>[Excel 옵션]>[보안 센터]>[보안 센터 설정] 단추 클릭Or 엑셀 메뉴:[개발 도구]>[코드]>[매크로 보안] 메뉴 선택 >[보안센터]>[보안 센터 설정] 단추 클릭1.왼쪽 사이드에 [신뢰할 수 있는 위치]선택2.[새 위치 추가]3.[경로]지정 (예상 가능 지점에 만들어선 안된다. 해킹시 문제가 될수 있다.)4.[이 위치의 하위 폴더도 신뢰할 수 있음] Check!5.[확인]6.[신뢰할 수 있는 위치] 경로 표시ㅡ>신뢰할 수 있는 위치에 등록된 디렉토릴 내에 존재하는 엑셀 파일의 매크로는 항상 사용 가능 하다.*[매크로 설정]지정:1.[매크로 설정] 선택2.[모든 매크로 제외(알람표시)(D)] 옵션 선택보안 설정과 관련된 옵션 설정이 완료되면, 엑셀을 종류한 후 재실행 한다.만약. 작업한 엑셀파일을 저장된 디렉토리를 제외한 다른 임의의 장소에서 실행을 할 경우보안 경고를 받게 된다.1.매크로를 포함한 엑셀 파일을 열 때 신뢰할 수 있는 경우가 아니면, 보안 경고가 나타난다.2.[옵션]단추를 누른다.3.신뢰할 수 있는 엑셀 파일이면 [이 콘텐츠 사용(E)] 옵션을 선택한다.4.[확인] 단추를 누르면, 엑셀 파일의 매크로를 사용할 수 있다.*워크시트란?엑셀을 실행하였을 경우 나오는 화면/일반적으로 엑셀은 워크시트를 의미.*VBA?리본메뉴에서 [개발도구]>[Visual Basic]를 선택하면 VBA편집기가 실행된다.3.변수 선언 요구Option Explicit가 선언되면, 프로그램 입력 시 오타에 의한 오류를 찾아내는데 유리하다.1.VB 편집기 열기:엑셀 메뉴:[개발도구]>[코드]>[VB]메뉴선택>VB편집기 열림VB편집기:[도구]>[옵션]메뉴 선택ㅡ>[옵션]창 열림[옵션]창의 [편집기] 탭> [변수 선연 요구]Check! => Excel종료후 재실행.표준 모듈 3가지.(1) 공용 모듈모든 곳에서 호출 가능한 매크로 작성가장 일반적인 사용(2) 워크시트 모듈각각의 워크시트에서 호출 가능한 매크로 작성컨트롤 프로시저 등의 매크로 작성에 사용(3) 워크북 모듈워크북에서 호출 가능한 매크로 작성4.VB코드 입력 및 실행엑셀 파일로 대체.*매크로 실행하는 방법:(1)[매크로]창 열기엑셀 메뉴:[개발 도구] >[코드] > [매크로]선택또는,엑셀 메뉴:[보기]>[매크로]>[매크로]선택또는, 편집기 메뉴:[도구(T)]>[매크로(M)]선택(2)[Sub/사용자 정의 폼 실행] 이용1.매크로 main 내에 마우스 커서 위치2.[Sub/사용자 정의 폼 실행]실행편집기 툴바:[단추>] 누름또는, 편집기 메뉴:[실행(R)]>[Sub/사용자 저으이 폼 실행]메뉴 선택(3)[개체] 이용1.개체 생성[텍스트 상자] 생성또는, [직사각형]/[타원]등의 도형 생성또는, 기타[개체]생성 ㅡ>워크시트 창에서 매크로 실행.2.매크로 지정[개체] 오른쪽 마우스 버튼 클릭>[매크로 지정(N)]선택[매크로 지정] 창이 열리면, 매크로 Sample 선택, [확인]단추 누름 ㅡ>VBA창에서 실행3. 매크로 실행[개체] 클릭> 매크로 Sample 실행 ㅡ>개체를 매크로설정시 매크로를 클릭
제0장 비주얼 베이직 (2)*조건문프로그램에서 조건문은 어떤 조건에 따라 어떤 일을 실행할지 말지를 결정한다.If 조건절 Then실행문End If1.If 조건문은 조건절과 실행문으로 이루어져 있으며, 조건절이 참이면 실행문을 수행한다.2.조건절이 참or 거짓에 따라 실행해야 할 일이 다를시엔 If Else 조건문을 사용.If 조건절 Then실행문Else실행문End If조건 절이 참이면 Then 이하의 실행문을, 거짓이면 Else 이하의 실행문을 각각 수행.If 조건절 Then실행문Else if 조건절 Then실행문Else if 조건절 Then실행문..Else실행문End if3.다중 조건절은 다음과 같이 표현 할수 있다.Not 부정 예) Not(a 0 And b >0Xor 배타적 논리합 예) a > 0 Xor b > 04.조건절에 대하여 다음과 같은 논리 연산자를 이용한 논리식을 조건절로 사용할 수도 있다.If num Then.....End if5.조건절이 하나의 변수/상수/숫자/수식인 경우도 있다.이러한 경우에는 num의 값이 0이 아니면 참이고, 0이면 거짓으로 판단한다.*반복 제어문동일한 문장을 반복적으로 순환하여 계산을 수행할 때, for Next 문을 이용한다.For 변수 = 시작값 To 끝값 [Step 증감값]실행문Next 변수시작하는 값과 끝나는 값, 증감값을 이용하여 원하는 횟수만큼의 반복 계산을 수행한다.여기서, 증감값이 1 일때는 Step 1을 생략할수 있다.10S= ∑i 계산I=10sum = 0For I = 1 to 10sum=sum +iNext i1.1부터 10까지 자연수의 합:※i=1부터 I=10까지 반복 계산을 수행하고 I=11이 되면 10을 초과하여 반복이 중지된다.실행문은 I=1부터 I=10까지 반복되었지만, For Next 문이 종료된 후 I는 11이 된다.2. Do While Loop는 조건절을 이용하여 반복제어를 수행한다.Do While 조건절실행문Loop조건절이 참이면 실행문을 반복 수행하고, 조건절이 거짓이면 반복을 중지한다.*Select Case문Select Case 식 (또는 변수)Case 값1실행문Case 값2, 값3실행문Case 시작값 To 끝값실행문Case Is 비교연산자 값실행문Case Else실행문End SelectSelect Case numCase 10Score = 4Case 9, 8Score = 3Case 5 To 7Score = 2Case Is
#2 엑셀VBA 처음 사용 (2)이번 장에서는 예제sample.xlsm를 이용하여 워크시트에 직접 숫자를 기입하지 않고 프로그램을 이용하여 간편하게 숫자를 넣고 계산하는 프로그램을 만드는 과정을 배웠습니다.1.이름등록하기*이름 등록하는 방법에는 3가지 방법이 있다.[선택 영역에서 만들기]//[이름 정의 메뉴 사용]//[이름상자 사용]//[이름 관리자 사용]선택 영역에서 만들기.1.[A1:B1]영역 선택2.엑셀 메뉴:[수식]>[정의된 이름]>[선택 영역에서 만들기]메뉴 선택3.[왼쪽 열(L) 옵션 선택4.[확인] 단추 누름ㅡ>[B1]셀:“a”(:[A1]셀의 문자열) 이름 등록클릭후 확인이름 정의메뉴를 사용하여 만들기1.[B2]셀 선택2.엑셀 메뉴:[수식]>[정의된 이름]>[이름 정의]메뉴 선택3.[새이름]창에서,[이름(N)=“b”입력4.[확인] 단추 누름ㅡ>[B2]셀:“b”이름 등록클릭후 확인이름 상자이용하여 만들기 이름 관리자 사용하여 만들기1.[B3]셀 선택 1.엑셀메뉴:[수식]>[정의된 이름]>[이름 관리자] 메뉴 선택2.[이름상자]선택 2.[B1]:“a”,[B2]:“b”,[B3]:“sume” ㅡ>확인3.이름“Sum”입력>Enterㅡ>확인★주의 할점1.“c”와“r”임의의 셀을 선택후 이름상자에 “c”를 입력하면, 전체 열이 선택된다.임의의 셀을 선택후 이름상자에 “r”를 입력하면, 전체 행이 선택된다.“c”ㅡ>“_c”“r”ㅡ>“_r”2.디폴트 셀이름 (예:A1,X2,BC3 등)디폴트 셀 이름이 알파벳 열과 숫자 행으로 이루어져 있으므로혼동을 피하기 위하여 A1,X2.BC3등의 디폴트 셀이름은 사용할수 없다.“A1”ㅡ>“A1_”사용3.괄호()를 사용하는 이름(예: F(X)등)함수는 함수명(인수)로 이루어져 있으므로혼동을 피하기 위하여 괄호를 포함한 F(X)와 같은 이름은 사용할수 없다.“F(X)”ㅡ>“F_X”2.[이름]을 이용한 셀 입출력1.[셀 입력]등록 이름 “a”셀의 값을 변수 a에 입력할 때:a= Range(“a”).Cells등록 이름 “b)셀의 값을 변수 b에 입력할 때:b= Range(“b”).Cells※등록 이름과 변수명은 같지 않아도 된다.2.[셀 출력]변수 sum의 값을 등록 이름“sum”셀로 출력할 때:Range(“sum”).Cells=sum※등록 이름과 변수명은 같지 않아도 된다.4.“Sample.xlsm”저장3.텍스트 상자 생성 및 매크로 지정1.텍스트 상자를 이용하여 상자 생성2.팝업 메뉴를 통한 [매크로 지정(N)]ㅡ>[매크로 이름]=“Sample”지정3.팝업 메뉴ㅡ>[도형 서식]ㅡ>도형 채움4.“Sample_TextBox.xlsm”저장4.양식 컨트롤 생성*“Sample.xlsm”불러 온다. [신뢰할 수 있는 위치]인지 확인1.VB 편집기를 이용하여 소스 수정ㅡ>Clear 매크로 추가.2.양식 컨트롤 단추1를 추가한후 매크로[Clear]을 지정한다.ㅡ>단추1를 텍스트 편집을 이용하여 “새로”으로 수정3.이 단추를 복사하여 [Crtl] [V]로 붙여넣고 “새로”ㅡ>“계산”으로 수정4.매크로 지정 “Sample”5. 마우스 드래그로 컨트롤 위치 조정.*[새로]단추를 누르면 [B3]셀의 결과가 지워지고[계산]단추를 누르면 [B3]셀에 두 합의 결과가 출력된다.5.ActiveX 컨트롤*“Sample.xlsm”불러 온다. [신뢰할 수 있는 위치]인지 확인1.개발도구의 삽입에서 Active컨트롤의 명력단추를 생성후 속성 클릭.[(이름)]=“CmdBtnNew”지정//[Caption]=“새로”2.명령단추를 복사후 붙여 넣는다.3.팝업 메뉴를 통하여 속성을 들어간후 [(이름)]=“CmdBtnCalc”지정//[Caption]=“계산”4.[디자인 모드]Off6.ActiveX 컨트롤 프로시저 생성1.프로젝트 탐색기에서 [Module1]제거.2.프로젝트 탐색기에서 [Sheet1]더블클릭후 워크시트 모듈 “Sheet1”생성3.CmdBtnNew지정/CmdBtnCalc지정4.소스 입력ㅡ>[새로]단추를 누르면 [B3]셀의 결과가 지워지고, [계산]단추를 누르면 [B3]셀에 두합의 결과가 출력된다.
#4 제0장 비주얼 베이직 (1)*변수 선언 종류Public 변수명 As 데이터형1. Public 모듈 수준 변수선언모듈 맨 위에서 변수를 선언하며, 프로젝트 전 영역에서 변수의 사용이 가능함.Dim 변수명 As 데이터형또는Private 변수명 As 데이터형2. Private 모듈 수준 변수 선언모듈 맨 위에서 변수를 선언하며, 해당 모듈 내부에서 변수의 사용이 가능함.3. 프로시저 수준 변수 선언Dim 변수명 As 데이터형프로시저 내부에서 변수를 선언. 해당 프로시저 내부에서만 변수의 사용이 가능.프로시저가 호출될 때마다 변수를 새로 선언하고 호출이 종료되면 변수를 해제시키므로 , 프로시저의 다음 호출 시 이전 호출 때 변수에 저장되었던 값은 모두 지워진다.★변수 선언은 다음과 같이 변수명과 데이터 형으로 이루어져 있다. 데이터 형은 정수를 표현하기 위해 Integer, 실수를 표현하기 위하여 Single 또는 Double, 문자열을 표현하기 위하여 String 등을 사용한다. 수치해석에는 실수를 표현할 때 계산의 정확도가 중요하므로 Double을 사용한다. 그러나 Double은 Single에 비하여 2배 많은 데이터를 필요로하는 단점이있다.Integer=16 / Single=32 / Double=64 / String=128개[변수명 규칙](1) 첫 번째 문자는 영문자를 사용(2) 공백이나 마침표(.) 느낌표(!), @, &, $, #문자는 이름에 사용할 수 없다.(3) 길이는 255자를 넘을 수 없다.(4) 엑셀 VBA에서 사용하는 키워드와 같은 일므을 사용할 수 없다 (예: Dim)(5) 대소 문자의 구분이 없다.*프로시저 인수 및 반환형프로시저가 다른 프로시저를 호출할 때 인수를 통하여 변수값을 전달. 특히 Function프로시저는 호출 후 함수명에 저장된 값을 반환한다. 인수와 반환값은 Integer, Double 등 다양한 데이터 형을 가질 수 있고, 변수 선언부와 호출부에서 데이터 형이 서로 일치해야 가능.프로시저의 인수는 데이터 형을 지정할 수도 있고 지정하지 않을 수도 있다. 인수의 데이터형이 지정된 경우에는, 프로시저 호출 시의 인수의 데이터 형과 일치하지 않으면 오류가 발생한다. 따라서, 프로시저 정의 시에 인수의 데이터 형을 지정할 경우에는 꼭 필요한 경우에만 지정해라. 지정하지 않을시엔 프로시저 호출 시의 인수의 데이터 형으로 자동으로 맞추어진다.프로시저를 정의할 때 인수는 이미 변수 선언을 한것이므로, 프로시저 내에서 별도의 변수선언을 하지 않는다 .★Sub 프로시저와 Function 프로시저의 차이점.1.Function 프로시저는 반환형을 갖고 있다. 함수명을 변수처럼 사용하여 반환할 값을 지정.2.프로시저는 다른 프로시저들을 호출하여 실행할수도 있다. 프로시저 내에서 다른 Sub 프로시저나 Function 프로시저들을 호출 하는 방법은Call 매크로명([인수1]....)변수 = 함수명([인수1]....)*연산자와 함수VB는 수치해석과 관련하여 다음과 같은 산술 연산자를 같는다.^ 지수 예) 7 ^ 3 = 7*7*7 = 343+ 덧셈 예) 7 + 3 = 10- 뺄셈 예) 7 ? 3 = 4* 곱셈 예) 7 * 3 = 21/ 나눗셈 예) 7 / 3 = 2.333333(:실수형일 때) 또는 2 (:정수형일 때)₩ 정수몫 예) 7 ₩ 3 = 2Mod 나머지 예) 7 Mod 3 = 1VB에서 사용할수 있는 수학 관련 함수는 다음과 같다.Sin() 사인Cos() 코사인Tan() 탄젠트Atn() 아크탄젠트 ex)Pi= 4* Atn(1)Sqr() 제곱근Log() 자연로그Exp() 지연함수, exponentialAbs() 절대값Sgn() 부호 함수(:0이면 0)Randomize() 난수 발생 seed함수Rnd 난수 생성 (작거나 같은 함수) 예) Int((10*Rnd)+1int() 정수 변환 (작거나 같은 정수) 예) Int((-8.4)=-9Fix() 정수 변환 (소숫점 이하 제거) 예) Fix((-8.4)=-8※나머지 수학 함수는 엑셀 VBA 도움말에서 “파생된 수학 함수”를 참조*수식수식 계산은 숫자, 변수, 상수, 함수 사이에 연산자를 이용하여 계산을 수행한다.()를 사용 하여 항을 묶을 수도 있다. 수식에서 연산자는 이와 같은 우선 순위로 계산이 수행된다.