본문 바로가기
Excel tip

엑셀 전자시계 만들기. (VBA 코드 + 매크로)

by Manager Ahn 2025. 1. 10.
반응형

 

엑셀로 만드는 전자시계

 

꽤 간단한 엑셀로 전자시계 만드는 방법을 알려드릴게요.

엑셀 시계 만들기

 

위 영상에서도 확인하실수 있지만 실시간으로 움직이는, 현재시간과 정확히 동일하게 움직이는 시계를 엑셀에 만들어보겠습니다.

 

우선 VBA편집기를 Alt + F11 키를 눌러서 열어야 합니다.

 

그리고 삽입 버튼을 눌러 모듈을 누르고 VBA 코드를 입력하시면 되는데요. 

 

사진을 우선 보여드릴게요.

엑셀 전자시계

 

VBA 코드는 아래와 같아요.

==========================================================

Dim TimerActive As Boolean

Sub StartClock()
    TimerActive = True
    UpdateClock
End Sub

Sub StopClock()
    TimerActive = False
End Sub

Sub UpdateClock()
    If TimerActive Then
        ' 현재 시간을 Sheet1의 A1 셀에 표시
        Sheets("Sheet1").Range("A1").Value = Format(Now, "HH:mm:ss")
        ' 1초 후에 UpdateClock 매크로를 다시 호출
        Application.OnTime Now + TimeValue("00:00:01"), "UpdateClock"
    End If
End Sub

=============================================================

 

그리고 삽입에서 단추를 눌러서 위 사진과 같이 버튼을 만들어주고,

 

각 버튼에 StartClock 과 StopClock 매크로를 연결시켜 주면 됩니다.

 

참 간단하죠? ^^

 

이 코드에 대해 더 자세한 설명을 덧붙이자면,

 

 

작동 방식 분석

  1. TimerActive 플래그
    • TimerActive는 시계가 활성화 상태인지 확인하는 변수로, 이를 통해 UpdateClock 호출을 제어합니다.
  2. Now 함수
    • Now는 현재 시스템 시간을 가져옵니다. 시스템 시간이 정확하다면 코드도 정확하게 동작합니다.
    • 로컬 시간대(대한민국 표준시라면 KST)를 기준으로 동작합니다.
  3. Application.OnTime
    • 1초 후에 UpdateClock 매크로를 다시 실행하도록 예약합니다.
    • 이 반복 호출로 실시간 업데이트를 구현합니다.
  4. 시간 형식 지정
    • Format(Now, "HH:mm:ss")는 24시간 형식으로 시간을 표시합니다.

작동 확인

  • 컴퓨터 시스템 시간대가 **대한민국 표준시(KST)**로 설정되어 있다면 이 코드로 정확히 실시간 시간을 표시할 수 있습니다.
  • 문제가 발생하지 않는다면, 추가적인 수정 없이 그대로 사용 가능합니다.

추가 개선 아이디어

  1. 시간 표시 위치 변경
    • 현재 Sheet1의 A1 셀에만 시간이 표시됩니다. 다른 위치에 표시하고 싶다면 코드를 변경하세요:
       
      Sheets("Sheet1").Range("B2").Value = Format(Now, "HH:mm:ss")
    • 위 코드는 Sheet1의 B2 셀에 시간을 표시합니다.
  2. 날짜와 시간 표시
    • 날짜도 함께 표시하려면 Format(Now, "yyyy-MM-dd HH:mm:ss")로 수정하세요:
       
      Sheets("Sheet1").Range("A1").Value = Format(Now, "yyyy-MM-dd HH:mm:ss")
  3. 다른 워크시트 적용
    • Sheet1 외에 다른 워크시트에서 사용하려면, Sheets("Sheet1") 부분을 수정하여 원하는 워크시트를 지정하세요:
       
      Sheets("MySheet").Range("A1").Value = Format(Now, "HH:mm:ss")

 

 

궁금하신 부분은 댓글 남겨주세요

 

감사합니다!

반응형

댓글