Próbuję wyświetlić milisekundy w makrze programu Excel. Mam kolumnę liczb całkowitych, które są po prostu znacznikami czasu w milisekundach (np. 28095200 jest 7: 48: 15.200 rano) i chcę utworzyć nową kolumnę obok niej, która utrzymuje średnią bieżącą i wyświetla czas w "hh: mm : ss.000 "format. Próbowałem wielu różnych tras, ale po prostu nie mogę uzyskać milisekund, nie powodując dziwnych rzeczy.Wyświetlane milisekundy w Excelu
Oto co mam teraz:
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")
Z jakiegoś powodu, to tylko wskazania "mm: ss.0" w komórce. Jednak po kliknięciu komórki wyświetla się "hh: mm: ss" na pasku formuły. Dlaczego brakuje godzin w komórce?
Kolejną dziwną rzeczą, która się dzieje, jest to, że jeśli zmienię ostatnią linię na Strings.Format(ms, "#000.")
, otrzymam "hh: mm: ss.000". Właśnie tego chcę, tylko nie dodatkowy okres.
Yay! Ale czy istnieje sposób, w jaki mogę to zrobić w kodzie? Teraz za każdym razem, gdy uruchamiam makro, formatowanie zostaje zresetowane. (ponieważ usuwam i odtwarzam arkusz w makrze.) Cel.EntireRow.NumberFormat = "[h]: mm: ss.000" Ale to właśnie dało mi "######" w komórce. – Evelyn
@Evelyn - 3 rzeczy: 1) Dodałem kod potrzebny do ustawienia formatu liczb. 2) Upewnij się, że kolumna jest wystarczająco szeroka, aby zmieścić cały sformatowany tekst. Zobacz moją notatkę powyżej. 3) Zobacz odpowiedź Gilberta i zanotuj użycie "3" w funkcji "Round". W ten sposób uzyskujesz 3 miejsca dziesiętne zamiast 2. –
Ah! Masz rację. Po prostu musiałem poszerzyć kolumnę. Poza tym chciałem tylko dokładność 2 w tym przypadku. Chciałem tylko, żeby był sformatowany na 3. Bardzo dziękuję za pomoc! – Evelyn