Существует два способа передачи переменных в VBA.
Вы можете использовать общедоступные переменные вне функции, которые будут иметь область видимости вне своей подпрограммы, или использовать функцию , который предназначен для возврата выходных данных.
Обратите внимание, что глобальные открытые переменные имеют определенные последствия для безопасности.
Функции должны быть названы в качестве переменных, которые вы намереваетесь возвращать - в данном случае Function RowNumber()
.Существуют ограничения на то, что вы можете делать с функциями - функции IIRC не могут изменять никакие свойства ячейки, листа или рабочей книги.
Sub WhatPosition()
MsgBox RowNumber
End Sub
Public Function RowNumber() As Integer
Dim b As Object
Set b = ActiveSheet.Buttons(Application.Caller)
With b.TopLeftCell
RowNumber = .Row
End With
End Function
или:
Public RowNumber As Integer
Sub WhatPosition()
ButtonRow
MsgBox RowNumber
End Sub
Sub ButtonRow()
Dim b As Object
Set b = ActiveSheet.Buttons(Application.Caller)
With b.TopLeftCell
RowNumber = .Row
End With
End Sub