Как передать массив в функцию - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь передать массив в функцию в VBA EXCEL.Я не могу найти подходящий пример, поскольку я пытаюсь сделать

Я пытаюсь передать массив в функцию В объявлении функции я пытаюсь установить переменную array как вариант или ByRef, но не работает Что я не так?

Dim Retarray(1 To 6, 1 To 2) As String  

Это мой массив. Затем попробуйте перейти к функции как

Smap = checkDevNo(Retarray, Right(CellArray(i, 1), 1))

Это мое объявление функции

Function checkDevNo(ByRef aaray() As String, aa As Character) As String

Select Case aa

Case "1"
    For j = 1 To 6
        If aaray(j, 1) = 6 Then
            checkDevNo = j
        End If
    Next j
Case "2"
    For j = 1 To 6
        If aaray(j, 1) = 7 Then

        End If
    Next j
End Select
End Function

Ошибка компиляции Пользовательский тип определения не определен ??

Ответы [ 2 ]

1 голос
/ 24 апреля 2019

IIRC, Character не относится к типу VBA.Вместо этого вы должны передать его как String или Byte.В Visual Basic отдельные символы также могут храниться в строках фиксированной длины (Dim myChar As String * 1), но этот синтаксис не поддерживается для параметров метода.

Поэтому объявление вашей функции должно выглядеть следующим образом:

Function checkDevNo(ByRef aaray() As String, aa As String) As String
    ...
End Function
0 голосов
/ 24 апреля 2019

Если мы говорим о Excel VBA, то вам нужно сделать следующее:

Function checkDevNo(aaray As Variant, aa As String) As String

    Select Case aa

        Case "1"
            For j = 1 To 6
                If aaray(j, 1) = 6 Then
                    checkDevNo = j
                End If
            Next j
        Case "2"
            For j = 1 To 6
                If aaray(j, 1) = 7 Then

                End If
            Next j

    End Select

End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...