컴퓨터 공부/엑셀 & VBA

[엑셀vba] 사용자 정의 폼을 써보자

도 박사 2021. 1. 28. 22:39
반응형

엑셀vba에는 모듈 말고도 사용자 정의 폼을 만들어 쓸 수 있다.

(word, ppt, access 등 다른 오피스 프로그램들도 마찬가지)

 

간단히 폼에 추가할 수 있는 컨트롤과 사용법에 대해 알아보자.

 


1. 폼 생성

Alt + F11을 눌러 VB 편집기를 열도록 하자.

 

그리고 프로젝트 창에서 마우스 우클릭하여 사용자 정의 폼을 추가한다.

 

만약 프로젝트 창이 안보인다면 Ctrl + R 을 누르거나 '메뉴 > 보기 > 프로젝트 탐새끼'를 누르자.

 

폼 생성 1단계
폼 생성 2단계

이렇게 아무것도 없는 폼이 생성되었다. 


2. 폼 열기

 

폼을 만들었으면 열고 닫는법을 알아야 한다. 

 

이제는 모듈을 하나 추가해서 코드 한 두줄만 작성하면 폼을 열 수 있다.

 

세 줄인디?

프로시저 이름을 정하고 폼 이름을 적고 온점을 누르면 다양한 속성들이 나타난다. 그 중에서 show 속성을 선택하면 폼이 열리게 된다. F5를 눌러 실행하면 유저폼1이 열리는 것을 확인 할 수 있다.

그럼 이제 이 모듈을 시트에서 특정 버튼을 누르면 실행하도록 만들자.

 

* UserForm1.Top = 60  폼의 상하 위치 조절. 0에 가까울수록 위로 올라감. 즉, 위쪽 끝의 값은 0

* UserForm1.Left = 200 폼의 좌우 위치 조절. 0에 가까울수록 왼쪽으로 감. 즉, 왼쪽 끝의 값은 0

 

 

특별한 버튼 '웃는 상'

필자는 '웃는 상'이라는 도형을 클릭하면 모듈1이 실행되도록 설정할 것이다.

 

매크로 지정
만들어둔 모듈을 선택!

확인을 누르면 설정은 끝!

 

웃는상을 클릭해서 폼을 열어보자.

 

 

마우스가 왜 안보이지;;

 

마우스가 안보이긴 한데 주황색 얼굴을 클릭해서 폼이 나타났다.

 

닫을 땐 폼의 우측 상단에 있는 x표시를 눌러서 껐다.

 

요약. UserForm1.show를 이용하면 폼을 열 수 있다.


 

3. 컨트롤 사용

도구 상자에 있는 녀석들은 컨트롤이라고 부르더라. 다양한 컨트롤들이 있는데 하나씩 사용해보자.

 

도구 상자가 보이지 않는다면 메뉴 > 보기 > 도구 상자를 선택하자. 그럼 어딘가에서 띟! 하고 나타난다.


 3.1 레이블(Lable)

라벨, 레이블, 이름표
레이블 생성

그냥 이름표처럼 쓰면 된다. 하지만 여기에 특별함을 주고 싶다면 코드를 추가하여 기능을 만들어보자.

 

필자는 레이블을 클릭하면 레이블이 보이지 않게 해봤다.

 

코드를 입력하려면 레이블을 더블클릭하거나 마우스커서를 레이블 위로 이동하여 우클릭 > 코드보기를 선택하면 된다.

 

 

 

코드 보기

코드보기를 누르면 위와 같은 화면을 볼 수 있다. 대충 프로시저 이름(Label1_Click)만 보더라도 어떨때 코드가 동작하는지 알 수 있다. 

 

레이블1을 클릭하면 실행할 코드를 여기에 작성해주면 된다. 

다른 이벤트

그리고 클릭 이벤트 말고도 여러가지가 있는데 다 안써봐서 잘모른다. 필요한 기능있으면 구글링하거나 MS 도움말을 읽어보자.

 

 

Private Sub Label1_Click()
 
    Label1.Visible = False

End Sub

 

필자는 레이블1을 클릭하면 VISIBLE 속성을 FALSE 해주는 코드를 작성하고 폼을 실행해봤다.

 

레이블이 사라진다!!

굳 잘된다.


3.2 텍스트 상자

텍스트 상자에 '꺼져'를 입력하면 폼이 닫히도록 만들어보자.

 

텍스트 상자 생성

기존에 있던 레이블1 밑에 텍스트 상자를 만들었다. 길이도 딱 맞춰서 보기가 아주 좋구먼

 

텍스트 상자에 폼이 닫히는 기능을 넣어보겠다.

 

한 줄로 해결

텍스트 상자의 Change 이벤트를 이용하여 값이 '꺼져'이면 폼이 닫히도록 코드를 작성했다. 

 

제대로 작동하는지 확인해보자.

 

 

제대로 꺼진다

 

요약. 폼을 닫을때는 Unload Me

 


3.3 


 

 

반응형