Příznaky
Když změníte program na hodnotu v buňce v listu aplikace Microsoft Excel, bude hodnota milisekund, kterou zadáte, zaokrouhlena na nejbližší sekundu. K tomuto problému dochází, pokud platí následující podmínky:
-
Změna, kterou uděláte, přiřadí k buňce formát data VBA nebo formát data varianty.
-
Programová změna se změní pomocí makra jazyka Visual Basic pro aplikace nebo pomocí externího klienta automatizace.
K tomuto problému nedochází, pokud změna, kterou uděláte, přiřadí formát data nebo čas na buňku.
Příčina
K tomuto problému dochází, protože Excel interně formátuje řetězce dat podle formátu data a času, který je zadaný na kartě místnínastavení v ovládacích panelech. Tato hodnota se zaokrouhlí na nejbližší sekundu. Excel přiřadí tuto hodnotu k buňce a potom hodnotu přepočítá tak, že vytvoří novou hodnotu data pro buňku.
Alternativní řešení
Tento problém můžete vyřešit pomocí jedné z následujících metod.
Metoda 1
Hodnotu Date můžete převést na formát řetězce, který obsahuje zlomek sekundy. Tato řetězcová hodnota může být přiřazena k formátu data, který zachovává milisekundy.
Metoda 2
Pomocí vlastnosti hodnota2 objektu Range můžete uchovat milisekundy. Můžete například použít následující kód jazyka VBA.
Sub CopyValueUsingVBDate() Dim d As Date d = ActiveSheet.Range("A1").Value ActiveSheet.Range("B1").Value2 = dEnd Sub
Další informace najdete v následujícím článku znalostní báze Microsoft Knowledge Base:
182812 Popis vlastnosti hodnota2 objektu Range