質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

3回答

5845閲覧

EXCEL VBA Day関数の戻り値がおかしい

SYO_chan

総合スコア12

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2020/02/03 01:53

EXCEL 2010で、表示形式が”[h]:mm”に設定されていて,
見た目の表示が「76:55」となっているA1セルがあります。

A1セルをクリックすると、”1900/1/3 4:55:00”という値が表示されます。

と、ここまでは良いのですが、

このセルの日付を以下のようにVBAのDay関数で取得すると
結果が"3"ではなく、"2"となってしまいます。

MsgBox Day(Worksheets("Sheet1").Range("A1").Value)

原因がわからず、質問させていただきました。

どなたか、おわかりになる方がいらっしゃれば
教えていただけないでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaina

2020/02/03 02:22

回答ではないのでこちらに書きます。 Office 365 ProPlusで実行したら結果は"3"になりました。
guest

回答3

0

シリアル値60が、
ExcelとVBAとで違う日付になっているようです。(それ以降は問題なし)
なので、それ以前は1日ずれるようです。エクセルのバグ?

うるう年のルールってどうなってるんだっけなぁ。。。。。

投稿2020/02/03 03:21

mattuwan

総合スコア2136

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mattuwan

2020/02/03 04:01

リンクありがとうございます。 結局エクセルを作った人とVBAを作った人で、考え方の違いの差が影響しているということですね^^
SYO_chan

2020/02/03 04:10

回答くださり、ありがとうございます。 勉強にないりました。 他にこのような既知の問題がないか、調べてみます。
guest

0

『Excel』は、1900年をうるう年と想定してしまっています。
https://www.724685.com/word/wd140917.htm

このため1900/1/1~1900/2/29で日付がずれたり、曜日がずれてしまいます。

この経緯は以下で説明されており過去のLotus 1-2-3 との互換性を維持しているためです。
https://docs.microsoft.com/ja-jp/office/troubleshoot/excel/wrongly-assumes-1900-is-leap-year

なお、『VBA』は正しく1900年のうるう年取り扱っているため、VBAで1900/1/1~1900/2/29を扱うと、Excelとずれてみえるようです。

投稿2020/02/03 04:07

mima_ita

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

エクセルでの日付を表す 日付シリアル値って物の仕様が変わっているみたい

本来、日付シリアル値=1ってのは 1900/1/1 になるはずなんだけど

日付シリアル値=1 が 1899/12/31 に変更されているみたいです。
(1900/1/1 の一日前に変わってる)

こうやってみるとわかるけど
a1=1
msgbox Year(a1) & "-" & Month(a1) & "-" & Day(a1) & "-" & Hour(a1) & "-" & Minute(a1) & "-" & Second(a1)

投稿2020/02/03 02:55

yukiyuki123456

総合スコア130

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

SYO_chan

2020/02/03 04:08

回答くださり、ありがとうございます。 こんな問題があったとは、知りませんでした。 Microsoft曰く、バグではなく互換性を保つ方を優先した仕様のようですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問