본문 바로가기
반치용/문제해결(trouble shooting)

VBA를 이용한 뉴비의 엑셀 수정 시간 남기기 (수정시간 로그 추적)

by Cat.8 2019. 10. 25.

 엑셀 내용 수정한 이력을 남기고 싶을 때는 어떻게 할까?

 연구실 동료인 규선쌤이 의사분들이 데이터 레이블링 할 때 응답 시간 체크할 방법으로 고통받고 있길래 찾아보고 처리할 방법을 공유하고자 남깁니다.

 

흔한 엑셀창

 목표는 응답에 답을 입력시 응답 시간에 시간 기록을 남기는 것이다.

이렇게 만들겁니다

 

따라오면 됩니다.

[개발자 도구 메뉴 활성화 하는 법]

1. '파일' 클릭

 

2. '옵션'클릭
3. 리본 사용자 지정 -> 개발 도구 -> 확인
짜잔! 개발 도구 메뉴가 생겼습니다.

[Visual Basic script 작성]

4. 개발 도구 -> Visual Basic

 

5. 사용하려는 문서의 시트(동그라미 부분)를 더블클릭
이런 창이 뜹니다.
6. 이렇게 입력하시면 됩니다.

//// 코드 

Private Sub Worksheet_Change(ByVal Target As Range) 

Dim strNow As String 


strNow = Now() 


  If Target.Column = 4 Then 

    Range("E" & Target.Row) = strNow 

  End If 

End Sub 

//// 코드 설명 (의역형태)

더보기

Private Sub Worksheet_Change(ByVal Target As Range) 
: 워크시트 내용이 변경되면 변경된 칸 정보를 가져와라


Dim strNow As String 
: strNow 라는 문자열 형태의 변수를 쓸거다
strNow = Now() 
: strNow가 뭐냐면, '지금 이 시간이다.'


  If Target.Column = 4 Then 
: 4번째 열 (D 열)이 변경되면 할 일은 이거다.
(D열이면 4, E열이면5 식으로 변경하면 다 적용 됩니다.)
    Range("E" & Target.Row) = strNow 
: E열 같은 줄내용을 strNow(지금 이 시간)으로 입력해라.
(시간이 입력되길 원하는 열으로 지정 가능합니다. E, F, G 다~)
  End If 
: 3번째 열 변경시 할 일 끝


End Sub
: 워크시트 내용 변경 시 할 일 끝

7. 디스켓 모양을 눌러 저장합니다. (Ctrl + S나 파일 -> 저장 다 좋습니다.)

 

8. 저장은 Excel 매크로 사용 통합 문서 (*.xlsm)으로 해 주세요.
아무런 변화가 없군요. 정상입니다.
9. 응답 부분에 입력을 하면 옆에 응답시간이 뜹니다!

 

끝!!

 

 나중에 연산을 편하게 하시려면... 아래와 같이 코드를 작성하시면

2019:10:25:15:24:11

년:월:일:시:분:초 순서로 자릿수가 통일되서 나옵니다.

left함수등을 이용해서 시간차 등을 계산할 수 있습니다.

Private Sub Worksheet_Change(ByVal Target As Range)

Dim strNow As String


strNow = Now()


  If Target.Column = 4 Then

    Range("E" & Target.Row) = Format(strNow, "YYYY:MM:DD:HH:MM:SS")

  End If

End Sub

 

댓글