엑셀(EXCEL) – 동적이름정의, Timer를 이용하여 Animation Chart 만들기

 

(Chart가 자동으로 화살표 방향으로 움직이는데 어떻게 표현할 방법이 없어서요)
(GIF로 올리고 싶지만 그만큼의 노력이 필요없을 것 같아서… 사실 게을러서 ㅠㅠ)

저는 업무를 하면서 직원들에게 ‘게을러 져라’라고 말하고 다닙니다.

어떤 일을 하게되면 한번만 하고 말 일이 있고 이것이 두번 세번 반복적으로 일어나면
이것을 양식화시켜 그것의 리스트를 만들고 그 업무의 프로세스를 정의하여 일을 하고
일이 도구나 치구를 사용해서 효율을 높일 수 있으면 개선 프로세스를 만들라고 합니다.

업무를 그냥 마냥 생각없이 하는 것과 프로세스를 만들어 효율화시키는 것은 큰 차이가
있습니다. ‘게을러 져라’는 말을 우회적으로 반복적인 일을 효율적으로 프로세스화시켜
잘 하라는 의미로 얘기합니다. 긍정적인 게으럼을 만들라는 이야기입니다.

ADO, 동적이름 정의를 통해서 데이터를 가져오는 팁을 올렸는데 놀고 있는 컴퓨터
놀리면 뭐합니까! 일 시켜야지요. 조금 더 수정해 내장타이머를 이용해서 자동으로
Chart를 Animation 시켜 볼려고 합니다.

엑셀(EXCEL) – ADO, 동적이름정의, 배열수식을 이용하여 동적 차트 만들기

 

이번 로직은 간단하네요. 몇 줄 안되는 코드를 응용하면 SQL SERVER에서 데이터를
불러와서 뿌려주고 그 자료를 Animation시켜서 사용할 수도 있습니다. 우선 개발도구
Visual Basic을 선택해서 Module을 추가해서 아래 코드를 넣어줍니다.

Option Explicit

Public dTime As Date

Sub SetReDraw()

Dim ws As Worksheet

Set ws = Sheets(“Chart”)

On Error Resume Next

‘ 현재 시간 표시
ws.Cells(20, 8) = Now()

‘ 스크롤 위치 조정, ‘1’ 값을 조정하면 폭을 조절가능
Range(“스크롤”).Value = Range(“스크롤”).Value + 1

‘ 스크롤위치가 데이터크기보다 크면 리셋
If Range(“스크롤”).Value > Cells(20, 7).Value Then

Range(“스크롤”).Value = 1

End If

‘ 자동 스크롤 단위 시간, 분, 초
dTime = Now + TimeValue(“00:00:01”)

‘ 자동 스크롤
Application.OnTime dTime, “SetReDraw”

End Sub

Sub StopSetReDraw()
‘ 자동 스크롤 중지
Application.OnTime dTime, “SetReDraw”, , False

End Sub

그리고 Chart시트에 개발도구 > 삽입 > 양식컨트롤 – 단추를 두개 만들어 줍니다.
한 곳에는 SetReDraw Macro를 적용하고 한 곳에는 StopSetReDraw를 적용합니다.
그리고 버튼을 누르면 Chart가 자동으로 움직입니다.

첨부화일 20150430-애니메이션차트만들기