Función VBA Access para limitar la entrada de datos a un texbox a solo letras, incluido letras acentuadas y ñ

Tengo un cuadro de texto en un formulario que al introducir datos solo quiero que funcionen las teclas de las letras mayúsculas y minúsculas, así como vocales acentuadas y la letra ñ

Tengo este código, pero los carácteres ASCII extendido no funcionan.

Public Function SonLetras(Codigo As Integer) As Integer
' Solo permite seguir el ASCII de letras dentro de la caja de texto, recibe el código ASCII del teclado y lo retorna si es una letra, si no invalido
If Codigo < 1 Then
SonLetras = 0
End If
If (Codigo >= 128 And Codigo <= 167) Or (Codigo >= 97 And Codigo <= 122) Or (Codigo >= 65 And Codigo <= 90) Or (Codigo >= 181 And Codigo <= 183) Or (Codigo >= 224 And Codigo <= 237) Or Codigo = 8 Or Codigo = 32 Then
SonLetras = Codigo
Else
SonLetras = 0
End If
End Function

2 Respuestas

Respuesta
2

José: Otra forma parecida y que a mi me funciona es >>

Private Sub TBoxTexto_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
        Case 65 To 90         'Mayusculas
        Case 97 To 122       'Minusculas
        Case 164 To 165      'ñ y Ñ
        Case 8, 32              'Espacio y regreso de tabulador
        Case Else
                KeyAscii = 0
                MsgBox "Solo se pueden teclear LETRAS en ésta caja de texto", vbInformation, "ERROR EN LA ENTRADA DE DATOS"
End Select
End Sub

TBoxTexto: Es el Nombre del Control (Caja de Texto). Un saludo >> Jacinto

José: Se me ha olvidado comentarte que en los Case, puedes ampliar a otros que tu necesites.

En la red hay muchos sitios en los que puedes encontrar los Códigos ASCII: Saludos >> Jacinto

Gracias Jacinto por la respuesta.

Sigo teniendo el mismo problema con tu código, al presionar "ñ" o "Ñ", me sale el mensaje del MsgBox, parecido al código que tenía.

¿Sabes a que se puede deber que no me reconozca la "ñ" como letra?

Un saludo.

Jose

José: Añade un>>

Case 209, 241

Ya me contarás. Saludos >> Jacinto

José: Como bien te comenta Icue, si lo único que quieres excluir son los números del 0 al 9, polos en un Case.

En mi caso uso el KeyPress, de modo que te quedaría.

Private Sub TBoxTexto_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
     Case 48 To 57
          KeyAscii = 0
          MsgBox "Solo se pueden teclear LETRAS en ésta caja de texto", vbInformation, "ERROR EN LA ENTRADA DE DATOS"
     Case Else
End Select
End Sub

Un saludo >> Jacinto

Respuesta
1

Lo puedes hacer de varias formas, todo depende de como estés trabajando. Por ejemplo, en el evento Al bajar una tecla de ese cuadro de texto puedes poner

Private Sub Texto10_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case 48 To 57
MsgBox "No ves que no puedes escribir números", vbOKOnly, "Es que no te enteras"
DoCmd.CancelEvent
End Select
End Sub

O sea, que si intentas poner desde un 0 a un 9 te salta el mensaje y no escribe nada, pero si escribes letras No problemo

Perdón, creí que no querías escribir números.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas