Excel 如何使Application.key快捷方式特定于工作簿?

Excel 如何使Application.key快捷方式特定于工作簿?,excel,vba,Excel,Vba,我为不同项目的一系列类似文件添加了代码 我定义了一个(Control+R)“^+R”快捷方式,使用户可以在userform中查看当前记录 我在工作簿激活和停用事件中添加了application.keycode,因此在打开多个此类文件时可以使用快捷方式 我的问题是,即使表单打开并从相应的工作簿读取数据,也不会从相应的文件调用userform 我也应该本地化程序吗 这是我的密码: 此工作簿中的代码 通用模块中的代码 所有文件中的名称都相同。此工作簿和activecell可能不是您所期望的 如果这是一

我为不同项目的一系列类似文件添加了代码

我定义了一个(Control+R)“
^+R
”快捷方式,使用户可以在userform中查看当前记录

我在工作簿激活和停用事件中添加了
application.key
code,因此在打开多个此类文件时可以使用快捷方式

我的问题是,即使表单打开并从相应的工作簿读取数据,也不会从相应的文件调用userform

我也应该本地化程序吗

这是我的密码:

此工作簿中的代码 通用模块中的代码
所有文件中的名称都相同。

此工作簿和activecell可能不是您所期望的

如果这是一个外接程序,则此工作簿将引用该外接程序,而活动单元格不会引用该外接程序。我甚至不知道是否可以在外接程序工作表中使用激活单元格。。。我不这么认为,我会测试一下,然后我就可以用电脑了解自己的知识了

几乎总是最好完全限定对象,有时从应用程序级别限定,但通常工作簿就足够了


就个人而言,我更喜欢代号而不是名字,更喜欢美女而不是索引,但它们有一些缺点,使它们无法成为我的首选

您好,不,它不是一个附加组件,这就是为什么我认为使用此工作簿非常安全的原因。无论如何,我找到了一个解决办法,不再有这样的问题了。谢谢你的时间和关注。很高兴听到你解决了这个问题。你介意把这项工作到处发布,以便我们都能从你的经验中学习吗?我注意到1)我还必须在工作簿\打开事件中添加.onkey命令,否则这些键将不会分配给工作簿,这对我来说很奇怪。2) 在我的表单上,我在Combobox上添加了一个activate命令,用于选择目标工作簿。所以它实际上不是很真实
Private Sub Workbook_Activate()
    With Application
        .OnKey "^R", "ReadCurrentRecord"
    
    End With
End Sub
Private Sub Workbook_Deactivate()
Application.OnKey "^R"
End Sub
Sub ReadCurrentRecord()
    If ActiveCell.Worksheet.Name = "OSW" Then
        If OSWRng Is Nothing Then
            Set OSW = ThisWorkbook.Sheets("OSW")
            Set OSWRng = OSW.Range("a5:bz2000")
        End If
        
        FrmWODetails.Tag = OSW.Cells(ActiveCell.Row, 14)
        FrmWODetails.UserForm_Activate
        FrmWODetails.Show vbModeless
    End If
End Sub