2013-08-14 3 views
0

Есть ли способ вернуть число аргументов в Sub или Function в Access?Возвращаемое количество аргументов - MS Access

Public Sub mySub(arg1 As String, Optional arg2 As Variant, Optional arg3 As Variant) 
     'Some code 
    End Sub 

Я хотел был бы иметь возможность возвратить номер 3 из этого Sub. Возможное?

+0

ли вам это нужно во время разработки, когда вы кодирования или во время выполнения? Функции возвращают значения; субмарины нет. Вместо этого используйте функцию и просто поместите 'mySub = 3' вместо« Некоторый код ». – HK1

+0

Я использую его в Sub, который строит другой Sub, поэтому определенно не во время выполнения. Это не такая уж большая сделка, но я хотел бы взять это число на всякий случай, если бы захотел добавить еще один аргумент в Sub без hardcoding. –

+0

Значит, вы используете функцию для написания нового кода для вас? Звучит роман, если не немного необычный для меня. – HK1

ответ

1

На следующем веб-сайте они рекомендуют использовать массив Parameter в качестве аргумента, который не требует, чтобы вы знали, сколько аргументов.

Вызов вашей функции: Функция SomeProc (ParamArray avarItems() как вариант), а затем внутри функции или процедуры вы работаете с массивом параметров, как и любой другой массив. Я думаю, что это будет включать количество элементов, использующих Ubound (avarItems) + 1. Единственное, массив параметров должен иметь тип Variant, и он должен быть последним аргументом в списке аргументов.

http://msdn.microsoft.com/en-us/library/office/aa164533(v=office.10).aspx

Просто, чтобы проверить это, я создал небольшой образец:

Option Explicit

Private Sub Command0_Click() Dim nCount1 As Integer

nCount1 = GetArgCount("one", "two", "three", "four") 

MsgBox ("Arguments = " & nCount1) 

End Sub функции GetArgCount (ParamArray PassedArray() как вариант)

GetArgCount = UBound(PassedArray) + 1 

End Function

Это возвращает номер 4 в MsgBox()

Смежные вопросы