如何使用VBA宏禁用Excel工作表中的特殊字符

时间:2012-09-06 05:10:33

标签: excel vba

您的主要目的是在用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个像“〜”。它不适用于那个密钥。

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

1 个答案:

答案 0 :(得分:1)

您的代码按照书面形式运作。

问题是OnKey方法将"~"解释为Enter键。 要使波浪号实际使用,请使用"{~}"。以下是OnKey method.

的文档

要明确,请使用: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子代,直到您关闭应用程序,即使工作簿已关闭。