vba - 我的快捷键不允许我运行消息框
问题描述
此代码的早期版本没有消息框,这有时会导致错误的工作簿被关闭。我添加了一个 okcancel 消息框来防止这种情况发生,但是当我使用快捷键打开它时,该消息框没有显示出来。我错过了什么?
Sub openerQuick()
Dim myfile As String
Dim clientID As String
Dim PDSfilename As String
Dim myopener As Variant
clientID = ActiveCell
PDSfilename = ActiveCell.Offset(0, 1)
myfile = "N:\DOWNLOAD\FILEDIR\" & clientID & "\original\" & PDSfilename
Set wbOpener = Workbooks.Open(myfile)
If MsgBox("Okay to close?", vbOKCancel) = vbOK Then
ActiveWorkbook.Close
End If
End Sub
解决方案
我怀疑它MsgBox
本身与丢失宏快捷键有什么关系。
快捷键是由一个隐藏的成员属性值定义的,当你重写一个方法的签名,或者重写一个模块时,VBE 有丢失成员属性的趋势*;修改代码可能会导致先前存在的属性以某种方式丢失。
- 从项目中删除模块,在提示是否导出时选择“是”
- 在您最喜欢的文本编辑器中使用
Notepad++打开导出的文件 - 找到程序
- 如果属性不存在,请添加
- 如果文件被更改,请保存文件,重新导入到项目中
成员属性应如下所示:
Public Sub OpenerQuick()
Attribute OpenerQuick.VB_ProcData.VB_Invoke_Func = "A\n14"
'...code....
End Sub
该确切属性将Ctrl++Shift与A宏相关联;更改A
哪个字母摇晃您的船以更改快捷方式。
当您在 Excel 中录制宏并指定A
快捷键时,宏录制器会自动为您添加此隐藏属性。
* Rubberduck的模块重写器有这个问题,它让我发疯。
推荐阅读
- xamarin.forms - 有没有办法在 Xamarin Forms 中使用相机功能而无需下载任何额外的 NuGet 包?
- java - Spring Boot 应用程序未在外部 Tomcat 中启动(在 Tomcat 8.5 和 10 中均已尝试)
- canvas - 如何在画布中旋转渐变,注意:不是画布本身
- docker - 在同一个 Docker 网络中发出 HTTP 请求
- arm - 用于高速微控制器测试台控制器/数据采集器的系统架构
- azure - 从 Azure DevOps 设置应用服务连接字符串
- c# - 等待 for 循环完成
- python - 更新烧瓶中的搜索数据后保持在同一页面上
- r - 绘制免疫表型图:暗示不同数量 rof 行错误的参数
- node.js - NodeJs POST 请求 ER_DATA_TOO_LONG