Excelマクロでミリ秒を表示しようとしています。ミリ秒単位のタイムスタンプである整数の列(たとえば、28095200は7:48:15.200 am)があり、その隣に新しい列を作成して、平均を維持し、hh:mm:ss.000
形式で時間を表示します。
Dim Cel As Range
Set Cel = Range("B1")
temp = Application.Average(Range("A1:A2")) / 1000
ms = Round(temp - Int(temp), 2) * 1000
Cel.Value = Strings.Format((temp / 60 / 60 / 24), "hh:mm:ss") _
& "." & Strings.Format(ms, "#000")
これは、セルに「mm:ss.0」のみを表示します。それでも、セルをクリックすると、数式バーに「hh:mm:ss」と表示されます。なぜ時間が足りないのですか?時間、分、秒、ミリ秒を表示するにはどうすればよいですか?
セルB1
を右クリックして、セルのフォーマットを選択します。 Customで、Typeというラベルの付いたテキストボックスに以下を入力します。
[h]:mm:ss.000
これをコードで設定するには、次のようなことができます:
Range("A1").NumberFormat = "[h]:mm:ss.000"
それはあなたが探しているものを与えるはずです。
注:特別にフォーマットされたフィールドは、多くの場合、フォーマットされたテキストの内容全体に対して列幅が十分に広いことを必要とします。そうでない場合、テキストは######
として表示されます。
Excel 2007で、結果が埋め込みクエリのテーブルである場合、ss.000が機能しないことを発見しました。クエリ結果を(SQL Server Management Studioから)貼り付け、時間を適切にフォーマットできます。しかし、Excelでクエリをデータ接続として埋め込むと、形式は常にミリ秒として.000になります。
Excel 2000でこれを行いました。
このステートメントは次のようになります:ms = Round(temp - Int(temp), 3) * 1000
[h]:mm:ss.000
の結果セルのカスタム形式を作成する必要があります