Lost Information!

엑셀 VBA 기초 - OFFSET을 활용 해보자 - 2편 본문

개인브랜드블로그를 만들어 보자/엑셀VBA

엑셀 VBA 기초 - OFFSET을 활용 해보자 - 2편

Lostinformation 2020. 11. 6. 21:15

모두가 칼퇴하는 그날까지~

 

지난 글에서는 

offSET를 활용하기 위해

캄보 박스에 설정과

유저 폼을 설정하는 방법을

알려드렸는데요.

 

만일 저번 내용을 모르시거나

기억이 나질 않으신다면

밑에 글을 참고해주세요.

red-s.tistory.com/2437

 

엑셀 VBA 기초 - OFFSET을 활용 해보자 - 1편

모두가 칼퇴하는 그날까지~ 지난 글에서는 엑셀에 있는 데이터 표에 원하는 데이터가 가지고 마우스 오른쪽 버튼을 눌러 차트를 생성하는 법을 알려드렸는데요. 만일 저번 내용을 모르시거나

red-s.tistory.com

그럼 바로 이어서 

진행하도록 하겠습니다.

 

그럼 유저 폼의 

내가 지정해놓은

숫자가 변경될 때마다

데이터 표의 색상이

알아서 변경되도록

지정해야 하는데요.

 

 

필터를 누를 때마다 유저 폼이

뜰 수 있도록 설정하기 위해

미리 필터라고 만들었습니다.

 

그럼 바로 연결해보도록

하겠습니다.

 

ALT +F11을 눌러주세요.

 

그다음 삽입에서 

모듈을 하나 추가해주세요.

 

바로 설명 들어가면

 

Sub filter_show()

필터 쇼라고 지정할게

 

Userform1.show

유저 폼 1을 보여줘

 

이렇게 적고 저장한 후에

 

필터에 마우스 오른쪽 버튼을

누른 뒤 매크로 지정을 통해

filter_show를 지정하게 되면

 

이렇게 필터를 

누를 때마다 유저 폼이 

뜨게 되는 것을 

확인할 수 있습니다.

 

그럼 이제 우리가 할 것은

데이터 표의 색상이 

변경되는 것이겠죠?

 

 

아까 사용했던

모듈 창에 그대로 

적어주시면 되는데요.

 

바로 설명해드리면

 

Sub color_change()

color_change라는

이름으로 지정해줘

 

Dim rngR As Range

rngR이라는 변수를

설정해줘

 

Dim rngd   As Range

rngd이라는 변수를

설정해줘

 

Set rngd = Range("M13:M" & Range("B2"))

rngd는 M13부터 

M열의 마지막 행까지야

(B2열에 마지막행 번호를

계산해놓았음)

 

Range("L13:R" & Range("B2")). Interior.ColorIndex = 0

L13부터 R의 마지막까지

모든 배경색을 흰색으로

변경해줘

 

For Each rngR In rngd

rngR은 rngd에 있는데

 

If rngR = Range("b3") Then

만약 rngR의 값이

b3의 값과 같다면

 

rngR.offset(0,-1). Resize(1, 7). Interior.ColorIndex = 6

그 값은 왼쪽으로 

이동하고 오른쪽으로

일곱 칸의 색상을

모두 다 노란색으로 

변경해줘

 

이렇게 적으시고 저장한 후에

실행하게 되면

 

 

이렇게 변경되게 되죠.

 

여기서 OFFSET을 사용하게

된 이유를 설명드리면

 

변수로 잡은 반의 숫자로

부터 왼쪽으로 이동해서 

색상을 쭉 변경해야 하기에

OFFSET을 사용해서 

왼쪽으로 이동시킨 것입니다.

 

 

그리고 유저 폼에 들어가

캄보 박스를 더블클릭해주시면

이런 창이 뜨게 되는데요.

 

range("B3") = me.comboBox1.value

b3의 값은 캄보 박스의 

값을 넣어주면 된다.

 

call color_change

color_change라는

매크로를 호출해주세요.

 

이렇게 저장하고 실행하면

 

 

이렇게 유저 폼의 

값을 변경할 때마다 

원하는 반의 색상이

변경되는 데이터 표를

만들 수 있습니다.

 

생각보다 상당히 

많이 사용하게 되는 

기능인데요.

 

offset를 활용함으로써

조금 더 쉽게 만들 수 

있기에 꼭 직접 적어보시고

익히셨으면 좋겠습니다.

 

여기까지 궁금하신 점은

댓글에 남겨주시고요.

 

공감구독도 부탁드립니다.

 

 

 

 

Comments