excel – 如何使Application.key快捷方式特定于WorkBook?

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

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

我在工作簿激活和停用事件上添加了application.key代码,因此当打开这种类型的多个文件时可以使用该快捷方式.

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

我也应该本地化程序吗?

这是我的代码:

ThisWorkbook中的代码

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

文件中的所有名称都相同.

最佳答案 thisworkbook和activecell可能不是你所期望的那样.

如果这是一个插件,这个工作簿将引用插件而活动单元格不会.我甚至都不知道激活一个单元格是否可以用在加载项表单中……我想不会,我会测试一下,然后我会根据自己的知识进入计算机.

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

就个人而言,我更喜欢代号和名字而不是索引的代号,但它们有一些缺点使它们成为我的第一选择

点赞