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

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

by  반  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

 

댓글