Textbox: espacio no separable durante la entrada

Resuelto
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

6 respuestas

  1. f894009 Mensajes publicados 17417 Fecha de registro   Estado Miembro Última intervención   1 717
     
    Hola,

    todo depende de dónde quiera colocar estos caracteres, si delante de la entrada:
    ej:
    x = Chr(149) & Chr(160) & TextBox1
    0
  2. Zoul67 Mensajes publicados 2001 Estado Miembro 149
     
    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!
    0
  3. GrandJean
     
    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.
    0
  4. Zoul67 Mensajes publicados 2001 Estado Miembro 149
     
    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
    0
  5. GrandJean
     
    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
    0
    1. GrandJean
       
      Para resolver la posición del cursor, he utilizado SelStart, lo que da:
      PosCurseur = Me.TB_1.SelStart
      TB_1 = Replace(TB_1, " ?", Chr(160) & "?")
      TB_1 = Replace(TB_1, "*", Chr(149))
      Me.TB_1.SelStart = PosCurseur
      0