2014-02-07 6 views
0

Excel VBA에서 함수의 반환 값이 호출 된 셀 값보다 우선 적용되는 UDF를 작성할 수 있습니까?Excel VBA UDF가 반환 값 자체가 재정의됩니다.

함수는 SQL 요청으로 정보를 가져옵니다. 이 경우 마스터 데이터 (예 : 상품 설명) 만 있습니다. 사용자가 많은 셀의 워크 시트에서이 함수를 사용하면 Excel은 무언가를 변경할 때마다 셀 값을 다시 계산합니다. 성능이 좋지 않으며 일반적으로 한 번만 정보를 가져와야하며이 경우 업데이트하지 않아야합니다.

function.caller.address 메서드를 사용하여 함수가 호출 된 주소를 얻는 것으로 생각했지만 함수 내에서이 주소에 대한 셀 값을 설정할 수없는 것 같습니다. 따라서 함수의 반환 값은 함수를 실행하는 원래 수식보다 우선합니다.

는 엑셀 세포가 여러 층이다시피 당신의 도움이

+0

아니요, 아닙니다. 데이터를 실행하고 각각에 대해 쿼리를 수행하여 셀에 기록하는 절차를 작성해야합니다. 함수에서 사용하는 경우 함수는 소스 셀을 변경할 때만 다시 계산해야합니다. "무언가를 바꿀 때마다"가 아닙니다. – SWa

+0

그것은 까다 롭습니다. http://stackoverflow.com/questions/8520732/i-dont-want-my-excel-add-in-to-return-an-array-instead-i-need-a-udf-to-change – brettdj

+1

@ brettdj 내 문제를 해결해 준 많은 감사합니다. – user3272299

답변

0

번호

이 가능

덕분입니다.

하나가 "값"입니다. 또 다른 하나는 할당 할 수있는 수식입니다.

funtions은 값을 반환하므로 반환 값은이 계층에만 액세스합니다. 따라서 다른 레이어에있는 공식 때문에 대체 할 수 없습니다.

함수가 반환 값의 하위와 다른 경우 하위는 아무 것도 반환하지 않습니다. "일회 사용"의 행동으로 인해 하위 값은 반환하지 않고 셀 (수식)의 특정 내용을 제거하거나 바꿀 수 있기 때문에 서브 함수가 필요 이상으로 적합합니다.

그러나 이것은 함수를 사용하여 수행 할 수는 없지만 반환 값을 사용하는 것은 아닙니다. 그러나 그러한 함수를 사용하려면 데이터 새로 고침에서 전체 수식을 다시 작성해야합니다.

웃기지 않을지도 모른다는 생각이 들었을 것입니다. Excel에는 기본적으로 그러한 것이 있습니다. 그러나 그것은 기능이 아닙니다.

셀을 복사하여 붙여 넣기 만하고 "값만 사용"하십시오.

완전히 동일한 효과가 있습니다.

또한 재 계산의 측면에서 ... 해제하지 않으시겠습니까? 매번이 함수를 다시 작성하지 않아도됩니다.