2013-04-18 5 views
1

모듈에 함수가 있습니다.Excel VBA는 사용자 정의 함수에서 명명 된 범위에 값을 할당하지 못함 오류 1004

함수 호출
Public Function CourseSetup(ByVal SROfferId As Integer) as string 

다음 라인이 실패 다음과 같이 함수 정의

Worksheets("CourseEvaluation").Range("CourseName").value = "1234" 

에러 실패 1004

부 (매크로) 작동에서 동일한 행 . CourseName은 ranged라는 하나의 셀입니다. 위 범위의 값을 얻는 것이 효과적입니다. 직접 실행 창에

:

?Worksheets("CourseEvaluation").Range("CourseName").value 

의 범위에서 현재 값을 반환합니다.

+1

당신이 워크 시트 수식에서이 함수를 호출하고 있습니까? –

+0

예, 입력 = CourseSetup (+ srof) –

답변

2

워크 시트에서 호출 된 함수 수식이 입력 된 활성 셀 이외의 워크 시트 객체를 조작 할 수 없습니다.

이 수식에서 종속성을 보존 순환 참조 에러를 방지 일반적로 등

사용 서브 루틴 개체를 조작하고, 사용하는 수식 여부 셀 참조 또는 변수 (값을 반환).

한 가지 예외는 UDF가 워크 시트 개체를 조작 할 수 내 에서 서브 루틴 라는 것입니다, 그러나 이것은 아마도 시작하는 좋은 습관이 아니다. 변수/셀에 값을 반환하도록 함수를 제한하고 서브 루틴을 사용하여 객체를 조작하십시오.

추가 읽기 :

Making Excel functions affect 'other' cells

http://www.excelforum.com/excel-programming-vba-macros/477157-changing-cell-values-from-within-udf.html

http://www.ozgrid.com/Excel/free-training/ExcelVBA1/excelvba1lesson21.htm

+0

이것은 내가 본 행동이지만 귀하의 확인이 필요했습니다! 보안 관점에서 의미가 있습니다. 고맙습니다. –

2

셀에서 호출 된 사용자 정의 함수는 호출 된 셀에 대해서만 값을 반환 할 수 있습니다. 따라서 UDF는 정의 된 이름에 값을 쓸 수 없습니다.

+0

이것은 본 행동이지만 확인이 필요했습니다. 감사! –