Мне нравится функция, возвращающая два массива, каждый массив , состоящий из множества небольших массивов с фиксированным размером (2).Как вернуть массив из двух массивов в функции VBA
function AssbIO(...) as variant()
'...
Dim i() as variant
Dim o() as variant
Redim i(0 to 1)
Redim o(0 to 1)
i(0)(0)=1
i(0)(1)=2
i(1)(0)=3
i(1)(1)=4
o(0)(0)=11
o(0)(1)=22
o(1)(0)=33
o(1)(1)=44
'Now the following is giving me an error
AssbIO(0) = i
AssbIO(1) = o
End Function
Ваша помощь будет принята с благодарностью.
PS. Вот полная программа, которую я пытаюсь достичь Учитывая серию i и o, я хочу построить серию i (от 1 до 4, затем от 7 до 9 ...) и от o (от 5 до 6, затем от 10 до 15). Пример: IO = («i», «i», «i», «o», «o», «i») , тогда i = ((1,3), (6,6)) и о = ((4,5))
Function AssbIO(IO() As String) As Variant
Dim i() As Variant
Dim o() As Variant
Dim ni As Integer 'the jumper of i()
Dim no As Integer 'the jumper of o()
Dim nIO As Integer ' the jumper of initial IO()
Dim a As Integer, b As Integer
a = 1
While nIO <= erLen(IO)
b = a
While IO(nIO) = "i"
b = b + 1
nIO = nIO + 1
Wend
ni = ni + 1
ReDim Preserve i(0 To ni - 1)
i(ni - 1)(0) = a
i(ni - 1)(1) = b
a = b + 1
While IO(nIO) = "o"
b = b + 1
nIO = nIO + 1
Wend
no = no + 1
ReDim Preserve o(0 To no - 1)
o(no - 1)(0) = a
o(no - 1)(1) = b
a = b + 1
While IO(nIO) <> "i" And IO(nIO) <> "n"
nIO = nIO + 1
Wend
Wend
'ReDim AssbIO(0 To 1) 'this is giving me errors
AssbIO(0) = i
AssbIO(1) = o
End Function
Большое спасибо user3598756! поэтому для передачи значений этих 2 массивов в функцию-ответ был необходим ПРОМЕЖУТОЧНЫЙ вариант. Также спасибо за переработку моего кода (моя использует предварительно созданную функцию ...). Завтра буду изучать ваш код. –
Добро пожаловать. Хорошая кодировка! – user3598756