Application.calculatefull을 호출하고 다음 명령문에 중단 점을 넣을 때까지 기다리십시오. 잠시 후 상태 표시 줄에 처리가 나타나지만 이미 다음 코드 행에 도달했습니다.Excel VBA Application.calculatefull
DoEvents 사용을 제안한 사람들과 포럼을 확인했습니다. 내 경우에는 그게 문제 야. 워크 시트는 많은 수식을 가지고 있고 그 중 일부는 첫 번째 실행 후 잘못된 결과를 보여 주지만 수식이 정확하므로 워크 시트의 calculateFull을 호출하면 문제가 해결되지만 기다리지 않습니다.
DOEvents를 사용하면 CalculateFull 워크 시트를 업데이트하지 않습니다.
그래서 수정되었습니다.
프로세서가 application.CalculationFull에서 처리를 완료 할 때까지 기다리는 방법을 알려주십시오. 다음 코드 행으로 이동하십시오.
또한 application.wait도 사용했지만 프로세서를 보유하고있는 것으로 보입니다. 일단 계산을 시작하면 문제가 해결되지 않습니다.
waittime (1000)
SendKeys "+^%{F9}", True
Application.CalculateFullRebuild
이 내가 지금 사용하는 코드입니다. 내가 코드의 다음 줄에 중단 점을 넣었을 때, 나는 application.calculatefullRebuild
이 몇 초가 걸리고 다음 줄로 간다. 그리고 나는 현재 activesheet를 확인할 때, 상태 막대에서 계산 (4 개의 프로세서) : xx % 워크 시트 값이 올바른 값으로 변경됩니다.
이것은 제 문제입니다. Application.CalculateFullRebuild
이 완료되어 다음 줄로 이동하면 워크 시트 결과가 정확하지 않고 몇 초 후에 프로세서가 상태 표시 줄 메시지를 계산하고 워크 시트가 업데이트됩니다.
어떻게 완료 될 때까지 기다릴 수 있습니까? 그렇지 않으면 나머지 코드가 잘못된 결과를 가져옵니다. 바로 계산을 시작한 후 코드에서 위의 루프를 고집
Do While Application.CalculationState <> xlDone
DoEvents
Loop
:
당신은 어쩌면 일 또는 뭔가 다른 그래서 우리는 당신이 –
AFAIK를 의미하는 것을 볼 수있는 이미지를 제공 할 수있는,'.CalculateFull'은 매우 확률이 낮다 VBA 같은 단일 스레드 환경 때문에 비동기되지 않은 그 코드 계산을 끝내지 않고 다음 줄로 건너 뜁니다./이상한 이상 –
통합 문서에 비동기 함수가 사용됩니까? 왜 CalculateFull 대신 Calculate를 사용해야합니까? –