현재 수백 개의 행을 업데이트, 작성 및 제거하는 등의 다양한 기능을 수행하는 매크로 사용 스프레드 시트가 있습니다. 어떤 이유로 든이 함수 중 하나가 엉망이되어 보관하려는 정보를 삭제하는 경우 - 매크로에 의해 방금 변경된 스프레드 시트의 버전을 복원하는 "실행 취소"버튼을 구현하고 싶습니다.워크 시트의 전체 버전을 복원하는 VBA의 "실행 취소"단추
이 나는 모양을 가정 다음 : 당신이 UndoLastMacro 명령을 활성화 할 때
는Public InstanceOfWorksheet As Range
Sub Button_Click()
InstanceOfWorksheet = CurrentWorksheet.UsedRange 'Or something like this
'Macro functionality here
CurrentWorksheet.Update() 'Worksheet has now been updated
End Sub
Sub Button2_Click()
InstanceOfWorksheet = CurrentWorksheet.UsedRange 'Or something like this
'Second Macro functionality here
CurrentWorksheet.Update() 'Worksheet has now been updated
End Sub
Sub UndoLastMacro_Click()
CurrentWorksheet = InstanceOfWorksheet
End Sub
이 경우에, 당신은 효과적으로 당신이 마지막 매크로 전과 워크 시트의 버전을 "복원"것 라는.
내 질문에 어떤 변수 유형이 InstanceOfWorksheet
이되어야하며 InstanceOfWorksheet
의 내용을 현재 워크 시트에 다시 복사하는 가장 쉬운 방법은 무엇입니까?
미리 감사드립니다. :)
당신은 목표 범위의 값을 유지하는 것이 더 이상 이에 대한 변수 범위 변수와 데이터 유형'Variant'와 배열 변수를 필요로 할 수 있습니다. 이는 변경 사항이 값과 관련이 있다고 가정합니다. 수식, 서식 등도 변경되면 훨씬 더 복잡해집니다. – Miqi180
두 번째 생각에서 변경 사항이 적용되는 동안 오류가 발생하지 않으면 삭제되는 워크 시트의 임시 사본을 만드는 것이 더 쉽고 안전합니다. 마지막에 'Err.Number = 0'인 경우 'On error resume next'를 사용하고 임시 복사본을 삭제하십시오. – Miqi180
'.UsedRange.Formula'를 저장하기 위해 새 워크 시트를 만드는 것이 더 나을지도 모릅니다. 모든 변경 사항이 기록되지 않는 한 VBA가 실행 취소하기는 어렵습니다. 또는 통합 문서의 복사본을 임시 폴더에 저장 하시겠습니까? – PatricK