Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Sustituir punto por coma o viceversa

Estas en el tema de Sustituir punto por coma o viceversa en el foro de Visual Basic clásico en Foros del Web. Pues eso, quiero sustituir el punto del teclado numérico por una coma, he mirado alguna cosa con Asc(".") y tal pero no di con el ...
  #1 (permalink)  
Antiguo 21/05/2005, 13:25
Avatar de S-Virus  
Fecha de Ingreso: enero-2004
Mensajes: 112
Antigüedad: 20 años, 3 meses
Puntos: 0
Sustituir punto por coma o viceversa

Pues eso, quiero sustituir el punto del teclado numérico por una coma, he mirado alguna cosa con Asc(".") y tal pero no di con el código correcto para realizar ese cambio.

Ejemplo:
Por teclado se introduce 20.50 OK?, pues yo quiero que ese 20.50 sea tratado como 20,50 para que las operaciones numéricas que voy a realizar me salgan correctamente.

Gracias.
  #2 (permalink)  
Antiguo 21/05/2005, 14:12
Avatar de Beakdan  
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 22 años, 4 meses
Puntos: 7
S-Virus:
Utiliza la función replace...

Código:
Replace(expression, find, replacewith[, start[, count[, compare]]]) 
O, si como entiendo, en algún campo de texto quieres reemplazar en el momento en que se teclea, sobreescribe el valor KeyAscii correspondiente al punto por el que corresponde a la coma en el evento KeyPress.
  #3 (permalink)  
Antiguo 21/05/2005, 15:37
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Código:
Private Sub Text1_KeyPress(KeyAscii As Integer)
    If KeyAscii = Asc(".") Then KeyAscii = Asc(",")
End Sub
¿Veis? Yo también se dar ejemplos...
  #4 (permalink)  
Antiguo 21/05/2005, 19:00
Avatar de S-Virus  
Fecha de Ingreso: enero-2004
Mensajes: 112
Antigüedad: 20 años, 3 meses
Puntos: 0
Gracias

Gracias a ambos, al final usé el ejemplo de MaxExtreme, más que nada porque era lo que yo había estado intentando, pero en el evento equivocado :D. Un saluduo amigos.
  #5 (permalink)  
Antiguo 21/05/2005, 19:29
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por S-Virus
Gracias a ambos, al final usé el ejemplo de MaxExtreme, más que nada porque era lo que yo había estado intentando, pero en el evento equivocado :D. Un saluduo amigos.
De nada
  #6 (permalink)  
Antiguo 23/12/2008, 07:33
 
Fecha de Ingreso: marzo-2008
Mensajes: 8
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Sustituir punto por coma o viceversa

Cita:
Iniciado por MaxExtreme Ver Mensaje
Código:
Private Sub Text1_KeyPress(KeyAscii As Integer)
    If KeyAscii = Asc(".") Then KeyAscii = Asc(",")
End Sub
¿Veis? Yo también se dar ejemplos...
Eso esta bien para un textbox, pero si tienes muchos, tienes que hacerlos uno por uno repitiendo el codigo o como se hace. En concreto yo tengo 42 textbox que se llaman TextBox1, TextBox2,... asi hasta el TextBox42. Como podria hacerlo para que valiera un solo codigo para todos los textox. Gracias y Salu2
  #7 (permalink)  
Antiguo 23/12/2008, 08:34
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Sustituir punto por coma o viceversa

Cita:
Iniciado por albersil Ver Mensaje
Eso esta bien para un textbox, pero si tienes muchos, tienes que hacerlos uno por uno repitiendo el codigo o como se hace. En concreto yo tengo 42 textbox que se llaman TextBox1, TextBox2,... asi hasta el TextBox42. Como podria hacerlo para que valiera un solo codigo para todos los textox. Gracias y Salu2
Bueno, el tema es de hace casi cuatro años.

Poner en un mismo formulario 42 controles del mismo tipo e independientes, me parece una programación mal estructurada.

Si los TextBox los pones en un array, solamente tienes que poner este código:

Código:
Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)
Select Case Index
Case 1, 34, 42
    If KeyAscii = Asc(".") Then KeyAscii = Asc(",")
End Select
End Sub
Suponiendo que en los TextBox que quieres controlar la tecla, sean el Text1(1), Text1(34) y Text1(42). Si fuera en todos, le quitas el Select Case.

En el caso de que no estén en un array de controles, sí tienes que poner el mismo código para cada uno de los TextBox.


  #8 (permalink)  
Antiguo 27/12/2008, 05:38
 
Fecha de Ingreso: marzo-2008
Mensajes: 8
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Sustituir punto por coma o viceversa

Cita:
Iniciado por Avellaneda Ver Mensaje
Bueno, el tema es de hace casi cuatro años.

Poner en un mismo formulario 42 controles del mismo tipo e independientes, me parece una programación mal estructurada.

Si los TextBox los pones en un array, solamente tienes que poner este código:

Código:
Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)
Select Case Index
Case 1, 34, 42
    If KeyAscii = Asc(".") Then KeyAscii = Asc(",")
End Select
End Sub
Suponiendo que en los TextBox que quieres controlar la tecla, sean el Text1(1), Text1(34) y Text1(42). Si fuera en todos, le quitas el Select Case.



En el caso de que no estén en un array de controles, sí tienes que poner el mismo código para cada uno de los TextBox.


Gracias por la respuesta y perdona por mi ignorancia en programación, pero es que mi nivel es muy inferior y solo sabía hacerlo así. He leido un montón y no he encontrado ningún sitio donde digan cómo se hace un array de controles con VBA para EXCEL, es más, en algunos sitios dicen que no es posible, así que estoy en un callejón sin salida. Si tú sabes cómo hacerlo, te lo agradecería un montón. Salu2.
  #9 (permalink)  
Antiguo 29/12/2008, 04:11
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Sustituir punto por coma o viceversa

Cita:
Iniciado por albersil Ver Mensaje
Gracias por la respuesta y perdona por mi ignorancia en programación, pero es que mi nivel es muy inferior y solo sabía hacerlo así. He leido un montón y no he encontrado ningún sitio donde digan cómo se hace un array de controles con VBA para EXCEL, es más, en algunos sitios dicen que no es posible, así que estoy en un callejón sin salida. Si tú sabes cómo hacerlo, te lo agradecería un montón. Salu2.
Bueno, aquí no se habló para nada que fuera en VBA. De hecho si ejecutas el código que te pusieron antes (aunque solamente sea en un TextBox) dará error de compilación.

En vb6 se puede hacer generando un evento con una variable WithEvents en un módulo de clase, pero en un UserForm de VBA no admite la palabra clave.

  #10 (permalink)  
Antiguo 29/12/2008, 10:15
 
Fecha de Ingreso: marzo-2008
Mensajes: 8
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Sustituir punto por coma o viceversa

Cita:
Iniciado por Avellaneda Ver Mensaje
Bueno, aquí no se habló para nada que fuera en VBA. De hecho si ejecutas el código que te pusieron antes (aunque solamente sea en un TextBox) dará error de compilación.

En vb6 se puede hacer generando un evento con una variable WithEvents en un módulo de clase, pero en un UserForm de VBA no admite la palabra clave.

Gracias por haberte molestado tanto y perdón nuevamente por no haberme expresado bien antes. El tema es que lo necesito para un UserForm de VBA para EXCEL y si no se puede hacer, tendré que conformarme con programar uno por uno todos los controles TextBox. Me he estado documentando sobre los arrays de controles en VB y es una pena que VBA no permita hacerlos, porque sería bastante fácil siguiendo tus indicaciones de más arriba. Repito Gracias y Salu2.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:18.