위의 의견 작성자는 셀에 의해 호출되는 기능에서 통합 문서 (즉, 모든 셀)를 업데이트하는 것이 옳습니다. 허용/지원되지 않습니다.
Excel에서는 셀 수식을 기반으로 셀 간 종속성을 미리 계산할 수있는 통합 문서 다시 칠하기 모델을 제공합니다. 이를 통해 원본 소스에서 변경 사항을 의존하는 셀로 변경 사항을 (상대적으로) 효율적으로 전파 할 수 있습니다. 통합 문서 relaculation이 완료되면 다른 수식에서 참조되지 않은 셀에 변경 내용이 전파 될 때까지 변경 내용을 반복적으로 전파합니다 (즉, 재귀 적으로). 셀 수식을 사용하면 통합 문서의 셀을 수정할 수 없습니다. 사전 계산 된 수식 기반 종속성 분석을 효과적으로 무효로 (또는 적어도 극적으로 약화) 지원하고 다른 계산 모델을 필요로하는 경우 (이는 효율성이 떨어질 수 있음) 지원해야합니다. (순환 셀 참조 (직접 또는 간접적으로) 또한 이력 함수를 약간 어렵게 만드는이 방법에 문제가 있습니다.)
그러나 나중에 수행 할 수 있도록 VBA 데이터 구조에 일부 데이터를 기록하는 것이 좋습니다 아래의 예에서는 매우 단순한 public gx이지만 이러한 데이터 구조는 거의 모든 복잡성으로 인해 발생할 수 있습니다. 그런 다음 이벤트를 사용하여 통합 문서를 다시 계산 한 후 해당 기록 된 데이터를 사용할 수 있습니다. 워크 시트 변경 이벤트는 계산을 마친 후 (셀 루틴 Worksheet_Calculate를 작성하고 워크 시트에 넣는) 일부 코드를 실행하는 방법입니다. 셀을 수정하면 문제가 해결 될 수 있습니다. 또한 Workbook_SheetCalculation이 ThisWorkbook의 코드에 포함되어 있습니다.
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
MsgBox "gx=" & gx
Application.Worksheets("Sheet1").Range("A1") = gx
End Sub
"Module1의"에서 :
Sheet1에있는
Public gx As Long
Function MyFormula(x As Long) As String
gx = x
MyFormula = "hello"
End Function
, 셀 A5 : "에서 ThisWorkbook"에서
= MyFormula (A4)
당신은거야 문맥에서 gx가 A4의 숫자로 설정된 (수식의 실행에서 데이터를 저장함을 나타냄) 팝업을 가져오고, mod 워크 시트도 ifying. 이제 다른 번호로 A4를 수정하면 A4를 변경하면 다시 계산되기 때문에 결과가 표시됩니다.
(당신은 또한 SheetCalculate 이벤트에 대한 대안으로 Workbook_SheetChange 이벤트에 관심이있을 수 있습니다.)
을 당신이 다음 UDF로 사용하는 경우 다음이 작동하지만 것 VBA에서 함수를 호출하는 경우 UDF가 다른 셀의 값을 변경하지 못하도록 autofilter를 변경할 수 없기 때문에 UDF로 작동하지 않습니다. –
위의 함수는 UDF가 아닙니다. – Ashok
UDF에서 무엇을 의미하는지 이해했습니다 ... 예 엑셀 셀에서 함수를 호출하려고했습니다 ... 자동 필터로 정의 된 SUB를 호출하려고하는 함수에서 여전히 자동 필터를 사용할 수 없습니다. – Ashok