0

GMT 時間の列をユーザーから指定されたタイム ゾーンに変換しようとしています。

VBA が 01:00 から 18000 秒 (GMT-5) を減算しようとすると、エラーが発生します。

Selected_GMT = -18000
CellValue = "1/0/00 01:00"

New_Time = DateAdd("s", Selected_GMT,CellValue)

VBA が 00:00 より前の時間を特定できないために、このエラーが発生していますか? Selected_GMT の秒を計算しましたが、それを使用して New_Time を決定するにはどうすればよいですか?

4

1 に答える 1

0

上記のコメントで ooo が指摘したように、1/0/00 は無効な日付コードです。ただし、それが質問のタイプミスであったとしても、日付が 2 桁の年コードを使用しているという事実は、「どの年が 00 ですか?」という疑問を生じさせます。すでにご存じでしたら申し訳ありませんが、以下に、私が他の場所で書いたものから Excel の日付がどのように機能するかの要約を抜粋しました。関連する部分は「Day Zero And Before In Excel」です。「00」がセル内で実際に * 19 *00 を表している場合 (セル エントリとして「01:00」と入力した場合と同様)、それから減算する際に問題が発生します。その場合、おそらく明示的に日付と時刻を入力します(おそらく現在の日付を使用します)が、フォーマットを使用して日付コンポーネントを非表示にします):

Excel では、計算に使用する日付が正の整数値として表される「日付シリアル」システムが使用されます。その整数値は、任意の開始日から計算されます。特定のシリアル日付に整数を追加すると、カレンダーが 1 日ずつ進み、整数を減算すると逆に移動します...シリアル番号システムの開始日を過ぎて終了しない限り負の値で。時間は 1 日の端数として表されます。午前 6 時は 0.25、正午は 0.5、午後 6 時は 0.75 など。

エクセルの日付

Windows 版 Excel の場合、開始日は 1900 年 1 月 1 日です。つまり、Excel のセルに値 1 を入力して日付として書式設定すると、値は 1900 年 1 月 1 日と表示されます。2 は1900 年 1 月 2 日、3 は 1 月 3 日などです。367 は 1901 年 1 月 1 日を表します。これは、Excel が 1900 年を 366 日で閏年として扱うためです。つまり、1 日が経過するたびにシリアル日付に 1 が加算されます。

上記は Excel のみに関連するものであり、Access、SQL Server、またはその他のデータベース製品 (または Visual Basic) に関連するものではないことに注意してください。たとえば、Access では、有効な日付の範囲は 100 年 1 月 1 日から 9999 年 12 月 31 日までです。これは、Date データ型の VB または VBA 変数に格納できる範囲と同じです。

エクセルとマッキントッシュ

Macintosh システムは 1904 年 1 月 1 日という開始日を使用しており、1900 年の閏年の問題をうまく回避しています。ただし、これは、Excel for Windows で作成されたブックと Excel for the Mac で作成されたブックのシリアル日付値の間に 4 年の不一致があることを意味します。幸いなことに、[ツール] -> [オプション] -> [計算] (2007 年より前のバージョンの Excel) の下に、1904 Date System というワークブック オプションがあります。これがチェックされている場合、Excel はブックが Macintosh からのものであることを認識し、それに応じて日付の計算を調整します。

エクセルタイムズ

冒頭で述べたように、時間は 1 日の分数として計算されます。たとえば、1.5 は 1900 年 1 月 2 日の正午を表します。1.75 は 1900 年 1 月 2 日の午後 6 時を表します。

(1900年のうるう年のバグについて少し省略)

1900 年 3 月 1 日以降、Excel の日付は正しいですが、dddd、mmmm dd、yyyy の形式を使用して数値 1 をフォーマットすると、1900 年 1 月 1 日日曜日という結果が得られます。これは正しくありません。1900 年 1 月 1 日は日曜日ではなく月曜日でした。この曜日のエラーは、Excel カレンダーで最初に正確な日付である 3 月 1 日になるまで続きます。

Excel での 0 日目とそれ以前

値 0 を使用して日付形式で表示すると、1900 年 1 月 0 日というナンセンスな日付が返されます。負の値を日付として形式設定しようとすると、ハッシュ マークでいっぱいのセルが得られます。同様に、DateValue などの Excel 関数を使用して日付シリアル番号を取得しようとすると、1900 年 1 月 1 日以降の日付に対してのみ取得できます。それより前の日付を指定しようとすると、エラーが発生します。

1904 (Macintosh) システムはゼロから始まります。(1904 年 1 月 1 日の値は 1 ではなく 0 です。Excel のオンライン ヘルプでは、Mac システムは 1 月 2 日から始まると説明されていますが、これはおそらく、0 のシリアル日付値が Mac では機能するが Excel では機能しない理由をユーザーに説明するよりも簡単です。 .) 負の数はエラーを生成しませんが、数値は絶対値として扱われます。つまり、1 と -1 の両方が 1904 年 1 月 2 日として扱われます。

于 2012-11-30T19:44:58.007 に答える