Excel 용 매크로, 너무 화려하지 않은 개체, 수식이있는 일반 오래된 사이클이 있습니다. 기본적으로 다음과 같습니다.Excel, VBA : 메모리 지우기
행을 하나의 열로 순환하여 셀을 실행하지 않고 아주 큰 SUMPRODUCT 함수를 셀에 할당합니다. 행을 순환하면 Range.Value = Range.Value를 두 번 실행하여 수식을 실행하고 결과를 값으로 저장합니다. 그럼 다음 열로가.
Excel에서 사용하는 각 열 메모리가 크게 늘어나고 매크로가 완료된 후 파일을 저장하면 메모리가 여전히 사용됩니다 (작업 관리자를 신뢰할 수있는 경우). 파일을 닫았다가 다시 열면 물론 모든 메모리가 해제되어 작업을 계속할 수 있습니다. 32 비트 Excel에서 메모리 제한으로 인해 필요한 모든 열을 처리 할 수없는 지점에 도달했습니다.
나는 엑셀이 기억하고있는 것을 잊어 버릴 수 있도록 칼럼 사이에 구현할 수있는 트릭이 있을지 궁금했다. 성능에 영향을 줄지 신경 쓰지는 않습니다 (추가 계산에 유용한 데이터가 캐시되어있는 경우에 대비). 메모리 사용량을 너무 크게하여 처리 할 필요가 있습니다. 나는 조금만 봤지만 조금이라도 큰 물체를 아무것도 설정하지 않는 것과 관련하여 조언을한다. 아무 것도 할 일이별로 없으며주기를 거치지 않아 내 경우에는 아마 적용되지 않을 것이다.
코드는 다음과 같다 (지금 나에게 그것을 가지고 있지만, 그것은 일반적으로 단순화 거기에 어떤 버전의하지 않음) : 기본적으로
for i = 1 to 12
ThisWorkbook.ActiveWorksheet.Range(Cells(1,i),Cells(x,i)).Font.Color = vbWhite
for m = 1 to x
ThisWorkbook.ActiveWorksheet.Cells(m, i).Formula = "'=SUMPRODUCT(blah)"
next m
ThisWorkbook.ActiveWorksheet.Range(Cells(1,i),Cells(x,i)).Value = ThisWorkbook.ActiveWorksheet.Range(Cells(1,i),Cells(x,i)).Value
ThisWorkbook.ActiveWorksheet.Range(Cells(1,i),Cells(x,i)).Value = ThisWorkbook.ActiveWorksheet.Range(Cells(1,i),Cells(x,i)).Value
ThisWorkbook.ActiveWorksheet.Range(Cells(1,i),Cells(x,i)).Font.Color = vbBlack
next i
, 나는 흰색을 색상 그래서 난 몰라 지저분한 함수 텍스트를보고, 함수를 추가하고, 실행하고, 값으로 저장하고, 텍스트를 검정색으로 처리합니다. 중요한 추가 사항 : 닫힌 파일의 일부 셀을 합산하기 위해 SUMPRODUCT를 사용합니다.
우리에게 코드를 보여주세요 :) –
그래, 죄송합니다, 단순화 된 코드 예제를 추가했습니다 :) 다른 모든 코드는 기본적으로 일부 셀, 메시지 상자 및 몇 가지 ifs에 내용을 정리하고 있습니다. – pokrishka
'SUMPRODUCT' 호출을 VBA 코드로 바꾸어 주시겠습니까? 이렇게하면 외부 통합 문서를 열고 닫을 때를 훨씬 더 효과적으로 제어 할 수 있습니다. 또는 별도의 인스턴스로 분리 할 수도 있습니다. 보너스 :'.Value = .Value'가 필요 없습니다. – Chel