<엑셀VBA 입문 3강> 버튼 클릭하면 실행되는 함수 만들기

<엑셀VBA 입문 3강> 버튼 클릭하면 실행되는 함수 만들기

엑셀은 기본적으로 함수를 제공하고 있다. 우리가 아는 sum, sumif, count, counta 등이 기본함수다. 그런데 추가적으로 사용자가 원하는 함수를 새로 만들어 사용할 수 있다. 함수를 만드는 방법은 크게 3가지가 있다.

함수 만드는 방법 3가지

(1) 단축키로 실행 (매크로)
(2) 버튼을 클릭해서 실행
(3) 수식 입력줄에서 실행

여기서 2번 방식을 배워보자.

1. 엑셀을 켜고 상단의 [삽입] 탭 – [도형] 선택 – [모서리가 둥근 직사각형]을 선택하고 엑셀 상에 적당한 크기로 그려넣는다. 내부 텍스트값은 CLICK이라고 쓴다. 지금부터 이 도형을 버튼이라고 생각하자.

2. 새로 만든 도형(버튼) 위에서 마우스 우클릭하여 [매크로 지정]을 선택한다. [매크로 지정] 윈도우가 뜨면 [새로 만들기] 버튼을 클릭한다. 버튼에 매크로 함수를 연결하는 과정이라 이해하면 된다.

3. VBA 윈도우(Microsoft Visual Basic For Applications의 약자)가 뜰 것이다. “모서리가둥근직사각형1_Click” 이라는 함수가 만들어져있을 것이다. 참고로 “Sub 함수명” 이 함수의 시작이고, “End Sub”가 함수의 끝이다. 여기서 함수명은 중요하지 않으므로, “모서리가둥근직사각형1_Click”이 아니어도 관계없다. 함수 내용부에 MsgBox(“Click Event”) 라고 입력해넣는다.

 

4. VBA 윈도우를 닫는다(엑셀을 닫아선 안됨). Click 버튼을 누르면 “Click Event”라는 내용의 메시지 박스가 뜰 것이다. MsgBox 명령어는 자주 쓰이므로 기억해두는게 좋다.

5. 함수 내용을 조금만 더 발전시켜보자. Alt+F11 키를 누르면 VBA 윈도우가 뜬다. 좌측의 Module1을 더블클릭하여 아까 만든 함수를 열어보자. 함수 내용을 ActiveCell.Offset(0, 0).Value = “현재 셀에 내용입력” 으로 수정해보자.

 

6. 아무 셀이나 빈 셀을 선택해둔 상태에서, Click 버튼을 눌러보자. 선택한 셀의 내용이 “현재 셀에 내용입력”으로 바뀔 것이다.

상당히 유용한 명령어가 등장했는데, ActiveCell.Offset(0, 0).Value 다. 해석하자면 “현재셀.위치조정(0,0).값”이라는 의미다. 응용해서 쓸만한 명령어를 몇 가지 만들어보면 다음과 같다.

ActiveCell.Offset(0, 0).Value = “특정내용”

=> 현재 셀에 “특정내용”을 입력한다.

MsgBox (“value : ” & ActiveCell.Offset(0, 0).Value)

=> 현재 셀의 내용을 메시지 박스로 띄운다.

ActiveCell.Offset(0, 0).Value = ActiveCell.Offset(0, 0).Value & “원”

=> 현재 셀 내용 뒤쪽에 “원”이라는 글자를 붙인다.

ActiveCell.Offset(0, 0).Value = “\” & ActiveCell.Offset(0, 0).Value

=> 현재 셀 내용 앞쪽에 “\”이라는 글자를 붙인다.

ActiveCell.Offset(0, 0).Value = ActiveCell.Offset(1, 0).Value

=> 현재 셀에 바로 아래칸의 셀 내용을 입력한다.

ActiveCell.Offset(0, 0).Value = ActiveCell.Offset(-1, 0).Value

=> 현재 셀에 바로 위칸의 셀 내용을 입력한다.

ActiveCell.Offset(0, 0).Value = ActiveCell.Offset(0, 1).Value

=> 현재 셀에 바로 우측칸의 셀 내용을 입력한다.

ActiveCell.Offset(0, 0).Value = ActiveCell.Offset(0, -1).Value

=> 현재 셀에 바로 좌측칸의 셀 내용을 입력한다.

잘 정리해두면 나중에 엄청나게 도움이 되는 명령어 시리즈다.

4강에서는 수식 입력줄에서 실행하는 함수를 만들어 본다.

이어지는 글 <엑셀VBA 입문 4강> 수식 입력줄에서 함수 실행하기 : https://blog.naver.com/bb_/221249107922

이어지는 글 <엑셀VBA 입문 5강> 특정 단어를 포함하는지 확인하는 함수 : https://blog.naver.com/bb_/221249954442
이어지는 글 <엑셀VBA 입문 6강> VBA 저장하는 법 : https://blog.naver.com/bb_/221253136556