Czas w milisekundach zaokrągla się do najbliższej sekundy podczas próby przypisania formatu daty VBA lub formatu daty wariantu do komórki w arkuszu programu Excel


Symptomy


Po wprowadzeniu programistycznej zmiany wartości w komórce w arkuszu programu Microsoft Excel wartość w milisekundach jest zaokrąglana do najbliższej sekundy. Ten problem występuje, gdy są spełnione następujące warunki:
  • Wprowadzona zmiana powoduje przypisanie formatu daty VBA lub formatu daty wariantu do komórki.
  • Zmiany programistyczne można wprowadzać przy użyciu makra języka Visual Basic for Applications lub za pomocą zewnętrznego klienta automatyzacji.
Ten problem nie występuje, gdy wprowadzona zmiana powoduje przypisanie formatu daty lub formatu godziny do komórki.

Przyczyna


Ten problem występuje, ponieważ program Excel wewnętrznie formatuje ciągi dat zgodnie z formatem daty i godziny określonym na karcie Opcje regionalne w elemencie Opcje regionalne i językowe w panelu sterowania. Ta wartość jest zaokrąglana do najbliższej sekundy. Program Excel przypisuje tę wartość do komórki, a następnie ponownie oblicza wartość w celu utworzenia nowej wartości daty dla komórki.

Obejście


Użyj jednej z następujących metod, aby obejść ten problem.

Metoda 1

Wartość daty można przekonwertować na format ciągu zawierający część sekundy. Tę wartość ciągu można przydzielić i obliczyć jako format daty, w którym są zachowywane milisekundy.

Metoda 2

Aby zachować milisekundy, można użyć właściwości wartość2 obiektu Range. Możesz na przykład użyć poniższego kodu VBA.
Sub CopyValueUsingVBDate()   Dim d As Date   d = ActiveSheet.Range("A1").Value   ActiveSheet.Range("B1").Value2 = dEnd Sub
Aby uzyskać dodatkowe informacje, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
182812 Opis właściwości wartość2 obiektu Range