我在同一工作簿中的许多工作表上都有一个名为“Output”的命令按钮。所有按钮在模块ModMain中调用相同的“子输出()”。我需要知道命令调用来自哪张表?
答案 0 :(得分:4)
一种方法(如果你在同一个工作表上有多个按钮,所有调用相同的程序,特别有用)你可以使用的是查看
的值Application.Caller
在您的被叫Sub中。这将返回单击的按钮的名称:如果您唯一地命名按钮,则可以确定如何处理呼叫。
值得注意的是(使用工作表上的“表单”按钮)可以通过“onAction”设置传递参数,因此如果输入(例如)
'TestSub "Hello", 2'
进入“宏名称”文本框(包括单引号),它将调用TestSub并传递“Hello”和2作为参数。
答案 1 :(得分:3)
确保它位于每个VBA模块的顶部:
Option Explicit
然后改变这个:
Sub Output()
到此:
Sub Output(strSource as String)
您已为Sub
添加了参数。现在你的代码将无法编译。 (如果您不了解这一部分,请参阅帮助。)
修复代码以便编译。 VBA编辑器将引导您到达每个位置。这些位置将是您的"所有相同的VBA程序"纽扣。
每次调用Output
时,请将其更改为Output("ThisPlace")
。对于此地点,请插入唯一名称作为标识符。
现在按照您可以从Sub
。