Передача и получение массива из функции - PullRequest
1 голос
/ 12 февраля 2009

Я сделал несколько двумерных массивов в Excel, и я написал функцию для помещения одинаковых данных в копии каждого из них. Я не совсем уверен, что правильно понимаю синтаксис.

Функция называется «Заполнить», старый массив «Старый», а новый «Новый». Я использую имя 'Block' для имени переменной передачи.

Итак, строка в моем коде:

New = Fill(Block:=Old())

И первая строка моей функции:

Function Fill(Block() As Variant) As Variant

Это дает мне ошибку несоответствия типов массива 'Old', говоря, что он ожидает массив. Приводит меня к мысли, что функция в порядке, и ждет правильного типа, но не получает его.

Чего мне не хватает?

Ответы [ 2 ]

1 голос
/ 12 февраля 2009

Прошло много времени с тех пор, как я занимался программированием на VBA, но я бы подумал, что следующее будет более вероятно правильным:

NewArray = Fill(OldArray)

Function Fill(Block As Variant) As Variant

  Fill = Block

End Function
0 голосов
/ 16 февраля 2009

Вот некоторые заметки о том, почему вы, возможно, получили ошибку, которую сделали. Если функция ожидает определенного типа, вы должны объявить переменную как этот тип.

Sub FillThis()
'Declare OldArray as Variant '
'because that is what the function '
'requires. '
Dim OldArray As Variant
'Similarly ...'
Dim StringPart As String

    'ByRef, so the variable will be '
    'changed by the function. '
    'Note that ByRef is the default. '
    Fill OldArray

    For i = 0 To 4
      Debug.Print OldArray(i)
    Next

    StringPart = "Part 1"
    GetString StringPart
    Debug.Print StringPart
End Sub

'In this example, Fill is not being returned, '
'so there is no need to declare it as anything '
Function Fill(ByRef OldArray As Variant)
'The Array must be dimensioned '
ReDim OldArray(4)

    For i = 0 To 4
        OldArray(i) = i + 1
    Next

End Function

Function GetString(ByRef StringPart As String)
    StringPart = StringPart & " Add a Bit"
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...