Když se pokusíte přiřadit formát data jazyka VBA nebo formát data varianty k buňce v excelovém listu, budou sekundy zaokrouhleny na nejbližší sekundu.


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