매크로 속도 향상 관련 set vs array

익명
2013-12-20T10:02:49+00:00

안녕하세요?

매크로 속도를 좀 더 빠르게 하려고 고민하는데,

일반적으로 개별 셀에 값을 주는 것 보다는

Range(....) = arrayXX 의 방식을 권하고 있습니다.

문제는 Range내에 띄엄 띄엄 수식이 있습니다.

그래서 전체영역을 다루지 못해 일부 만 영역을 지정하려니 번거로워 개별 셀별로 다루자니 그것은 또 아닌것 같고 해서.

Q1) 수식이 있는 셀은 수식을 가져왔다가 수식을 돌려주고,

값을 다루는 셀은 값을 돌려주는 방식을 고민하고 있습니다.

어떻게 하면 될지 의견주시면 고맙겠습니다.

나름 생각해 보니

Dim rngXX  as Range

Set rngXX = Range("A1:E2")   '(D1,D2에 수식이 있습니다)

rngXX(1,1) = "값"  'A1

rngXX(1,2) = "값"  'B1

rngXX(1,3) = "값"  'C1

rngXX(1,5) = "값"  'E1

rngXX(2,1) = "값"  'A1

rngXX(2,2) = "값"  'B1

rngXX(2,3) = "값"  'C1

rngXX(2,5) = "값"  'E1

를 하기만 하면 자동적으로 sheet에 반영되는 것 같습니다. 

이경우는 직접 Array에 값을 할당하였다가

Range("A1:E2") = arrXX 로 처리하는 것(아직 Q1의 답을 알지 못하므로 방안이 없다면 어쩔 수 없이 이 방법을 써야겠지요?)

과의 속도 측면에서 궁금합니다.

Q2) Set을 하면 Object 전체를 다루게 되어 속도가 느려지지 않을까? 그리고 잘 쓰지(??) 않아서 다른 문제는 발생하지 않을까?

Q3) 위에서 보인 8번의 값 할당시 모두 8번의 Worksheet.Change 이벤트가 발생할지 않을까요?

   그렇다면 Array 할당시 한번의 Change 이벤트보다 느리지 않을까요?

좋은 개발 사례가 있으면 좋겠습니다.

Microsoft 365 및 Office | Excel | 가정용 | Windows

잠긴 질문. 이 질문은 Microsoft 지원 커뮤니티에서 마이그레이션되었습니다. 질문이 도움이 되었는지 여부에 대해 응답할 수는 있지만, 메모나 회신을 추가하거나 질문을 따를 수는 없습니다.

댓글 0개 설명 없음

답변 1개

정렬 기준: 가장 유용함
  1. 익명
    2013-12-23T00:31:10+00:00

    안녕하십니까? Juno Choo 님

    Microsoft Community 사이트를 방문해 주셔서 감사합니다.

    문의 하신 Excel 매크로 속도 향상에 대해 안내를 드리겠습니다.

    말씀해 주신 내용의 경우 VBA 매크로 프로그래밍에 대한 내용으로 확인이 됩니다. 매크로의 경우 MSDN 개발자 포럼에서 도움을 드리고 있으니 불편하시더라도 아래 포럼에 질문하여 도움을 받아 보시기 바랍니다.

    http://msdn.microsoft.com/ko-kr/office/

    http://social.msdn.microsoft.com/Forums/vstudio/ko-KR/home?forum=visualbasicko

    도움을 드리지 못해서 죄송합니다.

    추가적인 내용이 있다면 하단의 [응답] 버튼을 눌러 회신해주시기 바랍니다.

    제시해 드린 답변이 도움이 되었기를 바랍니다.

    응답이 문제 해결에 도움이 되었다면, 아래에 있는 답변으로 [표시] 버튼을 눌러 주시기 바랍니다. 이는 유사한 증상을 겪는 다른 사용자들에게 도움이 될 수 있습니다.

    감사합니다.

    이 대답이 도움이 되었나요?

    댓글 0개 설명 없음