将按钮的位置传递给调用子

时间:2018-06-25 19:35:35

标签: excel-vba vba excel

我不确定如何问这个问题,而且我对这个社区还比较陌生。

我试图获取按钮的位置,该按钮具有我的代码,并且可以正常工作。

如何从另一个Sub调用下面的Sub并获取行位置的整数值?

Sub ButtonRow()
     ' Mainlineup Macro
    Dim b As Object, RowNumber As Integer
    Set b = ActiveSheet.Buttons(Application.Caller)
    With b.TopLeftCell
        RowNumber = .Row
    End With
    'MsgBox "Row Number " & RowNumber
End Sub

1 个答案:

答案 0 :(得分:1)

有两种方法可以在VBA中传递变量。

您可以在函数外部使用公共变量,该公共变量的作用域将在其子函数之外,也可以使用Function,该变量旨在返回输出。

请注意,全局公共变量具有某些安全隐患。

必须将函数命名为要返回的变量-在这种情况下为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