首页 > 解决方案 > 将按钮的位置传递给调用子

问题描述

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

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

如何从另一个 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

标签: excelvba

解决方案


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

您可以在函数之外使用公共变量,它的作用域在它们的 sub 之外,或者使用一个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

推荐阅读