2015-07-30 1 views
-1

Я пытаюсь передать параметр массива в подпрограмму VB. если я использую '()' вместе с именем массива, тогда он говорит 'Sub или Function not defined', и если он удаляется, то он выдает ошибку компилятора как «Несоответствие типа: Массив или определенный пользователем тип».как передать Array как paramenter в макросе VB

Dim arypred() As Long 
Dim dependlink() As Long 

Main Sub() 

..... 
getPred arypred(), dependlink() 'Call to the sub procedure getPred 

End Sub 

Public Sub getPred(arypred() As Long, dependlink() As Long) 

.... 

End Sub 

Я googled, но я не могу отследить точное решение для этого. Кроме того, я запутался между вариантом использования и Array(), поскольку большинство примеров, которые я видел, использовали Varaint.

Извините, если этот вопрос очень прост; Я новичок в VB и изучаю это. , пожалуйста, помогите сделать эту работу.

Спасибо заранее.

ответ

0

ли это так

Sub Main() 
    Dim arypred() As Long = Nothing 
    Dim dependlink() As Long = Nothing 

    getPred(arypred, dependlink) 
End Sub 

Public Sub getPred(ByVal arypred() As Long, ByVal dependlink() As Long) 


End Sub 

Вы не должны включать в себя () символ при прохождении массива и убедитесь, что присвоить начальное значение массива в объявлении. Для начала назначьте nothing.

Предложение: Если вы хотите, чтобы получить значение после вызова метода getPred используйте Public Function вместо того, чтобы возвращать значение. Если этот метод используется только в классе, то используйте Private вместо Public, если только он не является модулем. Если вы хотите, чтобы обе переменные (arypred и dependlink) возвращали новые значения после выполнения метода getPred, используйте ByRef вместо ByVal. Для получения дополнительной информации о ByRef и ByVal, click here и here.

+0

спасибо MAC. Я пробовал вышеупомянутое решение, но оно выдает ошибку компилятора, поскольку «Аргумент должен быть ByRef». Я попытался заменить ByVal на ByRef, но затем он также показывает синтаксическую ошибку в вызывающей строке: getPred (arypred, dependlink) – kousalyarajan

+0

вы можете включить все значимые коды? @kousalyarajan ', потому что проблема может быть связана с другими частями вашего кода. – MAC

+0

Теперь он работает нормально. Проблема заключалась в видимости переменных массива. Я применил их в процедуре, которая вызывает процедуру1, в которой вызывается gePred. Public Sub normal2D_Process (shp As Visio.Shape) ........... getPred arypred(), dependlink() End Sub Public Sub getPred (ByRef arypred() As Long, ByRef dependlink() As Long) – kousalyarajan

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