Excel VBA 함수 결과 새로 고침
-
08-06-2019 - |
문제
스프레드시트의 변경된 데이터를 기반으로 자체 평가를 위해 사용자 정의 함수를 얻는 방법을 아는 사람이 있습니까?난 노력 했어 F9 그리고 옮기다+F9, 하지만 작동하지 않습니다.작동하는 것으로 보이는 유일한 방법은 함수 호출을 사용하여 셀을 편집한 다음 Enter를 누르는 것입니다.어떤 아이디어가 있나요?할 수 있었던 기억이 나는 것 같은데...
해결책
당신은 사용해야합니다 Application.Volatile
함수 상단에:
Function doubleMe(d)
Application.Volatile
doubleMe = d * 2
End Function
그러면 통합 문서가 변경될 때마다 재평가됩니다(계산이 자동으로 설정된 경우).
다른 팁
Excel 계산을 위한 F9 키보드 단축키에 대한 추가 정보
- F9 열려 있는 모든 통합 문서의 모든 워크시트를 다시 계산합니다.
- 옮기다+ F9 활성 워크시트를 다시 계산합니다.
- Ctrl 키+Alt+ F9 열려 있는 모든 통합 문서의 모든 워크시트를 다시 계산합니다(전체 다시 계산).
- 옮기다 + Ctrl 키+Alt+ F9 종속성 트리를 다시 작성하고 전체 재계산을 수행합니다.
좋아요, 이건 제가 직접 찾았어요.당신이 사용할 수있는 Ctrl 키+Alt+F9 이것을 달성하기 위해.
UDF 매개변수 목록에 스프레드시트 데이터에 대한 모든 참조를 포함하면 Excel은 참조된 데이터가 변경될 때마다 함수를 다시 계산합니다.
Public Function doubleMe(d As Variant)
doubleMe = d * 2
End Function
당신은 또한 사용할 수 있습니다 Application.Volatile
, 하지만 이는 참조된 데이터가 변경되지 않았기 때문에 필요하지 않은 경우에도 UDF를 항상 다시 계산하게 한다는 단점이 있습니다.
Public Function doubleMe()
Application.Volatile
doubleMe = Worksheets("Fred").Range("A1") * 2
End Function
자동으로 전환하려면:
Application.Calculation = xlCalculationAutomatic
수동으로 전환하려면:
Application.Calculation = xlCalculationManual
그만큼 Application.Volatile
내 함수가 포함된 수식을 다시 계산하는 데는 작동하지 않습니다.나는 다음 기능을 사용합니다 :Application.CalculateFull
이는 다음보다 계산을 더 잘 새로 고칩니다. Range(A:B).Calculate
:
Public Sub UpdateMyFunctions()
Dim myRange As Range
Dim rng As Range
' Assume the functions are in this range A1:B10.
Set myRange = ActiveSheet.Range("A1:B10")
For Each rng In myRange
rng.Formula = rng.Formula
Next
End Sub
Public Sub UpdateMyFunctions()
Dim myRange As Range
Dim rng As Range
'Considering The Functions are in Range A1:B10
Set myRange = ActiveSheet.Range("A1:B10")
For Each rng In myRange
rng.Formula = rng.Formula
Next
End Sub