您的主要目的是在用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个像“〜”。它不适用于那个密钥。
如果您还有其他解决方案,请帮助我。
答案 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
子代,直到您关闭应用程序,即使工作簿已关闭。