Excel 将按钮的位置传递给呼叫子节点

Excel 将按钮的位置传递给呼叫子节点,excel,vba,Excel,Vba,我不知道该怎么问这个问题,而且我对这个社区还比较陌生 我试图得到一个按钮的位置,我有代码,它可以工作 如何从另一个子节点调用下面的子节点并获取行位置的整数值 Sub ButtonRow() ' Mainlineup Macro Dim b As Object, RowNumber As Integer Set b = ActiveSheet.Buttons(Application.Caller) With b.TopLeftCell RowNum

我不知道该怎么问这个问题,而且我对这个社区还比较陌生

我试图得到一个按钮的位置,我有代码,它可以工作

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

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

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

您可以在函数外部使用公共变量(其作用域在其子函数之外),也可以使用用于返回输出的

请注意,全局公共变量具有某些安全含义

函数必须命名为要返回的变量-在本例中为
函数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
或:


可能是重复的,非常感谢!我试过代码,但遇到了问题。当我调用函数并测试是否通过了position行时;变量为空。如果我将变量设为全局变量以供其他子变量访问,该怎么办。这也行吗?不确定是否可以在函数中使用
ActiveSheet
。它们有很多结构上的限制。你可能必须使用我发布的第二个例子。或者将当前工作表的名称传递给它。
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