运行 Excel 4.0 宏使用按钮

Running Excel 4.0 macro using button

我传播的宏sheet 已经工作了多年,停止通过按钮工作,尽管它们仍然可以从 VBA 开发人员 window。

我使用普通形状(矩形)作为按钮并为其分配了宏(从“ThisWorkbook”中选择)。

为了阻止我在其他类似帖子中看到的建议修复:

我创建了一个新程序来显示问题不是代码本身:

Sub button_not_working()
    MsgBox "button_not_working"
End Sub

此程序使用 VBA 屏幕中的绿色播放按钮运行,但不能通过 sheet 上的指定按钮运行。

代码在正常的 VBA 代码模块中(不是 VBA 屏幕上的“ThisWorkbook”区域)。

宏是通过右键单击形状来分配的,可用宏列表就是分配宏弹出窗口中“本工作簿”中的那些。

单击形状以 运行 分配的宏时,我收到此错误消息。

此问题通常是由于多个屏幕或分辨率差异问题导致的。如果您使用的是连接到屏幕的笔记本电脑,请在笔记本电脑与显示器断开连接时尝试使用笔记本电脑上的按钮。如果这解决了问题,请确保您在两个设置之间具有相同的分辨率 and/or 缩放比例。

如果此更改是最近才发生的,并且是在没有额外显示器的台式机或笔记本电脑屏幕上,请确保将缩放比例设置为 100%,以防最近发生更改。

尝试一下:确保您的 'caller' 形状具有唯一的名称
注意:可能有多个具有相同名称的形状并且(无论出于何种原因)可能会混淆 excel 的形状到宏连接。

附加信息 1:
如果您使用 'grouped shapes' 对象作为控件,您应该为组中的所有形状分配相同的名称。

附加信息 2:
最初的 OP 症状只是“宏……停止通过按钮工作”。 OP 已更新,并显示一条错误消息。此处描述的由于非唯一命名而断开连接不会引发错误消息。相反,症状可能是:a) 宏根本不是 运行 或 b) 被调用宏中的 'caller' 对象无效。

您不能在按钮事件中从 ThisWorkbook 调用代码。

我喜欢将按钮事件放在按钮所在的 sheet 后面的代码中。这样,无论 sheet 被复制到哪里,代码都会随着 sheet 移动。

使用表单按钮。右键单击窗体按钮和 select Assign Macro...。然后 select 弹出列表中的 VBA 子例程。只有在此弹出窗口中可见的程序才有效。

注意: 切勿在 VBA 中的任何名称中使用 _。它保留用于事件处理。

Public Sub ButtonIsWorking()
    MsgBox "button is working"
End Sub

sheet中的代码:

分配宏:

按下按钮:

已解决 - 结果我需要选中“启用 Excel 4.0 宏”复选框。 显然,从本月开始,Microsoft 刚刚开始在 Office 365 中默认禁用此功能!

所以在Excel...文件>>选项>>信任中心>>信任中心设置>>宏设置