엑셀 VBA 기초강좌 3탄! 본격적인 엑셀 연동 시작!

PC & IT|2020. 9. 29. 13:16
반응형

안녕하세요. 지난 2탄까지는 간단하게 엑셀 VBA에서 사용하는 명령어에 대해서 알려드렸습니다. 많이 어려우셨나요? 생각보다 쉽지 않으셨었나요? 저는 사실 개인적으로 처음에 배웠을 때 개념이 제대로 잘 잡혀있지 않다 보니 많이 어려웠는데 개념만 잘 잡고 나니 굉장히 쉽더군요. 

 

개념이 굉장히 중요하다보니 2차례에 걸쳐서 여러분들께 기초 개념에 대해서 설명을 해드렸습니다. 이제는 한번 실전으로 돌입을 해보도록 하겠습니다. 그렇다고 어렵냐고요? 아닙니다. 기초강좌잖아요. 그냥 부담 없이 편하게 한번 따라 해 보는 것만으로도 여러분들 엑셀 VBA 실력 충분히 향상되리라고 봅니다. 그럼 지금 시작하도록 하겠습니다

 

3강 VBA 엑셀에 접목시켜보기

1. 클래스와 구성원

우리는 엑셀에 VB를 접목시키기 위해서는 클래스(객체)와 구성원에 대한 개념이 일단 자리잡혀야 합니다. 클래스란 쉽게 말해서 큰 틀로 보았을 때 하나의 시트가 될 수 있고 또 하나의 엑셀 문서가 될 수 있습니다. 그 클래스의 범위가 바로 위 코드 창의 Sheet1이 해당되며 구성원이란 지정한 클래스를 구성하는 구성체를 이야기합니다.

 

즉 시트는 클래스의 주체가 될 수 있으며 해당 엑셀문서에 구성원에 포함이 될 수 있습니다. 시트를 클래스로 본다면 시트를 구성하고 있는 셀이 클래스의 구성원이 될 수 있겠죠. 위 코딩은 Sheet1이라는 클래스를 구성하고 있는 1열, 1행에 해당하는 셀이라는 구성원에 "셀 A1"이라는 문자를 입력하라고 명령하는 명령어입니다. 실행하면 어떻게 될까요?

이렇게 1, 1 좌표에 셀A1이라는 문자가 입력이 된 것을 볼 수 있습니다. 우리는 이런 식으로 엑셀에 VB 코딩을 접목시켜 매크로를 제작할 수 있습니다.

 

2. Cell과 Range의 차이

시트의 셀 범위를 지정하는 구성원은 크게 두가지가 있습니다. 바로 Cell과 Range 이 두 구성원으로 우리는 셀의 범위를 지정할 수 있는데요. Cell의 경우 단일 셀 지정이 가능하며 Range는 단어 뜻 그대로 범위 지정이 가능합니다. 

 

Cell의 경우 좌표값으로 셀 지정이 가능합니다. (  ,  ) 여기 이 괄호 안에 첫 번째에 들어갈 숫자는 행, 두 번째에 들어가는 숫자는 열로 (1 , 2)로 지정을 하였을 경우 1행의 두 번째 열 즉 B1이 되는 것이죠.

Range의 범위 지정은 저렇게 B1, B2, B3, C1, C2, C3등 구체적인 셀 범위 지정이 가능합니다. 위 코딩처럼 B1부터 C2까지 나는 범위지정을 할거야 라고 지정이 가능하고요. 나는 띄엄띄엄 범위를 지정하고 싶다? 그럼 아래 코딩처럼 하시면 됩니다.

 

이렇게 컴마를 활용을 하면 다중범위 지정이 가능합니다. 이렇게 지정을 하게 되면 각기 다른 범위더라도 동일한 명령을 수행하게 되었을 때 코딩 줄 수가 확실히 줄어들게 되겠죠? 

 

3. For문을 활용한 구구단 만들기

자 이제 어느정도 클래스와 구성원에 대해서 또 시트의 셀 지정에 대한 개념이 어느 정도 잡혔다면 이제는 활용하는 시간을 가져보아야겠죠? For문을 활용을 하여서 구구단을 만들어볼 텐데요. 그전에 For문을 통해 시트에 숫자 값을 입력하는 방법에 대해서 한번 알려드리겠습니다. 근데 사실 1, 2탄을 다 보신 분들이라면 아시리라 믿습니다.

 

자 이렇게 a의 숫자값을 1부터 9까지 For Next를 통해 대입을 시켜준 후 각 해당하는 셀에 해당 값을 입력하게끔 명령을 해주게 되면 좌측 화면에 보이는 것처럼 A1 ~ A9 셀에 1부터 9라는 숫자가 들어간 걸 볼 수 있습니다.

 

여기서 문제 여기에 For문 하나만 더 추가하여 열값도 변수로 바꾸어 주면 구구단을 만들 수 있는데요. 어떻게 해야 될까요?  마지막 부분에 공개하도록 하겠습니다.

 

4. Find문

수많은 데이터에 전부 일괄적인 작업을 진행하지는 않을겁니다. 데이터를 식별 후에 따로 작업을 진행을 해야 하는 경우가 있죠. 우리는 이때 For문과 If문을 이용하여 데이터를 식별해낼 수 있지만 For, IF문을 활용하면 쉽게 식별이 가능하지만 모든 건을 다 조건식을 걸어 식별하기에는 무리가 있겠죠? 우리는 이럴 때 Find문을 사용을 합니다.

A1부터 A22까지 1부터 22라는 숫자가 적혀있습니다. 저는 여기서 숫자 3이라는 값이 있는 Row값을 반환하고 싶습니다. 메시지박스를 통해 변수 a값을 표출할 경우 결괏값이 얼마라고 표출이 될까요?

3이라는 값이 표출이 되었습니다. 3번째 행에 있다는 것을 표출한 것이죠. 더 정확한 주소값을 표출하기 위해서는. Row가 아닌. Address라고 찍으시면 정확한 주소 값이 표출이 됩니다. 이 Find문은 FindNext를 활용하면 범위 내에 포함되어 있는 원하는 값을 찾아낼 때까지 잡아낼 수 있는데 이거는 나중에 설명드리도록 하겠습니다.

 

정답. For문의 위치에 따라 구구단이 가로 또는 세로로 쭉 나열이 된답니다. 한번 응용해보시고 개념을 익히시길 바랍니다.

 

 

320x100

댓글()