엑셀 VBA 다른시트에 입력내용 누적 기록하는 방법

VBA 누적기록

엑셀을 어느정도 사용하다 보면, 엑셀을 사용해 업무의 일정부분을 자동화(VBA) 해보고 싶은 욕심이 생기기도 합니다. 매번 반복하는 노가다성 업무를 줄일 수도 있고, 하나의 문서에서 입력과 기록을 나누어 관리할 수도 있어 편리할 것 같습니다.

문제는 바쁜 직장인으로서, 이미 정해진 업무를 수행하기도 벅찬 가운데 VBA매크로까지 섭렵하려니 막막하기만 한데요. 저 역시 비슷한 고민에 조금씩 시간을 내 인터넷 자료를 참고해 대부분의 엑셀업무에 VBA를 활용하기 시작했습니다. 여전히 스스로 매크로 코드를 작성하는데에는 어려움이 있지만, 이미 다뤄본 소스를 잘 활용해 그럭저럭 사용하고 있습니다.

 

 

​개인적인 기록이기도 한 블로그의 엑셀관련 포스팅에도 여러 번 강조했듯, 아무것도 모르는 상태라 하여도 일단 부딪혀보는 것이 큰 도움이 될 수 있다고 이야기했었는데요. 이 생각은 언제까지나 변함이 없을 것 같습니다.

​오늘은 VBA를 활용해 다른 시트에 입력된 내용을 기록하는 방법에 대해 소개해보려 하는데요. 매일 새로이 발생하는 데이터의 경우 별도의 입력전용 시트를 만들어두고, 기록되는 내용은 다른 시트에 관리하면 추후 데이터 활용에도 도움이 될 수 있으므로 숙지해두면 도움이 될 것 같습니다.

VBA 데이터 누적 기록

샘플시트

지난 번 포스팅에 등장했던 샘플을 그대로 가져왔습니다. VBA에서 엑셀함수를 사용하는 방법에 대한 내용이었는데, 거꾸로 사용해도 괜찮을 것 같습니다.

샘플데이터

해당 포스팅에서는 이미 입력돼있는 다른 시트의 데이터를 Vlookup으로 가져왔었으니, 이제는 반대로 이 시트에 누적해 데이터를 기록하는 방법인데요.

시트명은 그대로 둔다해도, 검색버튼은 등록버튼으로 바꿔줬습니다.

 

 

버튼에 이미 입력된 매크로를 수정하는 방법은, 우측버튼 클릭 후 다시 매크로를 선택해 고쳐주면 될 것 같습니다.

매크로 코드 작성

이후 VBA편집창을 실행해 ‘등록’이라는 이름의 매크로를 만들었습니다.

먼저 변수를 선언하고 이후 동작들에 대해 표현해 봤습니다. Cells(Rows.count, 1).End(3)(2).Row에 대한 이해는 약간 어려울 수 있는데요.

간단히 이야기하자면 엑셀의 제일 마지막행에서 위로 올라가다가 데이터가 있는 행에서 멈추고, 바로 그 아래 행을 의미합니다.

nextline은 결국 이전의 데이터 이후 입력되는 행의 번호가 되겠죠.

테스트

이후 각 항목에 데이터를 입력하고 매크로를 실행하면(등록버튼),

 

 

Sheet2에 해당 내용이 그대로 누적돼 입력된 것을 확인할 수 있습니다.

누적금액에 셀 서식이 적용된 그대로 값이 들어왔으나 이후 서식을 수정하는 등의 방법을 진행하면 될 것 같습니다.

메시지박스 응용

매크로를 지정한 등록버튼을 제대로 눌렀는 지 확인이 필요할 때가 있을건데요.

이 때에는 메시지박스를 사용하면 확실하게 알 수 있을 것 같습니다.

If와 MsgBox를 활용해 예/아니오로 선택할 수 있는 대화상자를 넣게되면,

별도의 대화상자가 나타나, 예를 누르면 시트에 데이터를 입력하고 그렇지 않다면 취소하게 되는데요.

입력이 완료된 경우 ‘등록되었습니다’ 라는 메시지를 넣어봤고, 이후 내용을 초기화하거나 하는 등의 진행도 가능할 것 같습니다.

 

 

마치며

간단한 VBA를 활용해 하나의 시트에 입력된 내용을 다른 시트로 누적입력하는 방법에 대해 소개해 봤습니다. 엑셀로 업무를 자동화하는 과정을 생각한다면, 결국 데이터의 누적입력과 가공, 활용 등이 수반되어야 하기에 유용하게 사용될 수 있을 것 같습니다.

​VBA매크로 코드를 작성하고 사용하는데에 정답은 없다고 생각합니다. 내가 원하는 결과를 나타낼 수 있는데 오류와 에러가 없다면 당장 사용하기에 큰 문제는 없을 것 같습니다. 점점 더 공부하면 되니까요.

Comments are closed.