본문 바로가기

엑셀VBA

엑셀 VBA 사용해서 특정 셀에 값 넣기

엑셀 VBA(Visual Basic for Applications) 실행하기

엑셀에는 무수한 확장성이 있는데, 그중 가장 유용한 점은 엑셀 파일에 코딩을 넣을 수 있다는 점이다. 최초 엑셀을 설치했을 때는 안 보일 수도 있지만 아래와 같이 파일-> 옵션-> 리본 사용자 지정에서 개발도구를 활성화하면 아래와 같이 Visual Basic이 활성화된다. 해당 버튼을 클릭하면 엑셀에 코딩을 입히는 화면에 들어갈 수 있다.(단축키 Alt+F11)

그림1: 엑셀 Visual Basic 실행하기

모듈 만들기

Visual Basic에 들어가면 아래와 같은 까만색 화면이 뜨는데 왼쪽 파일명 부분을 "우클릭"하여 삽입-> 모듈을 클릭하면 기본 모듈을 하나 만들 수 있다. 클래스 모듈이라는 옵션도 있는데, 복잡한 코드를 구조화할 때 유용한 기능이다.(클래스를 만들어서 구조화 한다.) 하지만 개인적으로 코드를 구조화 하는 지경에 이르렀으면 JAVA나 python 같은 걸로 그냥 프로그램을 따로 만드는게 낫다고 생각한다.

그림2: 엑셀 Module 만들기

VBA를 이용해서 셀에 값 입력하기

입력할 셀의 위치 찾기

모듈 속에는 객체(Object), 함수(Function), 서브루틴(Sub) 등을 넣을 수 있다. 여기서 객체는 하나의 대상이고, 함수는 어떤 작동과 행동을 정의하며, 서브루틴은 프로그램의 특정 작업을 의미한다. 우리는 "셀에 값을 입력하는'' 작업을 해야 하므로 "셀채우기"라는 서브루틴을 하나 만들면 된다.(위 그림 2의 맨 오른쪽 우측 부분에 아래와 같이 써 내려가면 된다.)

Sub 셀채우기()

End Sub

 

셀의 주소는 cells(행번호, 열번호)로 나타낸다. 즉 A1 셀은 1행, 1열에 위치하니 cells(1,1)이 되고, A2 셀은 2행, 1열에 위치하니 cells(2,1)이 된다. 이제 어떤 시트의 셀인지를 나타내는 것이 중요한데, 아래 그림 3의 왼쪽처럼 Sheet1( Sheet1 ) 이라고 나오는 부분을 잘 살펴보면 된다. 이는 Sheet1이라는 객체의 "Sheet1"이라는 이름을 가진 시트라는 뜻이다. 만약 시트 명을 "시트1"이라고 바꾸면 아래 그림 3의 오른쪽처럼 Sheet1 (시트1)이라고 바뀐다.

그림3 엑셀의 시트 객체명과 시트이름

따라서 A1 셀을 Visual Basic 코드로 나타낸다면, 아래와 같은 두 가지 방법이 모두 가능하다.

Sheet1.Cells(1, 1)
Worksheets("시트1").Cells(1, 1)

 

셀의 값 지정 및 코드 실행

A1 셀은 "엑셀로"라는 값을 채우고, A2 셀은 "투자자"라는 값을 채우는 서브루틴은 아래 그림 4와 같이 완성할 수 있다. 이 코드는 VBA 내에서 아래에 표시한 초록색 화살표 버튼(단축키: F5)을 통해서 실행할 수 있다. 단축키 F8을 통해서 코드를 1 줄씩 실행할 수도 있다.

그림4: 최종완성 코드