运行 Excel 4.0 宏使用按钮
Running Excel 4.0 macro using button
我传播的宏sheet 已经工作了多年,停止通过按钮工作,尽管它们仍然可以从 VBA 开发人员 window。
我使用普通形状(矩形)作为按钮并为其分配了宏(从“ThisWorkbook”中选择)。
为了阻止我在其他类似帖子中看到的建议修复:
- 它仍然是一个 .xlsm 文件
- 宏仍然可用。
- 它 运行在与以前相同的笔记本电脑上运行(Windows 10,Office 365)。
- 最近没有 Windows 更新。
- 我只打开了一个文件。
- 我尝试重新启动笔记本电脑并重新启动 Excel。
- 我没有使用 Active-X 控件。
- 我尝试使用表单控件按钮和常规形状按钮 - 都不起作用。
- 它与实际的 VBA 代码无关(证明见下文)。
我创建了一个新程序来显示问题不是代码本身:
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...文件>>选项>>信任中心>>信任中心设置>>宏设置
我传播的宏sheet 已经工作了多年,停止通过按钮工作,尽管它们仍然可以从 VBA 开发人员 window。
我使用普通形状(矩形)作为按钮并为其分配了宏(从“ThisWorkbook”中选择)。
为了阻止我在其他类似帖子中看到的建议修复:
- 它仍然是一个 .xlsm 文件
- 宏仍然可用。
- 它 运行在与以前相同的笔记本电脑上运行(Windows 10,Office 365)。
- 最近没有 Windows 更新。
- 我只打开了一个文件。
- 我尝试重新启动笔记本电脑并重新启动 Excel。
- 我没有使用 Active-X 控件。
- 我尝试使用表单控件按钮和常规形状按钮 - 都不起作用。
- 它与实际的 VBA 代码无关(证明见下文)。
我创建了一个新程序来显示问题不是代码本身:
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...文件>>选项>>信任中心>>信任中心设置>>宏设置