Visual Basic - Coma decimal en VBA Excel

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 21
Ha aumentado su posición en 2 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Coma decimal en VBA Excel

Publicado por Blas (15 intervenciones) el 15/08/2021 03:07:38
Hola hola. como estan
Uso el teclado ESP y mi PC con Win10 esta configurado para Español (Argentina)
los separadores de millares en (.) y los decimales en (,)
Cuando utilizo excel e introduzco numeros con decimales con el teclado numerico, al pulsar la tecla de la coma (DEL o ".") en la celda aparece una coma (,) dado que es asi comoesta configurada mi regionalidad.
Ahora bien.
Tengo un Form con un Text box al que le asigne los siguientes formatos
Format(Tbx, "$ ###,###,###,###.00")
Format(Tbx,"currency")

En ambos casos la tecla del punto en el teclado numerico no funciona agregando uina coma
si uso formatos como ###.###,00 me marca error ya que VBa reconoce el . como separador de decimales

como puedo hacer para que, al escribir en mi text box los numeros luego del punto (teclado numerico) sean una coma???

gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 145
Ha aumentado 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Coma decimal en VBA Excel

Publicado por Sah1d Ra (191 intervenciones) el 23/08/2021 18:51:39
Hola, realizo un sistema contable y utilizo Double.

A que voy con ello el formato de moneda se lo puedes poner al momento
de mostrar los valores.

en tu caso hice lo siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
Public Function sDecimal(Cantidad As Double, sMiles As String, sDecimales As String) As String
 Dim tValor As String
 tValor = Format(Cantidad, "$ ##,###,###.00")
 tValor = Replace(tValor, ",", "m"): tValor = Replace(tValor, ".", "d")
 tValor = Replace(tValor, "m", sMiles): tValor = Replace(tValor, "d", sDecimales)
 sDecimal = tValor
End Function
 
Private Sub Form_Load()
 Dim Valor As Double
 Valor = 1234567.89
 MsgBox sDecimal(Valor, ",", ".")
End Sub

espero sea de ayuda, saludos y felices líneas de programac10n.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Coma decimal en VBA Excel

Publicado por apacheco (1 intervención) el 24/08/2021 16:07:37
Es casi lo mismo, pero te ahorrarías un paso haciendo:

Public Function sDecimal(Cantidad As Double, sMiles As String, sDecimales As String) As String
sDecimal = Format(Cantidad, "$ ##,###,###.00")
sDecimal = Replace(sDecimal, ".", "d")
sDecimal = Replace(sDecimal, ",", sMiles)
sDecimal = Replace(sDecimal, "d", sDecimales)
End Function

es mas o menos lo mismo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 145
Ha aumentado 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Coma decimal en VBA Excel

Publicado por Sah1d Ra (191 intervenciones) el 27/08/2021 22:20:46
Excelente mejora apacheco, así se tiene otra opción, siempre existen diferentes maneras de llegar al mismo resultado ;)

Vamos actualizandolo.
1
2
3
4
5
6
7
8
9
10
11
12
13
Public Function sDecimal(Cantidad As Double, sMoneda As String, sMiles As String, sDecimales As String) As String
 sDecimal= Format(Cantidad, "##,###,###.00")
 sDecimal= Replace(sDecimal, ".", "d")
 sDecimal= Replace(sDecimal, ",", sMiles)
 sDecimal= Replace(sDecimal, "d", sDecimales)
 sDecimal = sMoneda + sDecimal
End Function
 
Private Sub Form_Load()
 Dim Valor As Double
 Valor = 1234567.89
 MsgBox sDecimal(Valor,"$ ", ",", ".")
End Sub

Saludos y felices líneas de programac10n.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 21
Ha aumentado su posición en 2 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Coma decimal en VBA Excel

Publicado por Blas (15 intervenciones) el 28/08/2021 06:06:10
Hola !!!! muchas gracias a ambos por la solucion y la mejora. me ayud mucho-

Adapte lo sugerido para aplicarlo en mi codigo. En realidad el cambio de formato debo hacerlo en unos 8 textbox
Les paso como me quedo por si a alguien mas le interesa.
supongo que en proximos temas consultare otras cosas

Para poder usarlo, debe existir un rango llamado "Proyectos" en la Hoja activa.

Gracias !!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 145
Ha aumentado 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Coma decimal en VBA Excel

Publicado por Sah1d Ra (191 intervenciones) el 28/08/2021 07:14:09
Que bien que te ayudo y puedes simplificar tu codigo aun mas

claro para eso el uso de arreglos

1
2
3
4
Private Sub Text1_AfterUpdate(Index as Integer)
 If Text1(Index).Text > 0 Then Text1(Index).Text = sDecimal(T1, "$ ", ",", ".")
 CALCULA
End Sub

con eso eliminas todos los Private Sub TN_AfterUpdate()

Ahora simplificando la función calcula
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub CALCULA()
 Dim ctrl As Control
 Dim falta As Double
 Dim Tempo as Integer
 if Txt_importe = "" Then Txt_importe = 0
 
 for tEmpo = 0 to Text1.ListCount-1
  If Text1.(teMpo) = "" Then Text1(temPo).text = 0
 next tempO
 
 Suma=  0
 for Tempo = 0 to Text1.ListCount-1
  suma = suma + Text1.(teMpo)
 next temPo
 
 falta = Txt_importe - suma
 Me.Lbl_falta.Caption = "Falta imputar $ " & sDecimal(falta, "$ ", ",", ".")
 
 GoTo fin
 moneda:
 
 fin:
End Sub


saludos, ya es noche espero no tener error de sintaxis, felices líneas de programac10n.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar