<프로시저_VBA>
(1) [개발도구]-[컨트롤]-[디자인모드] 에서 컨트롤을 더블클릭하면 VBA 편집모드가 나타난다.
(2) 폼 나타나게 하기 : 폼이름.show
(3) 폼이 초기화되면 지출내역(cmb지출내역) 목록에 ‘i2:i8’ 영역의 값이 표시되도록 프로시저 작성
VBA 편집모드의 프로젝트 브라우저에서 폼을 더블클릭 후
폼의 위에서 더블클릭하면
VBA 편집할 수 있는 창이 나타난다. 여기서 초기화했을 때의 이벤트를 만들 것이므로 오른쪽 위의 목록 중 Initialize를 고른다. 그러면 위와 같은 함수가 하마 생기고, 이 안에서 작업한 코드는 폼이 초기화(initialize) 되었을 때 발생한다.
Private Sub UserForm_Initialize()
cmb지출내역.RowSource = "i2:i8"
End Sub
콤보상자명.rowsource=”범위” : rowsource는 콤보상자 목록을 나타내는 속성이다.
(4) 또는, 폼이 초기화되면 지출내역 목록에 개발자가 지정한 목록이 입력되는 프로지서 작성
*콤보박스에서의 엑셀->컨트롤
Private Sub UserForm_Initialize()
cmb지출내역.AddItem "관리비"
cmb지출내역.AddItem "보험료"
cmb지출내역.AddItem "적금"
cmb지출내역.AddItem "교통비"
cmb지출내역.AddItem "식대"
cmb지출내역.AddItem "기타"
End Sub
콤보상자명.additem “값” : 콤보상자에 들어갈 목록을 직접 작성할 때 사용한다.
(5) frm지출내역 폼의 입력(cmd입력) 단추를 클릭하면 폼에 입력된 지출일자(txt일자), 지출내역(cmb지출내역), 상세내역(txt상세내역), 지출금액(txt금액)을 표시하도록 프로시저 작성.
*컨트롤->엑셀 데이터
Private Sub cmd입력_Click()
r = [a3].Row + [a3].currentRegion.Rows.Count
Cells(r, 1) = txt일자
Cells(r, 2) = cmb지출내역
Cells(r, 3) = TXT상세내역
Cells(r, 4) = txt금액
txt일자 = ""
cmb지출내역 = ""
TXT상세내역 = ""
txt금액 = ""
End Sub
*[a3].row : A3의 행번호를 받고, 반환되는 값은 3이다.
*[a3].currentregion : a3에 연결된 (표) 영역을 지정. A3:c9까지라면 [a4].currentregion도 [c7].currentregion도 같은 영역을 나타낸다.
*[a3].currentregion.rows.count : a3과 연결된 영역의 행 수를 반환한다. A3:c9라면 9-3+1=7을 반환할 것이다. 따라서 폼에서 입력한 데이터는 a10:c10에 입력된다.
*[a3].CurrentRegion.Rows만 쓸 것우 컴파일 오류.
*Cells(r,1)은 r행 1열의 셀을 가리킨다.
(6) 폼 닫기
Private Sub cmd종료_Click()
Unload Me
End Sub
(7) 메시지박스(msgbox) 보이기
Private Sub UserForm_Click()
If cmb종류 = "BC카드" Or cmb종류 = "삼성카드" Then
MsgBox "3개월 무이자 할부 행사 기간입니다." & Time
End If
End Sub
*Time은 현재 시간을 보여준다.
*MsgBox cmb종류&"는 3개월 무이자 할부 행사 기간입니다." & Time
만약 메시지박스에 변수를 넣으려면 큰 따옴표 밖에 &연산자와 함께 넣는다.
(8) 지출일자가 변경되면 위크시트의 지출내역과 지출액이 폼에 표시되도록 프로시저 작성
*엑셀데이터->컨트롤
Private Sub Cmb지출일자_Change()
r = [a3].Row + Cmb지출일자.ListIndex + 1
txt지출내역 = Cells(r, 2)
txt지출액 = Cells(r, 3)
End Sub
Listindex : 목록에서 선택한 값의 행 번호로 0부터 시작한다. (그래서 +1해줌.)
(9) 체크박스 핸들링
If chk인증 = True Then
Cells(r, 6) = "친환경인증"
Else
Cells(r, 6) = ""
End If
초기화는 아래와 같다.
chk인증 = False
(10) 콤보박스 인덱스를 사용한 초기화
cmb제조방법.ListIndex = 0
'Certificate' 카테고리의 다른 글
[컴활1급_실기] 목표값찾기/시나리오/차트 (0) | 2016.12.12 |
---|---|
[컴활1급_실기] 데이터표/데이터통합 (0) | 2016.12.12 |
[컴활1급_실기] 피벗테이블/부분합/자동필터(매크로) (0) | 2016.12.12 |
[컴활1급_실기] 사용자 정의 함수 (0) | 2016.12.12 |
[컴활1급_실기] 배열함수 (0) | 2016.12.12 |