Application.run ничего не возвращает, хотя функция вызывается правильно - PullRequest
0 голосов
/ 25 февраля 2019

Я работаю в приложении для работы с электронными таблицами, где каждый объект листа имеет одинаковые методы (getHeaderRow и skipCol), но для каждого листа они немного различаются.Оба эти метода вызываются в методе btnGenerate_DataComments_Click() в модуле DataComments.Более конкретно, в рамках метода btnGenerate_DataComments_Click() я хочу вызвать метод getHeaderRow, определенный как часть объекта ActiveSheet в каталоге проекта (например, если я нажму на кнопку, назначенную макросу btnGenerate_DataComments_Click() в листе5, я хочу позвонить Sheet5.getHeaderRow).Для этого я использую Application.Run.Ниже мой код:

Dim str As String: str = "Sheet" & ActiveSheet.Index & ".getHeaderRow"
Dim intHeaderRow As Integer: intHeaderRow = Application.Run(str)
Dim testHeaderRow As Integer: testHeaderRow = Sheet5.getHeaderRow
MsgBox ("Macro: " & str & "; intHeaderRow: " & intHeaderRow & "; testHeaderRow: " & testHeaderRow)

и getHeaderRow определяется на всех листах как:

Const intHeaderRow = 3
Const intEqpTypeCol = 3

Public Function getHeaderRow() As Integer
    getHeaderRow = intHeaderRow
End Function

Хотя значение Const intHeaderRow отличается от листа к листу

Однако, во всплывающем окне с сообщением «Macro: Sheet5.getHeaderRow; intHeaderRow: 0; testHeaderRow: 3».Это говорит мне о том, что функция getHeaderRow работает, но почему-то Application.Run не возвращает правильное значение (3).Кроме того, когда я прохожу отладчик, я вижу, что код переходит к методу Sheet5.getHeaderRow при вызове Application.Run и сохраняет правильное возвращаемое значение в getHeaderRow, но когда отладчик возвращается к btnGenerate_DataComments_Click() метод, он не хранит значение.

Буду признателен за понимание этого вопроса;структура моего проекта прилагается ниже.С наилучшими пожеланиями.

Project Structure

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