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

valor de una celda de excel

Estas en el tema de valor de una celda de excel en el foro de Visual Basic clásico en Foros del Web. Hola a todos. quiero obtener el valor de una celda de excel, pero si es número y tiene decimal 0 obtengo solo el valor entero ...
  #1 (permalink)  
Antiguo 28/05/2010, 12:26
 
Fecha de Ingreso: enero-2008
Mensajes: 366
Antigüedad: 16 años, 3 meses
Puntos: 3
valor de una celda de excel

Hola a todos.

quiero obtener el valor de una celda de excel, pero si es número y tiene decimal 0 obtengo solo el valor entero y lo quiero con todo y decimal.

esta es mi instrucción

sTxt = Libro1.TextRC(1,1)

sTxt es string, por ejemplo tengo el valor 70.0 y solo obtengo 70.

Como puedo hacerle para que me tome el valor completo.

Gracias
  #2 (permalink)  
Antiguo 28/05/2010, 12:39
 
Fecha de Ingreso: enero-2007
Ubicación: 9 de julio
Mensajes: 111
Antigüedad: 17 años, 3 meses
Puntos: 2
Respuesta: valor de una celda de excel

hola, proba asi por favor
Te lo va a mostrar siempre con 2 decimales (tenga o no la celda A1) y con separador de miles

Código:
sTxt = Libro1.Format(Cells(1, 1), "###,#0.00")
o sino
sTxt = Format(Cells(1, 1), "###,#0.00"
Espero te sirva
  #3 (permalink)  
Antiguo 28/05/2010, 12:41
 
Fecha de Ingreso: enero-2007
Ubicación: 9 de julio
Mensajes: 111
Antigüedad: 17 años, 3 meses
Puntos: 2
Respuesta: valor de una celda de excel

Perdon, falto el parentesis final

Código:
sTxt = Format(Cells(1, 1), "###,#0.00")
  #4 (permalink)  
Antiguo 28/05/2010, 13:41
 
Fecha de Ingreso: enero-2008
Mensajes: 366
Antigüedad: 16 años, 3 meses
Puntos: 3
Respuesta: valor de una celda de excel

Gracias por contestar, ya lo probe y de todos modos me devuelve el valor entero
  #5 (permalink)  
Antiguo 28/05/2010, 13:48
 
Fecha de Ingreso: enero-2007
Ubicación: 9 de julio
Mensajes: 111
Antigüedad: 17 años, 3 meses
Puntos: 2
Respuesta: valor de una celda de excel

Hmm que raro
Yo lo probé y funciona correctamente
Tal vez sea un tema de configuracion regioanl, no se
Yo tengo como separador de miles "," (coma) y como simbolo decimal "." (punto)

Lo probe asi tambien y funciona (incluso independientemente dle formato que tenga la celda... numero, texto, etc)


Código:
Sub Mostrar()
Dim sTxt As String
    sTxt = Format(Cells(1, 1), "###,#0.00")
    MsgBox sTxt
End Sub
  #6 (permalink)  
Antiguo 28/05/2010, 13:55
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 14 años, 7 meses
Puntos: 47
Respuesta: valor de una celda de excel

Y asi:

Código vb:
Ver original
  1. sTxt = FormatNumber(Libro1.TextRC(1, 1), 2)

o asi:

Código vb:
Ver original
  1. sTxt = Libro1.TextRC(1, 1)
  2. sTxt = FormatNumber(sTxt, 2)
  #7 (permalink)  
Antiguo 28/05/2010, 13:56
 
Fecha de Ingreso: enero-2008
Mensajes: 366
Antigüedad: 16 años, 3 meses
Puntos: 3
Respuesta: valor de una celda de excel

lo que quiero hacer es recorrer una tabla tomo los valores de cada celda y comparo si es número.

si es número pregunto si tiene decimales, y dependiendo de eso se le da el formato.

asi estan las instrucciones

sTxt = Libro1.TextRC(i, ii)
If IsNumeric(sTxt) Then
Libro1.Row = i
Libro1.Col = ii
If InStr(1, Str(sTxt), ".") > 0 Then
Libro1.NumberFormat = "#,###,###,##0.0##############"
Else
Libro1.NumberFormat = "###,###,###,###,###,##0"
End If
End If
  #8 (permalink)  
Antiguo 28/05/2010, 14:26
 
Fecha de Ingreso: enero-2007
Ubicación: 9 de julio
Mensajes: 111
Antigüedad: 17 años, 3 meses
Puntos: 2
Respuesta: valor de una celda de excel

ok. Ahora entiendo mas.
Aca van dos ejemplos. Uno para que te muestre por pantalla los 2 decimales (pero en el contenido de la celda no, y otro para que en ambas este con decimales

Código:
Sub mostrar()
Dim x As Integer
'Recorro la tabla desde la celda A1 hasta el final
For x = 1 To Range("A1").CurrentRegion.Rows.Count
    'Si la celda tiene un numero
    If IsNumeric(Cells(x, 1)) Then
        'La formateo. Esto muestra por pantalla el numero con
        '2 decimales pero la celda tiene el valor original
        Cells(x, 1).Value = Format(Cells(x, 1), "###,#0.00")
    End If
Next
End Sub
Código:
Sub mostrar_1()
Dim x As Integer
'Recorro la tabla desde la celda A1 hasta el final
For x = 1 To Range("A1").CurrentRegion.Rows.Count
    'Si la celda tiene un numero
    If IsNumeric(Cells(x, 1)) Then
        'La formateo a texto para que luego me muestre por
        'pantalla el numero con 2 decimales y ademas en la
        'la celda quede con 2 decimales tambien.
        Cells(x, 1).NumberFormat = "@"
        Cells(x, 1).Value = Format(Cells(x, 1), "###,#0.00")
    End If
Next
End Sub

Etiquetas: celda, excel
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 15:37.