Vba 如何限制可以键入的字符

Vba 如何限制可以键入的字符,vba,visual-studio,text,textbox,Vba,Visual Studio,Text,Textbox,我想确保此文本框中只能键入字母。我不想输入像()、$这样的字符,甚至数字。我知道如何使用MaxLength限制字符数量,但不知道可以键入哪些字符。对于VBA,您可以分析在按键事件中输入的内容。您也可以在VB.NET中执行此操作,不过会有点不同 Private Sub Text4_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'This will allow only numaric values in the Text4 text b

我想确保此
文本框中只能键入字母。我不想输入像
)、
$
这样的字符,甚至数字。我知道如何使用
MaxLength
限制字符数量,但不知道可以键入哪些字符。

对于
VBA
,您可以分析在按键事件中输入的内容。您也可以在VB.NET中执行此操作,不过会有点不同

Private Sub Text4_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    'This will allow only numaric values in the Text4 text box.
    If KeyAscii = 8 Then Exit Sub
    If Chr(KeyAscii) < "0" Or Chr(KeyAscii) > "9" Then
        KeyAscii = 0
    End If
End Sub
您将看到此处表示的字符的十进制数。

要限制用户可以输入的内容,您可以处理
文本框的
按键事件

Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress

    If Not (Asc(e.KeyChar) = 8) Then
        If Not ((Asc(e.KeyChar) >= 97 And Asc(e.KeyChar) <= 122) Or (Asc(e.KeyChar) >= 65 And Asc(e.KeyChar) <= 90)) Then
            e.KeyChar = ChrW(0)
            e.Handled = True
        End If
    End If

End Sub

谢谢,顺便问一下,这是文本框2还是文本框4?哈,这是文本框4。那是复制粘贴的东西之一。顺便说一下,这是VBA的。你有那个标签,所以我不确定你需要什么。谢谢你的回答,但我自己也找到了一种方法,因为我一次只需要文本框中的一个字符。我只是检查里面是否有东西,如果有,它就会检查它是否是一封信。无论如何谢谢你!这将是公认的答案。@DavidWheatley他们之间有区别,只是提醒一下。由于语法的原因,您标记的
VB.Net
VBA
是不同的。@DavidWheatley
VBA
用于Office文档上的宏,它无法访问VB.Net功能。
Char.isleter(e.KeyChar)
可能也很有用。我同意,有很多方法。
Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress

    If Not (Asc(e.KeyChar) = 8) Then
        If Not ((Asc(e.KeyChar) >= 97 And Asc(e.KeyChar) <= 122) Or (Asc(e.KeyChar) >= 65 And Asc(e.KeyChar) <= 90)) Then
            e.KeyChar = ChrW(0)
            e.Handled = True
        End If
    End If

End Sub
If Not (Asc(e.KeyChar) = 8) Then
    Dim allowedChars As String = "abcdefghijklmnopqrstuvwxyz"
    If Not allowedChars.Contains(e.KeyChar.ToString.ToLower) Then
        e.KeyChar = ChrW(0)
        e.Handled = True
    End If
End If