문제

셀 값을 바꾸는 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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top