이전에 구글스프레드 시트의 앱 스크립트로 현재시간을 반환해보았던 방법을 알아보았습니다.
이번엔 엑셀에서 동일한 방법으로 셀에 데이터를 입력하면 현재시간을 반환해주는 것을 구현해보도록 하겠습니다.
출석체크 등의 용도로 쓰일 수 있을 것 같습니다.
2022.11.06 - [엑셀(Excel)] - [구글스프레드시트] 출석체크 자동으로 날짜 및 시간 삽입해보기
[구글스프레드시트] 출석체크 자동으로 날짜 및 시간 삽입해보기
요즘 회사에서 구글을 통해 업무를 많이 하실텐데요 오늘은 구글 스프레드 시트의 Apps script를 간단히 적용해보겠습니다. 엑셀 VBA와 유사한 기능이지만 언어가 JavaScript를 기반으로 한다고 하네
serendipity77.tistory.com
1. 엑셀VBA 환경설정(Change Event, Module생성과 다름)
- ALT + F11 → VBE창으로 이동
- Module 생성이 아닌, Sheet1 더블클릭(중요)
- 상단 Worksheet 클릭(하단 그림1 참조)
- 우측에 Change로 변경(하단 그림1 참조)
- 명령어 중 Worksheet_Change 이외는 삭제
2. 화면예시
출석현황 아래에 어떤 데이터를 입력할 경우, 타임스탬프에 자동으로 날짜 및 시간 표시되도록 설정
3. 코드구현
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Columns("a")) Is Nothing Then
Target.Offset(, 1) = Now
End If
End Sub
4. 코드설명
가. 변수설명
- 현재 변수는 Target으로 설정되어 있으므로 따로 잡아줄 필요가 없습니다.
▶ ByVal Target As Range
나. Intersect 구문 설명
- Intersect의 경우, 교차하는 경우에 대한 설명입니다.
- Target셀이 변수이고, Columns열(현재 A열)과 교차할 때 이벤트가 발생되도록 명령하였습니다. (그림3 참고)
If Not Intersect(Target, Columns("a")) Is Nothing Then
- Not ~~ nothing의 경우, 이중부정으로 교차할 때를 강조하는 문구입니다.
- 이중부정 구문을 안써줘도 될 것 같지만 그런 경우 작동을 하지 않습니다. Intersect를 쓸 땐 이중부정을 쓴다 정도로 암기해주시면 될 것 같습니다.
다. Offset구문 설명
Offset(0, 1)의 경우, 열 방향으로 오른쪽으로 한칸 이동이라는 뜻입니다. (0은 생략가능)
또 다른 예로, Offset(1,0)의 경우에는 행 방향으로 아래로 한칸 이동이라는 뜻입니다.
관련해서는 이전 발행글인 VBA나 엑셀 함수에서 다루었으니 참고해주시길 바랍니다.
- 2022.08.14 - [엑셀(Excel)] - [엑셀VBA] 특정 조건 만족하는 데이터 Set 불러오기(Feat. vba 맛보기)_2편
- 2022.12.05 - [엑셀(Excel)/엑셀꿀팁] - [엑셀] 엑셀자동화 월별매출현황 자동합계 구하기(SUM과 OFFSET함수 활용)
라. Now 함수 설명
Now의 경우, 현재 날짜 및 시간을 말합니다.
Format함수를 통해 시간형태를 수정할 수 있습니다.
Format(Now, "hh:mm")
Now 뒤에 셀 서식에 나오는 형태로 변경하여 주면 원하는 형태로 나타납니다.
현재의 경우, 시간 및 분만 나오도록 변경한 예시입니다. ("hh:mm")
5. 코드 보완하기
데이터를 지우면 데이터를 지운 이벤트도 이벤트로 인식해서 숫자가 나타나게 됩니다.
셀에 하나이상의 명령어를 수행하는 경우, 이벤트 동작이 수행되지 않도록 명령어 넣어주었습니다.
If Target.Cells.Count > 1 Then Exit Sub
6. 최종코드
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Columns("a")) Is Nothing Then
Target.Offset(, 1) = Format(Now, "hh:mm")
End If
End Sub
'엑셀(Excel) > VBA' 카테고리의 다른 글
[엑셀VBA] 필터별로 파일 분리해서 저장하기 (0) | 2023.11.12 |
---|---|
[엑셀/VBA] 엑셀 불필요한 데이터(행) 삭제 및 중복데이터 삭제 및 정렬 (1) | 2022.11.27 |
[엑셀/VBA] 폴더 내 엑셀파일 한번에 통합하기(엑셀파일병합, 자동화기본) (0) | 2022.11.22 |
[엑셀] 시트별 데이터 통합하기(엑셀VBA활용) (0) | 2022.10.24 |
댓글