Excel VBA - вызов метода объекта с аргументами, которые возвращают переменную - PullRequest
0 голосов
/ 03 сентября 2018

Здравствуйте, новинка в объектно-ориентированном программировании в VBA для Excel. Мне было интересно, как вызвать методы, передающие несколько параметров, возвращающих переменную

Вот что я хочу сделать

У меня есть класс с именем cExcelTable внутри у меня есть метод:

Public Function GetColumnNumberByColumnName(strColumnName As String)
    Dim resultColumnFound As Integer

    '... Here i have the code which find the right column
    '... then i return the result as an integer

    GetColumnNumberByColumnName = resutColumnFound
End Function

Тогда после этого возникает проблема, как я могу вызвать этот метод и получить возвращаемое значение? То, что я хочу, является эквивалентом этого:

Dim myTable As New cExcelTable

Dim i as Integer

myTable.Workbook = "file.xlsx"
myTable.Sheet = "TestingSheet"
myTable.Table = "TabDatas"
'... And here is my bug that i don't know how to solve
i = myTable.GetColumnNumberByColumnName("TOTAL")

Я знаю, что для метода, который не имеет возвращаемых значений, я должен использовать Вызов , но как насчет метода, который возвращает значение?

1 Ответ

0 голосов
/ 03 сентября 2018

решаемые

Благодаря PeterT и Domenic в комментариях я обнаружил, что после ночного сна моя ошибка заключалась не в вызове метода, а в неправильном написании двух переменных внутри моего метода и добавлении типа должно вернуть

Так что для нового, который зайдет в этот пост, ответ Внутри метода вы должны использовать это

'Add the type the method it should return "As Integer"
Public Function nameOfTheMethod(parameterNumber1 As String) As Integer
    Dim resultColumnFound As Integer

    '... type your code
    '... then return the result with the correct spelling

    GetColumnNumberByColumnName = resultColumnFound
End Function

А затем внутри вашего кода вы можете вызывать свой метод следующим образом

Dim myObject As New cMyClass 'cMyClass  is the name of your class and myObject is the name of your object you are creating
Dim i as Integer

i = myObject.nameOfTheMethod("test")
...