Для того, чтобы сделать это так, как вы хотите, вам нужно либо создать экземпляр классов, как предлагает @Chipmunk, либо создать метод Shared. Вы также должны уйти от старого метода VB6. Ваш метод должен выглядеть так:
Public Shared Function Add(ByVal n1 As Int16, ByVal n2 As Int16) As Int16
Return n1 + n2
End Function
Редактировать:
Это будет затем вызываться с помощью:
Dim x as Int16 = MyFunc1.MyFunc2.Add(15, 16)
Использование Call
предполагает, что вы выполняете подпрограмму, а не функцию. Назначение функции - вернуть данные. Просто Call
это не приведет к желаемому эффекту.
Редактировать 2 (пример)
Вы можете использовать модуль для этого как состояния @Chipmunk, или вы можете использовать класс. Я предпочитаю класс только потому, что MS не приняла решение о модулях (они отказались от них для одной из версий - я забыл, какая - и затем вернули их обратно).
Метод класса
Namespace MyFunc1
Public Class MyFunc2
Public Shared Function Add(ByVal n1 As Int16, ByVal n2 As Int16) As Int16
Return n1 + n2
End Function
End Class
End Namespace
Использование в Form1.vb
Imports MyFunc1
...
Public Sub DoAdd()
Dim x as Int16 = MyFunc2.Add(15, 16) ' MyFunc1 Namespace imported, MyFunc2
' is assumed. No instance is created
End Sub
Модульный метод
Public Module MyFunctions
' Notice no shared modifier here. The module uses the legacy module
' concept to assume that it is shared
Public Function Add(ByVal n1 as Int16, ByVal n2 as Int16) As Int16
Return n1 + n2
End Function
End Module
Использование в Form1.vb
Поскольку модуль будет находиться в указанном пространстве имен в вашем проекте, вы просто вызовете его напрямую:
Public Sub DoAdd()
Dim x as Int16 = MyFunctions.Add(15, 16) ' This assumes that your MyFunctions
' module is in an imported namespace
End Sub