VBA 함수 - 인수 선택 사항 아님
Public Function RETURN_Equipment(Optional category As String) As Collection
Dim config As classConfiguration
Set config = New classConfiguration
Dim item As classItem
Set item = New classItem
Dim myCollection As Collection
Set myCollection = New Collection
For Each config In Configurations
For Each item In config.colItems
If IsMissing(category) Then
myCollection.add item
ElseIf InStr(category, "mainframe") <> 0 And item.category = "mainframe" Then
myCollection.add item
MsgBox "Fired!"
ElseIf category = "accessory" And item.category = "accessory" Then
Else
End If
Next
Next
RETURN_Equipment = myCollection
End Function
나는 계속 이해합니다.
컴파일 오류:
인수는 선택 사항이 아닙니다.
마지막 줄에 오류가 있습니다.
RETURN_Equipment = myCollection
오류 메시지를 이해했습니다, 제가 파라미터를 작성하지 않았다는 메시지입니다.하지만 매개 변수는 하나뿐이고 선택 사항이라고 선언했습니다.코드는 제가 함수에서 함수를 호출하려고 한다고 생각하는 것처럼 보입니다.
왜 그러고 있어?
개체를 할당할 때마다 사용해야 합니다.set
키워드
set RETURN_Equipment = myCollection
함수에서 결과를 반환할 때 잘못된 함수 이름을 사용하여 이 오류가 발생했습니다.저는 이렇게 하고 있었습니다.
Function MyFuncA(arg as String)
MyFuncB = arg 'The problem is I'm using MyFuncB instead of MyFuncA
End Function
다른 곳에서 함수를 복사하여 이름을 변경했지만 반환문은 변경하지 않았기 때문에 이 문제가 발생했습니다.이것은 OP의 문제가 아니지만, 저는 같은 오류 메시지를 받고 있었습니다.
선택적 매개 변수를 문자열로 지정했기 때문에 값을 지정하지 않은 경우 기본적으로 빈 문자열로 지정됩니다.
이것은 그것이 빠질 수 없다는 것을 의미합니다.
로 지정했다면
Public Function RETURN_Equipment(Optional category) As Collection
변형일 수 있으며 누락될 수 있지만 범주 매개 변수로 문자열이 아닌 변형을 전달하여 상황을 엉망으로 만들 수도 있습니다.
가장 좋은 방법은 아마도 교체하는 것일 것입니다.
If IsMissing(category) Then
와 함께
If category = "" Then
브래드가 지적했듯이 세트를 사용해야 합니다.
Set RETURN_Equipment = myCollection
자세한 내용은 http://msdn.microsoft.com/en-us/library/office/gg251721%28v=office.15%29.aspx 을 참조하십시오.
언급URL : https://stackoverflow.com/questions/23574083/vba-function-argument-not-optional
'source' 카테고리의 다른 글
postgres 사용자와 비밀번호를 어떻게 확인합니까? (0) | 2023.07.15 |
---|---|
응답입니다.종료()가 유해하다고 간주됩니까? (0) | 2023.07.15 |
mongodb 3.4.3 Ubuntu 16에서 wired tiger_kv_engine.cpp 267 오류가 거부되었습니다. (0) | 2023.07.10 |
mariadb 기억이 안정되는 데 얼마나 걸립니까? (0) | 2023.07.10 |
Oracle 데이터베이스의 모든 저장 프로시저를 나열하려면 어떤 SQL을 사용해야 합니까? (0) | 2023.07.10 |