Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9780 / 13644 ツリー ←次へ | 前へ→

【25501】曜日の表示 初心者 05/6/2(木) 15:40 質問[未読]
【25503】Re:曜日の表示 つん 05/6/2(木) 16:04 発言[未読]
【25504】Re:曜日の表示 初心者 05/6/2(木) 16:11 お礼[未読]
【25506】変数の宣言の強制 つん 05/6/2(木) 16:19 発言[未読]
【25508】Re:変数の宣言の強制 初心者 05/6/2(木) 16:42 お礼[未読]
【25509】Re:変数の宣言の強制 小僧 05/6/2(木) 16:48 発言[未読]
【25511】Re:変数の宣言の強制 つん 05/6/2(木) 17:09 発言[未読]
【25512】Re:変数の宣言の強制 小僧 05/6/2(木) 17:37 回答[未読]
【25513】解決ですね! つん 05/6/2(木) 17:53 お礼[未読]
【25514】Re:解決ですね! ichinose 05/6/2(木) 18:14 発言[未読]
【25516】Re:解決ですね! ponpon 05/6/2(木) 20:40 発言[未読]
【25526】Re:解決ですね! つん 05/6/3(金) 10:26 発言[未読]
【25527】Re:解決ですね? 小僧 05/6/3(金) 10:57 発言[未読]

【25501】曜日の表示
質問  初心者  - 05/6/2(木) 15:40 -

引用なし
パスワード
   初心者で申し訳ありません、みようみまねで下記を作ってみましたが、
どうしても表示される曜日が実際と2日合いません・・・
どこが違うのでしょうか?よろしくお願いいたします。

Private Sub Workbook_Open()
  youbi = Weekday(Data)
  Worksheets("作業日報").Range("J8") = WeekdayName(youbi)
End Sub

【25503】Re:曜日の表示
発言  つん E-MAIL  - 05/6/2(木) 16:04 -

引用なし
パスワード
   こんにちは^^

▼初心者 さん:
>初心者で申し訳ありません、みようみまねで下記を作ってみましたが、
>どうしても表示される曜日が実際と2日合いません・・・
>どこが違うのでしょうか?よろしくお願いいたします。
>
>Private Sub Workbook_Open()
>  youbi = Weekday(Data)
>  Worksheets("作業日報").Range("J8") = WeekdayName(youbi)
>End Sub

えーと、こちらでは、ちゃんと木曜日(6月2日)となりますが・・・
PCの日付がおかしいとか・・・ないですか?
私は以前家のノートがまるまる1日進んでいたことがありました(T_T)

ところで、
Weekday(Data)→「Date」ですよね?

【25504】Re:曜日の表示
お礼  初心者  - 05/6/2(木) 16:11 -

引用なし
パスワード
   Weekday(Data)→「Date」に直したところ木曜日になりました。
Dataですとなぜか土曜日と表示されてしまっていました。

ほんとどじですみません、ありがとうございました。

【25506】変数の宣言の強制
発言  つん E-MAIL  - 05/6/2(木) 16:19 -

引用なし
パスワード
   >Weekday(Data)→「Date」に直したところ木曜日になりました。
>Dataですとなぜか土曜日と表示されてしまっていました。

あー、こっちでも、変数の宣言の強制を解除して実行したら、土曜日になりました。
えと、「ツール」−「オプション」−「編集」の中に、
「変数の宣言を強制する」という項目があるので、それをチェックして、
変数を宣言しなかったらNGにしておいた方がいいですよ。
それしとけば、最初から「Data」でひっかかってくれます。

それにしても、なんで「土曜日」になるんやろう?(@_@)
というか、なんで動くの!?

【25508】Re:変数の宣言の強制
お礼  初心者  - 05/6/2(木) 16:42 -

引用なし
パスワード
   変数の宣言を強制するをチェックしました。

いろいろありがとうございます。

【25509】Re:変数の宣言の強制
発言  小僧  - 05/6/2(木) 16:48 -

引用なし
パスワード
   ▼初心者さん、つん さん:
こんにちは。

興味がありましたので色々調べてみました。
推測ではありますが、以下検証結果を…。


「Data」だから動くのではなく、
変数に値がセットされていない「Empty」だから動くらしい…。

>>><<イミディエトウィンドウ>>
>>>? Weekday(Empty)
>>>7

では「Empty」って何月何日?

>>><<イミディエトウィンドウ>>
>>>? Cdate(Empty)
>>>0:00:00

おっと…ではフォーマット関数で…

>>><<イミディエトウィンドウ>>
>>>? Format(CDate(Empty), "yyyy/mm/dd")
>>>1899/12/30

おぉ。解決か!

>>><<イミディエトウィンドウ>>
>>>? Weekdayname(Weekday(1899/12/30))
>>>木曜日

…お手上げです。すみません…。

【25511】Re:変数の宣言の強制
発言  つん E-MAIL  - 05/6/2(木) 17:09 -

引用なし
パスワード
   小僧 さん(^o^)

>興味がありましたので色々調べてみました。
>推測ではありますが、以下検証結果を…。

おお!ありがとうございます。

>「Data」だから動くのではなく、
>変数に値がセットされていない「Empty」だから動くらしい…。

「hogehoge」なんて、テキトーな変数名いれても同様に動きますもんね(@_@)

>>>><<イミディエトウィンドウ>>
>>>>? Weekday(Empty)
>>>>7
>
>では「Empty」って何月何日?
>
>>>><<イミディエトウィンドウ>>
>>>>? Cdate(Empty)
>>>>0:00:00
>
>おっと…ではフォーマット関数で…
>
>>>><<イミディエトウィンドウ>>
>>>>? Format(CDate(Empty), "yyyy/mm/dd")
>>>>1899/12/30
>
>おぉ。解決か!
>
>>>><<イミディエトウィンドウ>>
>>>>? Weekdayname(Weekday(1899/12/30))
>>>>木曜日
>
>…お手上げです。すみません…。

なんか、謎は深まるばかりですね(>_<)
ichinoseさんあたりのご出馬を期待するしかないかな?
・・・などと、さりげに呼んでみたりして(笑)

【25512】Re:変数の宣言の強制
回答  小僧  - 05/6/2(木) 17:37 -

引用なし
パスワード
   ▼つんさん、初心者さん:
こんにちは。

すみません、致命的な間違いを…。
>>>? weekdayname(weekday(#1899/12/30#))
>>>土曜日

1899 ÷ 12 ÷ 30 (=5.275) は木曜日らしいです…。
お騒がせしました。

【25513】解決ですね!
お礼  つん E-MAIL  - 05/6/2(木) 17:53 -

引用なし
パスワード
   小僧 さん^^

>すみません、致命的な間違いを…。
>>>>? weekdayname(weekday(#1899/12/30#))
>>>>土曜日
>
>1899 ÷ 12 ÷ 30 (=5.275) は木曜日らしいです…。
>お騒がせしました。

おお!なるほど〜
解決しましたね。どうもありがとうございました^^

でも、なんでEmptyが1899年12月30日・・・言うな!って?(笑)

【25514】Re:解決ですね!
発言  ichinose  - 05/6/2(木) 18:14 -

引用なし
パスワード
   ▼つん さん、みなさん、こんばんは。

>でも、なんでEmptyが1899年12月30日・・・言うな!って?(笑)
Emptyは、型変換されてシリアル値 0 になります。

よって、

Sub main()
  MsgBox Format(CDate(0), "yyyy/mm/dd") & " は、 " & Format(CDate(0), "aaaa")
End Sub

これで分かっていただけるかと・・・。

【25516】Re:解決ですね!
発言  ponpon  - 05/6/2(木) 20:40 -

引用なし
パスワード
   weekday関数は偶然の一致?

こんなページも
http://homepage1.nifty.com/kenzo30/ex_kisotyu/ex_ks_tyukyu9_9_3.htm#日付/時刻関数(WEEKDAY関数)

http://hpcgi1.nifty.com/kenzo30/b_cbbs/srch.cgi?no=0&word=weekday&andor=and&logs=.%2Fcbbs.dat&PAGE=20

【25526】Re:解決ですね!
発言  つん E-MAIL  - 05/6/3(金) 10:26 -

引用なし
パスワード
   みなさま、おはようございます^^

ichinoseさん
ありがとうございます^^

なるほど〜〜
1899年12月30日がシリアル値「0」と定められてるわけですね?

・・・って、でも、ponponさんが貼ってくださったリンク先を見ると、

「エクセルの日付計算は、1900/1/1を『1』として計算するシリアル値で管理されています。」

って、ありますね。
だったら、1899年12月31日が「0」なんじゃー(@_@)

このへんが・・・

「Excelの日付計算は、本来は存在しない1900/2/29が挟み込まれて成り立っています。」

ってことなんでしょうか?むーーーー

ところで、シート上で「1900/1/1」ってうつと自然に「日付」になりますが、「1899/12/31」ってうつとならないんですね・・・
エクセルの中では、「1900/1/1」から始まるんですね。
(今更何言うてんの?って感じかしら?)

【25527】Re:解決ですね?
発言  小僧  - 05/6/3(金) 10:57 -

引用なし
パスワード
   ▼みなさま:
おはようございます。

>ところで、シート上で「1900/1/1」ってうつと自然に「日付」になりますが、
>「1899/12/31」ってうつとならないんですね・・・
>エクセルの中では、「1900/1/1」から始まるんですね。
>(今更何言うてんの?って感じかしら?)

質問をした方が解決しているのに回答をした人達が解決してないですよね(笑)

シートでも数値「1」の表示形式を「日付形式」に変えると値は「1900/1/1」

これは納得できますが…

数値「0」の表示形式を「日付形式」に変えると値は「1900/1/0」(!!!)

こういうものだと納得するしかないんでしょうけど…何か…ですよね。

9780 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free