現象
Microsoft Excel ワークシートのセルの値にプログラムによって変更を加えると、指定したミリ秒の値が最も近い秒に丸められます。 この問題は、次の条件が満たされている場合に発生します。
-
設定を変更すると、VBA の日付形式またはバリアント型の日付形式がセルに割り当てられます。
-
プログラムによる変更を行うには、Visual Basic for Applications マクロを使用するか、外部オートメーションクライアントを使用します。
この問題は、実行する変更によって、セルに日付形式または時刻形式が割り当てられている場合には発生しません。
原因
この問題は、Excel がコントロールパネルの[地域と言語のオプション] の [地域と言語のオプション] タブで指定されている日付と時刻の形式に従って日付文字列の書式を設定したために発生します。 この値は、最も近い秒単位に丸められます。 この値がセルに割り当てられ、そのセルの新しい日付値が生成されるまで値が再計算されます。
回避策
この問題を回避するには、次のいずれかの方法を使用します。
方法 1
日付の値を、1秒の小数を含む文字列形式に変換することができます。 この文字列値は、ミリ秒を保持する日付形式として割り当てることができます。
方法 2
Range オブジェクトの Value2 プロパティを使って、ミリ秒を保持することができます。 たとえば、次の VBA コードを使用できます。
Sub CopyValueUsingVBDate() Dim d As Date d = ActiveSheet.Range("A1").Value ActiveSheet.Range("B1").Value2 = dEnd Sub
関連情報を参照するには、次のマイクロソフト サポート技術情報番号をクリックしてください。
182812 Range オブジェクトの Value2 プロパティの説明