Textbox: espacio no separable durante la entrada
Resuelto
GrandJean
-
GrandJean -
GrandJean -
Hola a todos,
Deseo poder insertar un espacio no separable durante la entrada en un textbox.
He encontrado el código chr(160) pero no consigo integrarlo durante la entrada.
La metodología me interesa porque también me gustaría poder integrar un viñeta, por ejemplo chr(149), durante la entrada.
No he encontrado soluciones en los foros y mis diferentes intentos...
En fin, solicito su ayuda y se los agradezco de antemano.
Jean
Configuración: Windows XP / Chrome 32.0.1700.107
Deseo poder insertar un espacio no separable durante la entrada en un textbox.
He encontrado el código chr(160) pero no consigo integrarlo durante la entrada.
La metodología me interesa porque también me gustaría poder integrar un viñeta, por ejemplo chr(149), durante la entrada.
No he encontrado soluciones en los foros y mis diferentes intentos...
En fin, solicito su ayuda y se los agradezco de antemano.
Jean
Configuración: Windows XP / Chrome 32.0.1700.107
6 respuestas
-
Hola,
todo depende de dónde quiera colocar estos caracteres, si delante de la entrada:
ej:
x = Chr(149) & Chr(160) & TextBox1 -
Hola,
¿En VB o en VBA?
Es sorprendente necesitar específicamente un espacio inseparable...
Si quieres reemplazar automáticamente un carácter por otro durante la entrada (o evitar la entrada de ciertos caracteres), utiliza los códigos ASCII en el procedimiento:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
¡Saludos! -
Gracias a los dos por haber respondido tan rápido.
Es durante la escritura que quiero poder usar estos caracteres. Si mi frase termina con un ?, necesito un espacio no separable para evitar que, al utilizar el contenido en otro formulario, el ? se quede solo en una nueva línea.
He intentado con keypress, sin éxito. No encuentro la conexión entre chr() y keyAscii. Perdón si me expreso mal.
Espero que tengan una pista. -
-
Un ejemplo para añadir un espacio insécable antes del ? :
(adapta el código a tus necesidades; este permite evitar la entrada de caracteres no deseados)Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Select Case KeyAscii Case 63 TextBox1.Value = TextBox1.Value & Chr(160) Case 97 To 122 ' Caracteres alpha min Case 65 To 90 'Caracteres alpha Maj Case 8 'Retroceso Case Else KeyAscii = 0 End Select End Sub
-
Super.
He intentado tu solución que funciona muy bien. Muchas gracias.
Sin embargo, si funciona bien al crear un nuevo texto, en modo corrección no funciona: si vuelvo al texto y quiero poner un ?, con el select case, mi ? se queda como último carácter.
Así que he reemplazado el select case por:
TB_1 = Replace(TB_1, " ?", Chr(160) & "?") 'para el espacio no separable
TB_1 = Replace(TB_1, "*", Chr(149)) 'para la viñeta
Ahí puedo poner mi carácter donde sea necesario. Sin embargo, el cursor se coloca al final del texto. Pero no es muy grave.
Preferiría un atajo de teclado (como ctrl / Enter para ir a la línea). No he encontrado.
Una vez más, gracias
Jean