こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

VBA 年の下二けたを表示させる Format

VBA(version7.1)で年の下二けたを表示させたいと思っています。
Format関数では両者とも5, 
date関数はyear関数を使うと1905と表示
right関数を使うと20と意図通り表示します。
このような結果になるのはなぜでしょうか。
詳しい方よろしくお願いします。

Sub test()

Cells(1, 1) = Format(Year(Date), "yy")
Cells(2, 1) = Format(Year(Now), "yy")

Cells(1, 2) = Right(Year(Date), 2)
Cells(2, 2) = Right(Year(Now), 2)

Cells(1, 3) = Year(Date)
Cells(2, 3) = Year(Now)

End Sub

実行結果
5_20_1905/7/12
5_20_2020

投稿日時 - 2020-10-26 21:27:17

QNo.9816198

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

適当なセルに日付を入力し、表示を日付から標準に変えてみれば意味が分かるでしょう。
日付の正体は連続した整数値(シリアル値)です。
1が1日分に相当するので、+1すれば翌日になり、-1すれば前日になります。
応用すれば、1時間は1/24です。

投稿日時 - 2020-10-28 17:36:22

ANo.3

エクセルの日付の、日付・時刻シリアル値という仕組みを、
VBAをやるぐらいになれば、勉強してからやるべきだと思う。
それとRightやLeft関数は、本来は文字列を対象にする関数で、Excelが気を利かして変換して処理してくれるので、注意のこと。
Googleで「日付シリアル値とは」でしょうかいすれば、記事がたくさん出るから、2,3読んでみて、本質問のことを考えること。

投稿日時 - 2020-10-27 09:58:37

ANo.2

Year(Date)は2020という数値になって,それは1905年7月12日を意味します。したがってFormat(Year(Date), "yy")にすれば05という数値になって「Format関数では両者とも5」ですね。
1900年1月1日=1
1900年1月2日=2
1900年1月3日=3
...途中省略
1905年7月11日=2019
1905年7月12日=2020

投稿日時 - 2020-10-26 22:05:11

ANo.1

Formatの"yy"の場合第一引数はシリアル値なのでYear(Date)は2020となりシリアル値0が1900/1/0なのでシリアル値2020は1905年になりyは5となります。

投稿日時 - 2020-10-26 21:57:19

あなたにオススメの質問