2012-02-19 5 views
1

워크 시트에서 개인 기능을 계속 사용할 수 있습니다. 숨겨져 있지만 사용자가 이름을 입력하면 호출됩니다. 왜? 이 방법으로 작동해야합니까? 사용자 정의 함수가 VBA 프로젝트 외부에서 사용되는 것을 완전히 차단하는 방법이 있습니까? Private 키워드를 사용하여 함수를 선언하거나 Option Private Module을 모듈 상단에 배치 해 보았습니다. 미리 감사드립니다.워크 시트에서 개인 기능을 사용할 수 있습니다.

답변

3

옵션 개인 모듈은 단순히 기능 마법사에서 UDF를 숨 깁니다. 이 옵션을 사용하면 외부 사용자로부터 모듈을 숨기고 노출 된 함수 호출을 더 쉽게 볼 수 있습니다. 함수의 이름을 아는 경우 워크 시트에서 계속 사용할 수 있습니다. 그것이 작동하는 방법입니다.

그러나 Worksheet_Change 이벤트와 같은 다른 곳에서 해당 개인 기능을 사용하려고하면 할 수 없습니다. 그리고 "Option Private Module"을 사용하여 "Public"으로 선언하면 액세스 할 수 있습니다. MSDN에서

는 :

모듈 예를 들어 옵션 개인 모듈, 공공 부분을 포함, 변수, 모듈 수준에서 선언 된 개체 및 사용자 정의 유형 내에서 계속 사용할 수 있습니다 모듈을 포함하는 프로젝트이지만 다른 응용 프로그램이나 프로젝트에서는 사용할 수 없습니다.

질문

완전히 VBA 프로젝트의 외부에서 사용되는 사용자 정의 함수를 차단하는 방법이 있나요에 대해서?

내가 사용자가 함수의 이름을 알고하지 않도록

1) 당신의 VBA 프로젝트를 보호 생각할 수있는 두 가지 방법이 있습니다. 하는 I는 추가 기능에서 일하고 있어요 것을

+0

내가 주목해야에 추가하고, 추가 기능의 개인 모듈에 정의 된 함수를 만들기

2) 열려있는 모든 통합 문서에서 사용할 수 있습니다. – Cutter

+0

사용자가 함수 이름을 어떻게 알았는지 궁금합니다. 코드가 보호되지 않습니까? –

+0

코드를 보호하고 싶지 않습니다. 코드가 보호 되더라도 사용자는 함수 이름을 추측하거나 우연히 입력 할 수 있습니다. 차라리 코드를 읽기 어렵게 만들 것이기 ​​때문에 저의 함수에 암호명을 사용하지 않을 것입니다. – Cutter

관련 문제