На следующем веб-сайте они рекомендуют использовать массив 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()
ли вам это нужно во время разработки, когда вы кодирования или во время выполнения? Функции возвращают значения; субмарины нет. Вместо этого используйте функцию и просто поместите 'mySub = 3' вместо« Некоторый код ». – HK1
Я использую его в Sub, который строит другой Sub, поэтому определенно не во время выполнения. Это не такая уж большая сделка, но я хотел бы взять это число на всякий случай, если бы захотел добавить еще один аргумент в Sub без hardcoding. –
Значит, вы используете функцию для написания нового кода для вас? Звучит роман, если не немного необычный для меня. – HK1