将触发代码分配给多个图像 - Excel VBA

将触发代码分配给多个图像 - Excel VBA

我想在单击我在 Excel 表中插入的图像之一时分配一些特定操作。问题是,我得到了 52 张图片(对于那些好奇的人来说是扑克牌)。所以,我的问题是,有没有办法避免为 52 种情况编写代码,并找到如下所示的方法:

Private Sub Image(x)_Click()
   Call common_subroutine(x)
End Sub

,而不是为每个不同的图像名称编写 52 次相同的内容?由于我使用相同的子程序根据情况使用变量进行工作,如果没有办法做到这一点,工作量就不会那么大,但这种明显愚蠢的方法是否是唯一可行的方法确实让我很困扰。

答案1

我在编写用户表单时多次遇到过这个问题。不幸的是,我从未找到一种方法来绕过为每个对象单独创建触发器。但是,我确实想过使用 Python 打印出实际代码,然后将其粘贴到用户表单 VBA 中。这样就不需要更改繁琐的数字了。(我想你也可以在 VBA 中做到这一点,但祝你好运,只需一行即可完成。)

下面的 Python 循环适用于您发布的示例。

for i in range(52):
    print "Private Sub Image%d_Click()\n\tCall common_subroutine(%d)\nEnd Sub\n" % (i + 1, i + 1)

只需从命令提示符运行并复制输出。

答案2

好的,我对您的 VBA 示例有点困惑,但执行此操作的最佳方法是多选所有图片,右键单击 - 分配宏。

这会将相同的宏分配给所有选定的图片。

答案3

是的。给每张图片相同的名称和不同的索引。现在,您可以将此对象作为整个集合引用,并根据给定的索引选择图片。

相关内容