본문 바로가기
컴활 1급

컴활 1급 실기 - 스프레드 시트 - 4

by TAMIK 2025. 3. 13.
728x90

프로시저

 

버튼을 눌렀을 때 폼 열기

 

'등록' 단추를 눌렀을 때 '학원등록'이라는 폼을 열게 하기 위해서...

개발도구-디자인모드를 선택 후 단추를 더블클릭하여 VBA열기

 

폼이름.Show를 사용하여 폼 열어주기

 


 

왼쪽에 있는 프로젝트-VBAProject 목록에서 폼 폴더에 있는 '학원등록' 폼을 열어주기

초기화(Initialize)

폼이 초기화 되면 반번호(cmb반번호) 목록에는 [G2:G10]  영역 값이 표시되고, 상(opt상)이 기본 선택 되게하는 프로시저

 

폼의 빈 구역 더블 클릭 후

UseForm에서 Initilize로 되어 있는 지 확인.

Private Sub userForm_Initialize()
	cmb반번호.RowSource = "G2:G10"
	opt상.Value = True
End Sub

 

 

 

 

표에 연속하여 데이터 추가하기

예약(cmd예약) 단추를 클릭하면 폼에 입력된 데이터가 표에 있는 마지막 행 다음에 연속하여 추가되는 프로시저의 경우

->유형에는 상(opt상)을 선택하면 '상', 중(opt중)을 선택하면 '중'을 입력하도록

->반 번호에는 유형이 상이면 반번호 뒤에 "A"를, 중이면 반번호를 그대로 입력하도록

->학원비에는 유형이 '상'이면 학원비를 금액의 1.2배, '중'이면 금액 그대로 입력. 숫자는 천단위 표시.

 

B5부터 시작하는 이런 ▼표가 있다고 가정 했을 때

이름 유형 반번호 전화번호 학원비
김누구 MHO 010-1234-5678 3,567,896

조건으로 H5부터 시작하는 표가 있다고 가정 했을 때

반번호 금액
MHO 3,567,896
MOP 2,896,453
HOP 2,568,948
Private Sub cmd예약_Click()
	입력행 = [b4].CurrentRegion.Row + [b4].CurrentRegion.Rows.Count
    /*
    	b4의 행 번호 반환(b4이므로 4) + B4를 포함하는 영역의 행 개수 반환
    	->B4부터 시작하는 행 ~ 마지막 행 번호 + 1 계산 해주는 용도
    	중간에 빈 행 있으면 CurrentRegion 범위 끊길 수 있음 주의
    	왜! B5부터 표가 시작되는데 B4를 넣느냐? 
    	-->CurrentRegion이 제목행 위부터 해줘야 표의 범위를 정확하게 인식함.
    */
    
	참조행 = cmb반번호.ListIndex + 6
    /*
    	콤보박스 반번호에서 인덱스 번호를 찾아주기
        그런데 반번호가 있는 표가 5번 셀(제목 행)부터 시작하기 때문에 반 번호를 찾기 위해서
        목록이 있는 6번 행부터 찾아주기 위해서 +6(ListIndex는 0부터 반환)
    */
    
	Cells(입력행, 2) = txt이름.Value // 입력행이 6이라면 (6, 2)셀 즉, B6셀에 입력
	If opt상.Value = true then
    		Cells(입력행, 3) = "상"
        	Cells(입력행, 4) = cmb반번호.Value & "A"
		Cells(입력행, 6) = Format(Cells(참조행, 9) * 1.2, "#,###")	
        	//참조행 표의 '금액'이 H열(8)부터 시작하는 표의 9번째 열(I열)에 있기 때문에 (행, 9)
	Else
		Cells(입력행, 3) = "중"
           	Cells(입력행, 4) = cmb반번호.Value 
		Cells(입력행, 6) = Format(Cells(참조행, 9), "#,###")
	End If
    
	Cells(입력행, 5) = txt전화번호.Value
End Sub

 



 

종료버튼 누르면 메시지박스 표시 및 폼 종료

Private Sub cmd종료_Click()
    MsgBox Date, vbOKOnly, "폼 종료"
    Unload Me
End Sub

 


 

 

프로시저 문제는 보통 '예약' 버튼을 눌렀을 때~ 문제가 헷갈리는데 여기만 잘 외운다면 문제 없이 쉽게 맞출 수 있다.

728x90