0

嗨,我的主要目的是在用户使用 VBA 中的宏打开 Excel 工作表后禁止用户输入特殊字符

我试过怎么做。我为一个角色找到了一种方法。

Sub Disable_Keys()
    Dim KeysArray As Variant
    Dim Key As Variant

    KeysArray = Array("@", "!", "~")

    'Disable the StartKeyCombination key(s) with every key in the KeysArray
    For Each Key In KeysArray
        Application.OnKey Key, "myMsg"
    Next Key
End Sub

Sub myMsg()
    MsgBox "All keys are valid characters"
End Sub

这个有问题,我只禁用了该数组中的两个键。如果我像“〜”一样添加3个。它不适用于那个键。

如果您还有其他解决方案,请帮助我。

4

1 回答 1

1

您的代码按书面方式工作。

问题是 OnKey 方法被解释"~"为 Enter 键。相反,要让波浪号实际使用"{~}"。这是有关OnKey 方法的文档。

明确地说,使用这个:KeysArray = Array("@", "!", "{~}")

编辑:由于评论,我只想添加一些你应该做的事情。

您需要将列出的代码移动到事件中的ThisWorkBook模块。Workbook_Open您还应该包括这样的方法:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
        Dim KeysArray As Variant
        Dim Key As Variant

        KeysArray = Array("@", "!", "{~}")

        'Disable the OnKey settings with every key in the KeysArray
        For Each Key In KeysArray
            Application.OnKey Key, ""
        Next Key
End Sub

如果您不包含此方法,您的输入键KeysArray将尝试运行MyMsg子程序,直到您关闭应用程序,即使在工作簿已关闭之后也是如此。

于 2012-09-06T05:31:52.670 回答