0

次のコードは、2 つの日付間の期間を計算するために使用されます。この場合、関数は正しい出力を生成しています: 1:03:11(dd:hh:mm 形式なので、1 日 3 時間 11 分)。計算後、スクリプトはこの値をセルに保存します。これまでのところ、これは完璧であり、まさに私が望む形式です。その後、別のスクリプトが実行され、スクリプト内のニーズとロジックに応じてセルの値が移動され、必要なセルに動的に格納されます。私が抱えている問題は、期間が「AM」または「PM」を値に追加していることです。これは非常に具体的な (およびフォーマットされた) 期間であり、実際の時刻ではないため、これは正しくありません。代わりに TIME 値として扱っているようです。

期間を測定するために使用されるコードは次のとおりです。

Function TimeSpan(dt1,dt2)
Dim dtTemp

objExcel1.Application.ScreenUpdating = False
    If (IsDate(dt1) And IsDate(dt2)) = False Then
        TimeSpan = "00:00:00"
        Exit Function
    End If

    If dt2 < dt1 Then
        dtTemp = dt2
        dt2 = dt1
        dt1 = dt2
    End If
            TimeSpan = objExcel1.Application.WorksheetFunction.Text((dt2 - dt1), "dd:hh:mm")'"dd:hh:mm:ss"

objExcel1.Application.ScreenUpdating = False
End 
4

1 に答える 1

0

FormatDateTime()Excelで関数を調べます。これは、セルに意図したものだけを保存するのに役立つ場合があります。次に、Excel を使用して多くの日付の書式設定を行っていたときに、セルに入力する予定のデータの種類の FORMAT 情報がセルに含まれていることを確認しました。これはあなたにとって違いを生むかもしれません。おそらく「一般」セルフォーマットルールの下で、Excelが値をTIME値として扱っているようです。このデータを入れるセルを設定して、おそらく特定の「STRING」形式を使用します。このように、Excel はデータについて何の仮定も行わず、適切と思われる方法で解析できます。

于 2014-11-07T23:30:25.410 に答える