【问题标题】:Get command button by using cell address使用单元格地址获取命令按钮
【发布时间】:2020-03-16 12:59:03
【问题描述】:

我想在 Sub 的末尾调用/激活一个按钮。我知道命令按钮的单元格地址,但我不知道按钮的名称/ID。 如何选择/激活按钮而不循环通过活动工作表上的每个按钮? https://stackoverflow.com/a/30600479/13049793

我在多行上创建了我的按钮,每个按钮都分配给同一个宏,据我了解,我不能调用按钮分配给的宏,因为宏使用按钮的相对位置,下面是一个简单的例子来说明按钮相对位置的使用:

Sub ExampleButtonClick()
 Dim Cellvalue As String
 Cellvalue = ActiveSheet.Buttons(Application.Caller).TopLeftCell.Offset(0, -1).Value
 Msgbox (Cellvalue)
End Sub

【问题讨论】:

  • 这似乎是一个 XY 问题......你实际上在你的 Sub 中做什么?
  • 嗨 @BigBen 我有两个 Subs,一个将数据导入 Excel,另一个导出数据。他们使用存储在按钮相邻单元格中的文件和文件夹位置。我现在希望通过在导入子结束时调用导出按钮来减少按钮点击。
  • 那么您大概已经将相邻单元格作为范围变量了吗?
  • @BigBen 是的,当前已知相邻单元格。我希望让 A 行 Button1 调用 A 行 Button2 和 B 行 Button1 调用 B 行 Button2。我基本上将按钮复制并粘贴到每一行。
  • 重写您导出的子程序以将范围作为参数。然后让按钮根据您已有的TopLeftCell 逻辑调用该子。这样,您可以保留按钮的功能,但也只需调用导出子并将其传递给适当的范围。

标签: excel vba


【解决方案1】:

我假设您要运行一个宏,该宏最后会启动一个不同的宏,我还假设按钮不是作为刚刚调用的子的原因是因为它具有独立的功能,可以在没有其他子

假设您将命令按钮用作 activeX 控件,为什么不使用按钮执行的私有子按钮并将其放置在单个模块中并放在当前子控件的末尾;

call module1 'assuming the private sub exists in module 1 

或者更确切地说,即使在第一个 sub 中重复,也包括代码,搜索按钮似乎是循环路线,除非您有其他意图。

也许详细说明手头的任务或发布您正在处理的当前代码?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-22
    • 1970-01-01
    • 2015-09-25
    相关资源
    最近更新 更多