VBA 내에서 시트의 데이터를 새로 고치기 위해 Excel 얻기
문제
셀 값을 바꾸는 kluge없이 VBA 내에서 스프레드 시트 데이터를 Excel로 어떻게 얻을 수 있습니까?
해결책
다음 줄은 트릭을 수행합니다.
ActiveSheet.EnableCalculation = False
ActiveSheet.EnableCalculation = True
편집하다: 그만큼 .Calculate()
메소드는 모든 기능에 대해 작동하지 않습니다. 추가 기능 배열 기능이있는 시트에서 테스트했습니다. 내가 사용하는 생산 시트는 테스트하고 싶지 않을 정도로 복잡합니다. .CalculateFull()
방법이지만 작동 할 수 있습니다.
다른 팁
이것은 속임수를해야합니다 ...
'recalculate all open workbooks
Application.Calculate
'recalculate a specific worksheet
Worksheets(1).Calculate
' recalculate a specific range
Worksheets(1).Columns(1).Calculate
때때로 Excel은 딸꾹질을하고 방정식을 다시 신청하려면 킥 스타트가 필요합니다. 이것은 사용자 정의 공식을 사용하는 경우에도 발생합니다.
다음 스크립트가 있는지 확인하십시오
ActiveSheet.EnableCalculation = True
선택한 방정식을 다시 적용하십시오.
Cells(RowA,ColB).Formula = Cells(RowA,ColB).Formula
그런 다음 필요에 따라 반복 될 수 있습니다.
당신은 또한 시도 할 수도 있습니다
Application.CalculateFull
또는
Application.CalculateFullRebuild
활성 워크 시트가 아닌 모든 열린 통합 문서를 재건하는 것이 마음에 들지 않는다면. (CalculateFullRebuild
의존성도 재건됩니다.)
배경 이미지를 끄는 데 문제가있었습니다. (드래프트 워터 마크) VBA에서. 내 변화가 나타나지 않았습니다 ( Sheets(1).PageSetup.CenterHeader = ""
방법) - 새로 고침 방법이 필요했습니다. 그만큼 ActiveSheet.EnableCalculation
접근은 부분적으로 트릭을 수행했지만 사용하지 않은 세포를 덮지 않았습니다.
결국 나는 더 이상 설정되지 않았을 때 이미지가 사라지게하는 하나의 라이너로 필요한 것을 발견했습니다.
Application.ScreenUpdating = True
데이터 연결 업데이트 후 일부 UDF는 실행되지 않았습니다. 서브 루틴을 사용하여 다음과 같이 단일 열을 다시 계산하려고했습니다.
Sheets("mysheet").Columns("D").Calculate
그러나 위의 진술은 효과가 없었습니다. Kambeeks를 대체하겠다는 제안을 제외하고는 위의 솔루션 중 어느 것도 도움이되지 않았으며, 업데이트 중에 수동 Recalc가 켜진 경우 빠르게 사용되었습니다. 아래 코드는 "Kluge"주석에 대해 정확히 책임을지지 않더라도 내 문제를 해결했지만, 사용자 지정 셀의 재 계산을 강제하기위한 빠른/신뢰할 수있는 솔루션을 제공했습니다.
Application.Calculation = xlManual
DoEvents
For Each mycell In Sheets("mysheet").Range("D9:D750").Cells
mycell.Formula = mycell.Formula
Next
DoEvents
Application.Calculation = xlAutomatic