Я работаю в приложении для работы с электронными таблицами, где каждый объект листа имеет одинаковые методы (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()
метод, он не хранит значение.
Буду признателен за понимание этого вопроса;структура моего проекта прилагается ниже.С наилучшими пожеланиями.
