none
Caracter en una cadena de caracteres RRS feed

  • Pregunta

  • Quiero q en los datos ingresados un textbox se pueda verificar si uno de los caracteres es un punto (.) para cambiarlo por una coma (,).
    ¿Como hago para detectar un caracter dentro de una cadena de caracteres? saludos y gracias!

    lunes, 29 de junio de 2009 18:04

Respuestas

  • Este es un ejemplo de una caja de texto en la cual se ingresa el gasto administrativo.
    El evento es el KeyPress.
    Si el usuario presiona (.) se cambia por (,). Y si presiona Enter, se dá el foco al botón CmbA.

    Private Sub TxtGAdm_KeyPress(KeyAscii As Integer)
        If KeyAscii = 46 Then
           KeyAscii = 44
        ElseIf KeyAscii = 13 Then
           CmbA.SetFocus
        End If
    End Sub

    Busca en la ayuda la tabla de valores Ascii para ver el codigo que le corresponde a cada caracter.
    algunas teclas no se interceptan el el evento KeyPress. En estos casos hay que usar otros eventos del teclado, ej: KeyDown

    Si la verificación la querés hacer después de que se ha ingresado le texto, por ejemplo al hacer click en Guardar, podés usar este codigo:

    TxtGAdm = Replace(TxtGAdm, ".", ",")
      
    • Marcado como respuesta Pascalito666 lunes, 29 de junio de 2009 20:25
    lunes, 29 de junio de 2009 19:58

Todas las respuestas

  • Este es un ejemplo de una caja de texto en la cual se ingresa el gasto administrativo.
    El evento es el KeyPress.
    Si el usuario presiona (.) se cambia por (,). Y si presiona Enter, se dá el foco al botón CmbA.

    Private Sub TxtGAdm_KeyPress(KeyAscii As Integer)
        If KeyAscii = 46 Then
           KeyAscii = 44
        ElseIf KeyAscii = 13 Then
           CmbA.SetFocus
        End If
    End Sub

    Busca en la ayuda la tabla de valores Ascii para ver el codigo que le corresponde a cada caracter.
    algunas teclas no se interceptan el el evento KeyPress. En estos casos hay que usar otros eventos del teclado, ej: KeyDown

    Si la verificación la querés hacer después de que se ha ingresado le texto, por ejemplo al hacer click en Guardar, podés usar este codigo:

    TxtGAdm = Replace(TxtGAdm, ".", ",")
      
    • Marcado como respuesta Pascalito666 lunes, 29 de junio de 2009 20:25
    lunes, 29 de junio de 2009 19:58
  • Es incluso mejor de lo q yo estaba esperando conseguir, la utilice de la siguiente manera:

    Private Sub TextBox5_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
        If KeyAscii = 46 Then
            KeyAscii = 44
        End If
    End Sub

    muchisimas gracias Anti Work!
    lunes, 29 de junio de 2009 20:27
  • La solucion que tienen funciona si se digita en el campo de texto pero si se el texto se pega no. La instruccion para buscar un caracter en una cadena de texto es instr(1, cadenaenlaquebusca, cadenaquebusca, vbTextCompare), o sea, InStr(1, Text1.Text, ".", vbTextCompare) , devolviendo la posicion en la que se encuentra el primer caracter de la cadena de busqueda en este caso el punto,  si en la cadena en la que se busca pueden haber varios puntos se usa un ciclo de repeticion de la busqueda en este caso un while y wend ,el codigo quedaria asi :

    coma = 1
    While coma > 0
        coma = InStr(1, Text1.Text, ".", vbTextCompare)
         If coma > 0 Then
            Text1.Text = Left(Text1, coma - 1) & "," & Right(Text1, Len(Text1.Text) - coma)
         End If
    Wend

    Este codigo se puede poner en el evento change o lostfocus del textbox.



    Carlos Alberto Quijano Acevedo
    Profesional I.T.
    www.planigrafo.com


    Carlos Alberto Quijano Acevedo
    sábado, 11 de julio de 2009 18:27