| | | | 조삿갓 | 실행 조건을 좀 더 구체적으로 말씀하셔야 합니다.
일단은 질문 내용으로 봐서는 자료를 입력하는 시트가 TA 말고도 몇 개의 시트가 더 있는 것 같고
MAIN 시트에는 어떤 열(A열인가요?)에 자료 입력용 시트의 이름들이 열거된 표가 있는 것 같은데...
그 표의 정확한 위치와 구조가 어찌되는지
또 TA 시트에 자료를 저장하는 것은 어느 셀에 어떤 자료들이 저장되는 것인지...? | 07-14 (12:37) ⓧ삭제 ■신고 |
|
| | | | 조삿갓 | 일단은 TA 시트의 아무 셀이든지 자료를 입력하면
MAIN 시트의 B2 셀에 시간을 기록하는 방법입니다.
(MAIN 시트에 있는 시트명:시간 테이블은 시트명 리스트가
왔다리갔다리하는 것은 아니겠지요. TA 칸은 어디엔가 고정 위치가 있겠지요. 그 고정위치를 사용하는 것이 더 좋습니다.
매번 반복루프를 돌려서 TA라는 문자열을 찾는 방법은 시간낭비이겠지요.)
TA 시트의 시트 모듈에 다음 코드를 입력해 보세요.
Private Sub Worksheet_Change(ByVal Target As Range)
Worksheets("MAIN").Cells(2, 2) = Now()
End Sub
물론 해당 셀(MAIN 시트의 B2 셀)의 표시형식은 날짜/시간을 표시할 수 있는 서식으로 지정되어 있어야 하고요. | 07-14 (12:41) ⓧ삭제 ■신고 |
|
| | | | 조삿갓 | 입력용 시트가 더 있으면 각 시트마다 시트모듈에 동일한 코드를 넣어주어야 합니다. 다만, 셀 주소는 시트별로 달라져야 하겠지요. 예컨대 TB 시트의 시트모듈에는 다음과 같이...
Private Sub Worksheet_Change(ByVal Target As Range)
Worksheets("MAIN").Cells(3, 2) = Now()
End Sub | 07-14 (12:44) ⓧ삭제 ■신고 |
|
| | | | winsco | 감사합니다.
그런데 메인시트상의 TA위치는 새로 추가되는 시트로 인해 위치가 변합니다. | 07-15 (22:32) ⓧ삭제 ■신고 |
|
| | | | 조삿갓 | Private Sub Worksheet_Change(ByVal Target As Range)
Dim rs as Long
With Worksheets("MAIN")
For rs = 2 To Rows.Count
If .Cells(rs, 1) = ActiveSheet.Name Then Exit For
If IsEmpty(.Cells(rs, 1) Then
.Cells(rs, 1) = ActiveSheet.Name
Exit For
End If
Next rs
If rs <= Rows.Count Then
.Cells(rs, 2) = Now()
Else
' 오류 처리(메시지 출력 등)
End If
End With | 07-15 (22:52) ⓧ삭제 ■신고 |
|
| | | | winsco | 감사합니다. | 07-17 (14:45) ⓧ삭제 ■신고 |
|
|
|
|
|
|