컴퓨터 공부/엑셀 & VBA

[엑셀vba] 셀 데이터가 변경되면 옆 셀에 변경된 시간을 표시 해보자!

도 박사 2021. 9. 10. 22:59
반응형

특정 셀의 데이터가 변경될 경우 언제 바꼈는지 시간을 기록하고 싶을 때가 있다.

간단한 vba 코딩으로 해결해보자!


1. VBA 코드(단일 셀)

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 1 And Target.Row > 1 Then
        Cells(Target.Row, "D") = time
    End If
End Sub

Target = 현재 데이터가 변경된 셀 정보

time = 현재 시간 정보 (시분초)

now = 오늘 날짜 및 시간 (년월일 시분)

 

코드 해석: 타켓의 열이 1번(A열)이고 행이 1보다 크다면 타켓의 행번호와 D열에 현재 시간을 입력하라.

코드 실행 결과


2. VBA 코드(범위)

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 1 And Target.Row > 1 Then
        If Target.Count > 1 Then
            Range(Cells(Target.Row, "D"), Cells(Target.Row + Target.Count - 1, "D")) = Time
        Else
            Cells(Target.Row, "D") = Time
        End If
    End If
End Sub

타겟의 카운트가 1보다 클 경우 범위로 인식되며 선택된 범위만큼 시간을 입력하도록 한다.

이 코드에서는 A열의 값이 변경될 때만 시간이 입력되며, B,C열이 바뀌어도 아무런 동작을 하지 않는다.

 

※ TMI: 도박사는 중졸아니며 나이도 63살 아님


2. VBA 코드 넣을 위치

그래서 이거 어디에 넣어야 쓸 수 있는가!?!?

vba 편집기 프로젝트 창에서 시트 더블 클릭

 

코드 편집창 나타나면 목록상자에서 선택

 

  1. vba 편집기 > 프로젝트 창에서 해당 기능이 필요한 시트를 더블클릭한다.
  2. 코드 편집창이 나타나면 왼쪽 목록상자에서 Worksheet 선택
  3. 오른쪽 목록상자에서 Change 선택 후 위 코드를 붙여넣으면 끝

 

 

반응형