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

时间:2018-08-13 23:09:07

标签: excel vba

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

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

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

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

我也应该对程序进行本地化吗?

这是我的代码:

此工作簿中的代码

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

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

1 个答案:

答案 0 :(得分:1)

此工作簿和activecell可能与您期望的不一样。

如果这是一个插件,则此工作簿将引用该插件,而活动单元不会。我什至不知道是否可以在加载项工作表中使用激活单元格...我想不是,我会测试一下之后再根据自己的知识上电脑。

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

就个人而言,我更喜欢代号而不是名称,而比起索引,更喜欢辣妹,但是它们有一些缺点,使它们无法成为我的第一选择