문제

스프레드시트의 변경된 데이터를 기반으로 자체 평가를 위해 사용자 정의 함수를 얻는 방법을 아는 사람이 있습니까?난 노력 했어 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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top