首页 > 解决方案 > 如何使 Application.key Shortcuts WorkBook 具体化?

问题描述

我将代码添加到不同项目的一系列类似文件中。

我定义了一个(Control + R)“ ^ + R”快捷方式让用户在用户表单中查看当前记录。

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

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

我也应该本地化程序吗?

这是我的代码:

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

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

标签: excelvba

解决方案


thisworkbook 和 activecell 可能不是您所期望的。

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

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

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


推荐阅读