메뉴
해결 M365윈도우10

VBA 셀 값이 변경 될 때 이전 셀 값 표시

q
7월 16일 조회 1,119
Private Sub Worksheet_Calculate()

With Sheets("기록")

lr = .Cells(Rows.count, "A").End(xlUp).Row

If Range("A1").Value <> .Cells(lr, "A") Then

.Cells(lr + 1, "A").Value = Range("A1").Value

.Cells(lr + 1, "B").Value = Now

End If

End With

End Sub

 

라는 VBA 코드를 찾아서 사용 하려는데 같은 시트에 원하는 셀 위치에 이전 셀 값을 표시하고싶습니다.

바로 사용해야하는데 아직 VBA 강의를 듣지 않아 수정해서 사용하기가 어렵네요.

내역서라는 시트에서 AS11 셀 값이 변경 될 경우 AZ10 셀에 이전 셀 값이 표시되게 하고 싶습니다.

댓글 8

원
원조백수 7월 16일
이전 셀 값을 어떻게 알 수 있을까요?
q
qlcc**** 작성자 7월 16일
@원조백수 님 A1 셀에 =B1+C1 이라는 함수의 값이 0, 1, 2, 3으로 변경 될 경우 기록이라는 시트에 0,1,2 라는 이전 값이 기록 되는 코드로 알고있습니다

이전 셀 값이라는게 변경 전 값을 말합니다.
원
원조백수 7월 16일
@qlcc**** 님 Excel은 이전 값을 알 수 없습니다.
변경된 이후의 값만 알 수 있기 때문에, 이전 값을 알고 싶다면, 변경 될 때만다 기록을 해 두어야 합니다.
즉 하나의 셀에 값을 기억해 두는 것으로는 이전 값을 알 수 없습니다.
변경되는 계산이 수행 될때는 아직 기록되는 셀을 업데이트 하지 않았으므로 비교는 가능합니다.

위의 코드는 어느 셀이 변경되면, 그 변경된 값을 다른 시트에 계속 누적하여 기재하여 LOG처럼 기록을 남기는 것입니다.
이런 방식으로 하면 최종값의 바로 앞이 "이전 값"이 될 수 있습니다.
q
qlcc**** 작성자 7월 16일
@원조백수 님 네 사실 처음 값을 기록하고 그 뒤 변경되는 값들을 기록해서 두 값을 비교 하려고 해서.. 해당 코드를 같은 시트의 다른 셀에 기록되게 할 수 있을까요 ?
원
원조백수 7월 16일
@qlcc**** 님 Sheet 이름과 주소 "A1"을 변경하시면 됩니다.
q
qlcc**** 작성자 7월 17일
@원조백수 님 With Sheet("") 안에 해당 시트 이름을 넣으면 동작을 안 하더라구요 ..+ㅜ
원
원조백수 채택된 답변 7월 17일
@qlcc**** 님 Sheet("시트")에는 로그를 기록할 "시트이름"을 넣고,
"A1"셀 주소는 값이 변경될 "AS11"을 넣으시면 됩니다.
원래 요청하셨던 AZ10셀에 기록해서는 말씀 드린 것처럼 진행할 수 없습니다.
q
qlcc**** 작성자 7월 17일
@원조백수 님 감사합니다 VBA를 배워서 더 효율적으로 하는 방법을 찾아봐야겠네요

질문답변 게시판의 최근 글

로그인

처음이면 카카오·네이버로 계속하면 바로 가입돼요

또는
비밀번호 찾기
Caps Lock이 켜져 있습니다
스크랩 완료