Excel VBA質問箱 IV

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

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


4534 / 13646 ツリー ←次へ | 前へ→

【56072】カレンダの年度(yearプロパティ) takao 08/5/31(土) 19:39 質問[未読]
【56073】Re:カレンダの年度(yearプロパティ) かみちゃん 08/5/31(土) 20:01 発言[未読]
【56080】Re:カレンダの年度(yearプロパティ) takao 08/6/1(日) 9:22 質問[未読]
【56082】Re:カレンダの年度(yearプロパティ) かみちゃん 08/6/1(日) 10:07 発言[未読]
【56094】Re:カレンダの年度(yearプロパティ) takao 08/6/1(日) 16:06 お礼[未読]

【56072】カレンダの年度(yearプロパティ)
質問  takao  - 08/5/31(土) 19:39 -

引用なし
パスワード
   カレンダーコントロールを使っています。
カレンダーの年度選択(combobox?)を、イベントで待っています。
年度を変更するとイベント(_NewYear())で受けられますが、
 年 = カレンダ.Year として 変更後の年度の値を取得しようとしても
年には、0(ゼロ)しか格納されません。
日付をクリックすれば、カレンダ.Year には選択された値(年度)が
正しく格納されますが、年度のみ変更時に変更した年度を取得することは
できないのでしょうか?
目的は、選択した年度の和暦を(参考に)表示するためです。

【56073】Re:カレンダの年度(yearプロパティ)
発言  かみちゃん  - 08/5/31(土) 20:01 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>カレンダーコントロールを使っています。
>カレンダーの年度選択(combobox?)を、イベントで待っています。
>年度を変更するとイベント(_NewYear())で受けられますが、
> 年 = カレンダ.Year として 変更後の年度の値を取得しようとしても
>年には、0(ゼロ)しか格納されません。

現在どのようなコードになっているのでしょうか?

>目的は、選択した年度の和暦を(参考に)表示するためです。

以下のような感じではいかがでしょうか?
Sub Sample()
 Dim intYYYY As Integer
 
 intYYYY = 2008
 MsgBox intYYYY & "年は" & Format(DateSerial(intYYYY, 1, 1), "ggge") & "年です" & vbCrLf & _
  Val(Format(DateSerial(intYYYY, 1, 1), "e"))
End Sub

【56080】Re:カレンダの年度(yearプロパティ)
質問  takao  - 08/6/1(日) 9:22 -

引用なし
パスワード
   ▼かみちゃん さん:
>こんにちは。かみちゃん です。
>
>>カレンダーコントロールを使っています。
>>カレンダーの年度選択(combobox?)を、イベントで待っています。
>>年度を変更するとイベント(_NewYear())で受けられますが、
>> 年 = カレンダ.Year として 変更後の年度の値を取得しようとしても
>>年には、0(ゼロ)しか格納されません。
>
>現在どのようなコードになっているのでしょうか?
>
>>目的は、選択した年度の和暦を(参考に)表示するためです。
>
>以下のような感じではいかがでしょうか?
>Sub Sample()
> Dim intYYYY As Integer
> 
> intYYYY = 2008
> MsgBox intYYYY & "年は" & Format(DateSerial(intYYYY, 1, 1), "ggge") & "年です" & vbCrLf & _
>  Val(Format(DateSerial(intYYYY, 1, 1), "e"))
>End Sub
早速の回答ありがとう御座います。
説明不足で申し訳ありません。以下補足します。

カレンダーコントロールに対して、下記コードでイベント待ちです。
Private Sub Calendar1_NewYear()
  Me.和暦.Text = Format(DateSerial(Calendar1.Year, 1, 1), "ggee年")
End Sub
カレンダー右上の、年度の選択(年を選択するcomboboxの様な所)を行うと
上記のイベントが発生しますが、Calendar1.Year=0となり、0=2000年=H12年
となってしまいます。
年を選択した時点で、選択した年の値(西暦)を取得する方法が知りたいのです。

元々できないのでしょうか? できないのであれば、Calendar1_NewYear()は
どの様な時に使うのでしょうか。
ご存知の方宜しくご教示下さい。

【56082】Re:カレンダの年度(yearプロパティ)
発言  かみちゃん  - 08/6/1(日) 10:07 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>カレンダーコントロールに対して、下記コードでイベント待ちです。
>Private Sub Calendar1_NewYear()
>  Me.和暦.Text = Format(DateSerial(Calendar1.Year, 1, 1), "ggee年")
>End Sub
>カレンダー右上の、年度の選択(年を選択するcomboboxの様な所)を行うと
>上記のイベントが発生しますが、Calendar1.Year=0となり、0=2000年=H12年
>となってしまいます。
>年を選択した時点で、選択した年の値(西暦)を取得する方法が知りたいのです。

仕組みおよび理由は、私も難しいので、説明はできませんが、以下のような方法
にするとできると思います。

Calendar1.Day(.Valueではなく)を一旦、別の日に移動して、元に戻すことで
できるようです。

Private Sub Calendar1_NewYear()
 Dim NewMon As Integer
 Dim NewYea As Integer

 Calendar1.Day = Day(Date + 1)
 Calendar1.Day = Day(Date)
 Me.TextBox1.Text = Format(DateSerial(Calendar1.Year, 1, 1), "ggee年")
End Sub

参考にしたのは、以下のURLです。
http://hanatyan.sakura.ne.jp/logbbs/wforum.cgi?mode=allread&no=8577
http://hanatyan.sakura.ne.jp/logbbs1/wforum.cgi?mode=allread&no=8316&page=90

また、動作確認はしていませんが、以下のような方法もあるようです。
http://support.microsoft.com/kb/193967/ja

曖昧な説明で申し訳ありません。

※投稿の際は、引用は必要最小限のものでいいです。
 スレッド一覧で見ると、経緯はわかるからです。

【56094】Re:カレンダの年度(yearプロパティ)
お礼  takao  - 08/6/1(日) 16:06 -

引用なし
パスワード
   "かみちゃん"さん ありがとうございました。解決しました。
月末時は正しく動作しない様なので、下記のようにしました。

Private Sub Calendar1_NewYear()
  Calendar1.Day = IIf(Day(Date) > 15, Day(Date - 1), Day(Date + 1))
  Calendar1.Day = Day(Date)
  和暦.Text = Format(DateSerial(Calendar1.Year, 1, 1), "ggee年")
End Sub

初めての投稿でしたがすぐに回答頂き感謝します。今後共宜しくお願いします。

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