안녕하세요.
특정 셀의 값이 바뀌면 자동으로 다른 셀에 값을 복사하는 작업을 하려고 합니다.
이렇게 복사된 값을 이용해 차트를 만드는 일도 있습니다.
완성 파일 다운로드
사용자의 추가 작업 없이 동작해야 하므로 이벤트(Events)를 이용해야 합니다.
딱 생각난게 Change 이벤트 입니다.
<Alt + F11>키를 눌러 VBE를 엽니다.
Sheet1 시트 Worksheet 개체 Change 이벤트에 작성합니다.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("A1")) Is Nothing Then
Application.EnableEvents = False
If Range("C2").Value <> "" Then
위치 = Range("C1").End(xlDown).Row
Else
위치 = 1
End If
위치 = 위치 + 1
Range("C" & 위치).Value = Date & " " & Format(Time, "hh:mm:ss")
Range("A1").Copy
Range("D" & 위치).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A1").Select
Application.EnableEvents = True
End If
End Sub
이렇게 작성하고 [A1] 셀 값을 바꾸면 바뀐 값이 저장됩니다.
그런데 [A1] 셀에 수식이 작성되어 수식의 결과값이 바뀌는 경우에는 [A1] 셀에 입력된 값 자체가 바뀌는게 아니기 때문에 Change 이벤트가 아니라 Calculate 이벤트가 동작합니다.
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
If Range("C2").Value <> "" Then
위치 = Range("C1").End(xlDown).Row
Else
위치 = 1
End If
위치 = 위치 + 1
Range("C" & 위치).Value = Date & " " & Format(Time, "hh:mm:ss")
Range("A1").Copy
Range("D" & 위치).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A1").Select
Application.EnableEvents = True
End Sub
두 이벤트 모두에 코드를 작성하면 안됩니다.
추가된 데이터를 기반으로 바뀌는 차트는 데이터를 표로 바꿔, 표를 기반으로 차트를 만들었습니다.
Change 이벤트와 Calculate 이벤트 이용하기 여기까지 입니다.
수고하셨습니다.
'엑셀' 카테고리의 다른 글
엑셀 사용자 지정 서식에서 사용할 수 있는 색상명 (0) | 2021.01.07 |
---|---|
엑셀 VBA로 자료 처리 - 신청자, 회원목록 비교 4 (0) | 2020.07.13 |
엑셀 VBA로 자료 처리 - 신청자, 회원목록 비교 3 (0) | 2020.07.09 |
Excel에서 작성한 Chart를 Word로 옮기기 (0) | 2020.05.20 |
어디에서나 사용자 정의 함수를 사용할 수 있도록 하기 (0) | 2020.05.10 |