Príznaky
Keď zmeníte program na hodnotu v bunke v hárku programu Microsoft Excel, hodnota v milisekundách, ktorú zadáte, sa zaokrúhli na najbližšiu sekundu. Tento problém sa vyskytuje, ak sú splnené nasledovné podmienky:
-
Zmeny, ktoré vykonáte priradením formátu dátumu VBA alebo formátu dátumu variácie do bunky.
-
Zmeníte program pomocou programu Visual Basic for Applications alebo pomocou externého automatizačného klienta.
Tento problém sa nevyskytuje, keď zmena, ktorú vykonáte, priradí formát dátumu alebo formát času do bunky.
Príčina
Tento problém sa vyskytuje, pretože Excel interne formátuje dátumové reťazce podľa formátu dátumu a času, ktorý je zadaný na karte miestne nastavenia v položke miestne a jazykové nastavenie v ovládacom paneli. Táto hodnota sa zaokrúhli na najbližšiu sekundu. Excel priradí túto hodnotu do bunky a potom prepočíta hodnotu tak, aby vytvorila novú hodnotu dátumu pre danú bunku.
Alternatívne riešenie
Ak chcete tento problém obísť, použite jeden z nasledujúcich postupov.
Metóda 1
Hodnotu dátumu môžete skonvertovať na formát reťazca, ktorý obsahuje zlomok sekundy. Táto hodnota reťazca môže byť priradená a vypočítaná ako formát dátumu, ktorý zachová milisekundy.
Metóda 2
Ak chcete zachovať milisekundy, môžete použiť vlastnosť hodnota2 objektu Range. Môžete napríklad použiť nasledujúci kód jazyka VBA.
Sub CopyValueUsingVBDate() Dim d As Date d = ActiveSheet.Range("A1").Value ActiveSheet.Range("B1").Value2 = dEnd Sub
Ďalšie informácie nájdete v článku databázy Microsoft Knowledge Base, ktorý sa zobrazí po kliknutí na nasledovné číslo článku:
182812 Popis vlastnosti hodnota2 pre objekt rozsahu