2011-10-03 5 views
1

선택적 인수가있는 VBA 함수가 있다고 가정 해보십시오. 해당 함수 내에서 호출 코드가 선택적 인수를 제공했는지 여부를 알 수있는 방법이 있습니까?VBA 함수 호출에서 제공 한 선택적 인수를 확인하는 방법이 있습니까?

Public Function SomeFunction(optional argument as Integer = 0) As Integer 

End Function 

즉 다음 호출 간의 차이점을 알 수 있습니까?

x = SomeFunction() 
x = SomeFunction(0) 

답변

4

내가 아는 한 불가능합니다. 인수가 전달되지 않으면 인수는 기본값 (이 경우 0)으로 초기화됩니다.

변수 유형을 Variant으로 변경하고 IsMissing 함수를 사용하여 인수가 전달되었는지 여부를 확인하십시오. 예 :

Public Function SomeFunction(Optional argument As Variant) As Integer 
    If IsMissing(argument) Then 
     argument = 0 
    Else 
     // Code if argument not = 0.... 
    End If 
End Function 

IsMissing 기능은 항상 기본 초기화 값을 갖게됩니다 다른 데이터 유형으로 Variant 데이터 형식으로 작동합니다.

0

아니요, 없습니다. 장 13.1.1는 "깊이에서 C#을"명확하게 표현

같은 문제는, 같은 C#을 같은 다른 언어로 존재한다 (I이 부분에 15 분 전에 읽고, 내가이 기억 정상입니다!)

무엇 함수 선언에 기본값을 설정하지 않는 것이 좋습니다. 함수에서 인수가 널 (null)이면 0으로 설정하고 함수 호출에서 인수가 제공되지 않았 음을 알 수 있습니다.

편집 : @Remnant가 대답 한 것처럼, 이렇게하려면 매개 변수 유형이 변형이어야합니다.