XL2000: 잘못된 결과 ActiveCell 속성 사용하는 함수 반환한다

중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

213684
이 문서가 보관되었습니다. "그대로" 제공되었으며, 업데이트가 되지 않을 것입니다.
현상
사용자 지정 함수를 호출하는 수식을 입력하면 수식이 워크시트를 다시 계산할 때 잘못된 결과를 반환할 수 있습니다. 수식이 들어 있는 셀을 선택하고 다음 워크시트를 다시 계산할 때 수식은 올바른 결과를 반환합니다. 이렇게 하면 동일한 사용자 지정 함수를 호출하는 다른 수식을 동일한 결과를 반환합니다.
원인
다음 조건에 해당하는 경우 이 문제가 발생합니다.
  • 사용자 지정 함수를 ActiveCell 속성을 사용합니다.

    - 및 -
  • 사용자 지정 함수가 일시적 메서드를 사용하여 워크시트를 다시 계산할 때마다 값을 계산하려면 함수 강제로.
이 문제의 예를 보려면 이 문서의 뒷부분에 나오는 "추가 정보" 절을 참조하십시오.
해결 과정
Microsoft을 배제하며 제한되지 않은 묵시적된 보증 (상품성 및 특정 목적에의 적합성에 대한 묵시적인, 목적으로만 프로그래밍 예제를 제공합니다. 이 문서에서는 프로시저를 작성하고 디버깅하는 데 사용되는 도구 및 여기서 설명하는 프로그래밍 언어에 익숙한 사용자를 대상으로 합니다. Microsoft 기술 지원 담당자는 특정 절차에 대한 기능을 설명할 수 있지만 추가 기능을 제공하거나 특정 요구 사항에 맞도록 프로시저를 구성하지는 이 예제를 수정하지 않습니다.
프로그래밍 경험이 제한되어 있으면 Microsoft 인증 파트너 문의하거나 Microsoft 자문 서비스 할 수 있습니다. 자세한 내용은 다음 Microsoft 웹 사이트를 방문하십시오.

Microsoft 파트너 - https://partner.microsoft.com/global/30000104 인증

Microsoft 권고 서비스 - http://support.microsoft.com/gp/advisoryservice

사용할 수 있는 지원 옵션 및 Microsoft 연락하는 방법에 대한 자세한 내용은 다음 Microsoft 웹 사이트를 방문하십시오: http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS이 문제를 해결하려면 사용자 지정 함수에서 사용되는 모든 곳에서 Application.CallerActiveCell 속성에 대체하십시오. 예를 들어, 사용자 정의 함수는 다음
Function Test()   Application.Volatile   ' Returns the cell one column to the left of the active cell. Note   ' that the active cell is not necessarily the cell that is calling   ' the function.   Test = ActiveCell.Offset(0, -1).ValueEnd Function				
다음 변경해야 합니다:
Function Test()   Application.Volatile   ' Returns the cell one column to the left of the cell that is   ' actually calling the function.   Test = Application.Caller.Offset(0, -1).ValueEnd Function				
이 작업을 수행할 경우 현재 활성 셀을 사용하는 대신 함수를 호출하고 있는 셀을 올바르게 함수를 사용합니다.
추가 정보
Microsoft Excel에서 사용자 지정 함수의 ActiveCell 속성을 사용할 때는 속성은 현재 활성화되어 있는 셀을 반환합니다. 사용자 지정 함수가 워크시트 셀의 수식에서 호출되는 경우에도 마찬가지입니다.

Application 개체의 호출자 속성을 현재 셀 또는 워크시트 관계없이 함수를 호출하여 개체를 반환합니다.

이 문서에서 설명하는 동작을 설명하기 위해 다음과 같이 하십시오.
  1. 새 통합 문서를 만듭니다.
  2. 새 통합 문서의 Sheet1에 있는 다음 값을 입력합니다:
          A1: 1      A2: 2      A3: 3      A4: 4      A5: 5					
  3. Alt 키를 눌러 Visual Basic Editor 시작 F11 새 VBA 모듈의 삽입, 다음 형식을 새 모듈에 다음 코드 =:
    Function Test()   Application.Volatile   Test = ActiveCell.Offset(0, -1).ValueEnd Function					
  4. Sheet1로 전환하십시오. B1 셀에 다음 수식을 입력하십시오.
    =Test()
    참고: 이 수식을 1 값을 반환합니다. 올바른 값을 한 열에서 현재 셀 (B1) 의 왼쪽에 있는 셀을 1 값이 포함되어 있기 때문입니다.
  5. 셀을 B1을 선택하십시오. 편집 메뉴에서 복사 를 클릭하십시오. 셀 B2:B5를 선택하십시오. 편집 메뉴에서 붙여넣기 를 누른 다음 Esc 키를 누릅니다.

    참고: 모든 다섯 수식에서 B1:B5 2 값을 반환합니다. 한 열에서 현재 셀 (B2) 왼쪽에 있는 셀을 값 2가 들어 때문입니다.
  6. B5라는 선택하고 F9 키를 누릅니다.

    B1:B5 모든 다섯 개의 수식을 하나의 열 (D10) 활성 셀의 왼쪽에 있는 셀을 0 값을 갖는 해당하는 값이 포함되어 있으므로 0, 값을 반환합니다.
  7. 항상 함수를 호출하는 셀 왼쪽에 한 열에 있는 셀의 값을 반환하도록 함수를 원하는 경우 다음 함수에 변경:
    Function Test()    Application.Volatile    Test = Application.Caller.Offset(0, -1).ValueEnd Function						
    B1:B5 수식에서 함수, 변경 및 다음 워크시트를 다시 계산할 경우 셀 또는 워크시트에서 활성화되어 아무리 값은 1-5단계 반환합니다.
참조
Visual Basic forApplications 도움말 보기에 대한 자세한 내용은 아래 문서 번호를 눌러 Microsoft 기술 자료에 있는 문서를 클릭하십시오.
226118OFF2000: 리소스 응용 프로그램에 대해 VBA 프로그래밍
xl2000

경고: 이 문서는 자동으로 번역되었습니다.

속성

문서 ID: 213684 - 마지막 검토: 02/05/2014 05:43:52 - 수정: 3.5

Microsoft Excel 2000 Standard Edition

  • kbnosurvey kbarchive kbmt kbdtacode kbprb kbprogramming KB213684 KbMtko
피드백