우보천리 개발

[컴활1급] 액셀 기타작업3 - 프로시저 사용방법 / 폼초기화 / 기본값 선택 / 참조표 / 개체추가 본문

자격증/컴퓨터활용능력 1급

[컴활1급] 액셀 기타작업3 - 프로시저 사용방법 / 폼초기화 / 기본값 선택 / 참조표 / 개체추가

밥은답 2022. 1. 4. 00:52
반응형

액셀 프로시저

액셀의 마지막 문제를 담당하고 있는 프로시저 구현 파트이다. 

많은 사람들은 이 부분에서 1번과 3번을 풀고 2번은 전략적으로 

안푸는 경향이 많은데 사실 프로시저에서 부족한 점수를 더 얻어갈 수 있는

좋은 문제라고 생각한다. 또한 몇 가지만 암기하면 무조건 점수를 가져갈 수 있다.


VBA 프로시저 사용하기

우선 프로시저 문제를 풀기 위해서는 [개발도구] - [디자인 모드]

클릭 후 문제에서 요구한 버튼을 더블클릭해주면 된다.

EX) 자료입력 버튼을 누르면 ~

[개발도구] - [디자인 모드] - 자료입력 버튼 더블클릭

 

혹은 키보드 ALT + F11 을 눌러도 된다.


1. ~버튼을 클릭하면 ~폼이 나타나도록

사실 5점을 가장 쉽게 획들 할 수 있는 문제라고 생각한다.

 

폼 열기 기본 공식

폼이름.show

예시) <자료입력> 폼이 나타나도록 하시오

자료입력.show

<폼이름> 에 해당하는 부분에 문제에서 요구하는 폼을 적어주면 된다.

열고자 하는 폼의 이름을 주의 깊게 봐야 한다.

<자료입력> 폼과 <자료입력폼> 폼은 다르기 때문이다.

 

그럼 이제 문제에서 요구하는 [자료입력] 버튼을 클릭하면 

폼이 나오도록 해야 된다.

위에서 설명한 대로 디자인 모드로 진입하면 아래와 같이 나올 것이다.

Cmd자료입력_Click()은 자료입력 버튼을 Click 했을 때 수행하는 

명령이라는 것이다.

해당 버튼을 눌렀을 때 수행하고자 하는 명령을

Private Sub Cmd자료입력_Click()

End Sub

사이에 적어주면 된다.

Private Sub Cmd자료입력_Click()
자료입력.Show
End Sub

2. 폼이 초기화(Initialize) 되면 다음과 같이 초기화하시오

보통 폼을 나타나게 하면 폼을 초기화하는 작업을 수행한다.

 

1. 목록상자에 특정 필드의 내용이 나오게 하는 방법

2. 특정 개체를 추가해주는 방법

3. 기본 값 설정

 

이런 작업을 수행하게 된다

ALT + F11로 VBA 진입

 

폼에 대해 작업하기 위해서 왼쪽 사이드바에서 [폼] - [폼이름] 을 눌러주면 된다.

 

주문접수 폼

그러면 폼이 이런 식으로 나오게 될 것이다.

폼이 초기화, Initialize가 될 때 수행되어야 하기 때문에

폼의 빈 공간을 더블클릭해주면 된다.

 

왼쪽 위를 Initialize로 변경

 

그러면 위에서 보았던 코드 입력기가 뜰 것인데 중요한게

오른쪽 위에 있는 수행작업을 Initialize로 바꿔줘야 한다.

 


2-1. 목록상자에 참조표 내용이 목록으로 표시

K6:M9

위 사진의 참조표를 목록으로 재료상자안에 나타내야한다.

해당 참조표의 범위는 "K6:M9"이다.

 

공식

Private Sub UserForm_Initialize()
목록상자명.rowsource = "참조표범위"
End Sub

list메뉴목록에 위 그림의 참조표를 나타내게 하기위해서는

 

Private Sub UserForm_Initialize()
list메뉴목록.rowsource = "K6:M9"
End Sub

입력해주면 된다.

참조표의 범위는 " "(큰따옴표)로 묶어줘야한다.

 

폼2-1

이제 [디자인 모드] 를 빠져나와 폼을 표시하는 버튼을 눌러서 확인해보면

[재료] 상자 안에 참조표의 내용이 들어가게 된다.

목록상자 안에서 열의 위치는 0부터 시작한다.

[메뉴] 열은 0열

[단품] 은 1열

[세트] 는 2열 이다.


2-2. 참조표가 아닌 개체 추가하기

참조표를 추가하는 경우 .RowSource 명령을 사용하면 되었다.

하지만 사용자가 값을 하나씩 추가해줘야하는 경우에는 다른 명령어를 

사용해야된다.

 

공식

Private Sub UserForm_Initialize()

컨트롤명.AddItem "추가할값"
컨트롤명.AddItem "추가할값"
...

End Sub

주의해야할게 AddItem 이후 = 를 넣지 않는다는 것이다.

바로 " " 큰 따옴표 안에 추가할 값을 넣으면 된다.

 

Private Sub UserForm_Initialize()

list메뉴목록.AddItem "징징버거"
list메뉴목록.AddItem "스폰지버거"
list메뉴목록.AddItem "길동버거"

End Sub

목록상자에 3개의 값을 추가해보았다.

순서대로 추가한 값이 나오는 것을 확인할 수 있다. 


2-3. 폼 초기값 설정하기

위의 그림 폼2-1 에서 인원수 상자와 

음료 (콜라 혹은 사이다) 의 값이 입력되지 않았거나

선택되지 않은 것을 확인할 수 있다.

하지만 폼이 초기화되었을 때 

인원수를 기본적으로 1명, 음료는 콜라가 기본적으로

선택되어 있게 하려면 어떻게 해야할까?

 

우선 해당 컨트롤 상자의 이름을 확인해야된다.

컨트롤 상자를 클릭하고 왼쪽을 보면 속성창이 나오는데

이름을 확인하면 된다.

체크버튼은 속성값 하나 하나 눌러 확인

인원수 상자의 경우 Txt인원수

음료의 경우 Op콜라Op사이다로 나온다.

 

기본값 공식

Private Sub UserForm_Initialize()
컨트롤명 = 값
옵션값 = (True/False)
End Sub

txt인원수를 1명

Op콜라를 기본적으로 선택

 

Private Sub UserForm_Initialize()

list메뉴목록.RowSource = "K6:M9"
Txt인원수 = 1
Op콜라 = True

End Sub

Op콜라 처럼 특정 값을 선택하는 경우에는

True의 값을 주면 된다.

 

인원수에는 1명 음료는 콜라

다시 폼을 열어서 확인해보면 인원수에는 기본적으로 1

음료는 콜라가 기본적으로 선택되어 있다는 것을 확인할 수 있다.

 


2-4. 목록값의 초기값 설정하기

만약 목록의 첫번째 값이 기본적으로 선택되게 하기위해서는

어떻게 해야할까?

[주문접수] 폼의 첫번쨰 행인 

불고기버거 | 12000 | 15000

이 선택되게 하기위해서는?

 

공식

Private Sub UserForm_Initialize()

컨트롤상자명.ListIndex = 0

End Sub

 

.ListIndex 를 사용해주면 된다.

해당 값을 0으로 지정해주면 첫번째 행,

1로 지정하면 두번째 행이 지정된다.

그렇기 때문에 첫 번째 행을 지정하고 싶으면

1이 아니라 0을 설정해줘야 한다.

 

Private Sub UserForm_Initialize()

list메뉴목록.RowSource = "K6:M9"
list메뉴목록.ListIndex = 0
Txt인원수 = 1
Op콜라 = True

End Sub

 

첫 행이 선택

list메뉴목록.ListIndex = 0

을 추가해줬더니 첫 행이 기본적으로

선택되어 있는 것을 확인할 수 있다.


3. 최종코드

RowSource를 사용해야 되는 경우도 있고

AddItem을 사용하는 경우도 있다.

문제가 요구하는 사항에 따라 달라지니

확인을 잘해야 한다.

 

이렇게 폼이 나오도록 하고 폼을 초기화 및

기본값을 설정하는 1번 문제를 끝낸다.

반응형
Comments