Estoy tratando de mostrar milisegundos en una macro de Excel. Tengo una columna de números enteros que son simplemente marcas de tiempo en milisegundos (por ejemplo, 28095200 es 7: 48: 15.200 a.m.), y quiero hacer una nueva columna al lado, que mantiene un promedio continuo y muestra la hora en un "hh: mm : formato ss.000 ". He probado múltiples rutas diferentes, pero simplemente no puedo obtener los milisegundos sin causar que pasen cosas raras.Mostrar milisegundos en Excel
Esto es lo que tengo ahora:
Dim Cel As Range
Set Cel = Range("B1")
temp = Application.Average(Range("A1:A2"))/1000
ms = Round(temp - Int(temp), 2) * 1000
Cel.Value = Strings.Format((temp/60/60/24), "hh:mm:ss") _
& "." & Strings.Format(ms, "#000")
Por alguna razón, esto sólo se muestra "mm: ss.0" en la celda. Sin embargo, cuando hago clic en la celda, muestra "hh: mm: ss" en la barra de fórmulas. ¿Por qué faltan las horas en la celda?
Además, otra cosa extraña que sucede es que si cambio la última línea a Strings.Format(ms, "#000.")
, entonces obtengo "hh: mm: ss.000". Eso es lo que quiero, simplemente no el período extra.
¡Yay! Pero, ¿hay alguna manera de hacerlo en el código? Ahora, cada vez que ejecuto la macro, el formateo se restablece. (porque estoy eliminando y recreando la hoja en la macro.) Cel.EntireRow.NumberFormat = "[h]: mm: ss.000" Pero eso solo me dio "######" en la celda. – Evelyn
@Evelyn - 3 cosas: 1) Agregué el código que necesita para establecer el formato del número. 2) Asegúrese de que su columna sea lo suficientemente amplia para ajustarse a todo el texto formateado. Ver mi nota arriba. 3) Vea la respuesta de Gilbert y note el uso de '3' en la función' Round'. Esto asegura que obtienes 3 decimales en lugar de solo 2. –
¡Ah! Tienes razón. Solo necesitaba ampliar la columna. Además, solo quería una precisión de 2 en este caso. Solo quería que estuviera formateado para 3. ¡Muchas gracias por la ayuda! – Evelyn