Excel VBA質問箱 IV

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

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


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

【43049】1と入力で1月1日と表示 kazu 06/9/30(土) 16:20 質問[未読]
【43050】Re:1と入力で1月1日と表示 かみちゃん 06/9/30(土) 16:51 発言[未読]
【43053】Re:1と入力で1月1日と表示 ichinose 06/9/30(土) 17:48 発言[未読]
【43057】Re:1と入力で1月1日と表示 kazu 06/9/30(土) 23:07 お礼[未読]
【43056】Re:1と入力で1月1日と表示 kazu 06/9/30(土) 22:43 お礼[未読]

【43049】1と入力で1月1日と表示
質問  kazu  - 06/9/30(土) 16:20 -

引用なし
パスワード
   シート1のセルA1に1と入力でシート2のセルA1に1月1日と表示
また、シート1のセルA1に2と入力でシート2のセルA1に2月1日と表示
つまり1と入れたら1月1日、2と入れたら2月1日、3と入れたら3月1日、
・・・・・12と入れたら12月1日と表示するには。
また数式バーで見た時は年月日が表示するようにお願いします。
ただし、12月になって1と入れた時は、来年の年月日で表示するように。
よろしくお願いします。

【43050】Re:1と入力で1月1日と表示
発言  かみちゃん  - 06/9/30(土) 16:51 -

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

>シート1のセルA1に1と入力でシート2のセルA1に1月1日と表示
>また、シート1のセルA1に2と入力でシート2のセルA1に2月1日と表示
>つまり1と入れたら1月1日、2と入れたら2月1日、3と入れたら3月1日、
>・・・・・12と入れたら12月1日と表示するには。
>また数式バーで見た時は年月日が表示するようにお願いします。
>ただし、12月になって1と入れた時は、来年の年月日で表示するように。

一般関数ではいけませんか?
=DATE(YEAR(TODAY())+IF(MONTH(TODAY())=12,1,0),Sheet1!A1,1)

【43053】Re:1と入力で1月1日と表示
発言  ichinose  - 06/9/30(土) 17:48 -

引用なし
パスワード
   こんにちは。
>
>>シート1のセルA1に1と入力でシート2のセルA1に1月1日と表示
>>また、シート1のセルA1に2と入力でシート2のセルA1に2月1日と表示
>>つまり1と入れたら1月1日、2と入れたら2月1日、3と入れたら3月1日、
>>・・・・・12と入れたら12月1日と表示するには。
>>また数式バーで見た時は年月日が表示するようにお願いします。
>>ただし、12月になって1と入れた時は、来年の年月日で表示するように。

当該シートのシートモジュールに

'==========================================================
Private Sub Worksheet_Change(ByVal Target As Range)
  Const addr = "$a$1"
  Dim rng As Range
  With Application
    .EnableEvents = False
    Set rng = .Intersect(Range(addr), Target)
    If Not rng Is Nothing Then
     With Target
       .NumberFormatLocal = "標準"
       If Val(.Value) >= 1 And Val(.Value) <= 12 Then
        .Value = DateSerial(IIf(Month(Date) = 12 And Val(.Value) <> 12, _
              Year(Date) + 1, Year(Date)), Val(.Value), 1)
       Else
         MsgBox "nogood"
         End If
       End With
     End If
    .EnableEvents = True
    Set rng = Nothing
    End With
End Sub

として試してみてください
尚、例のコードは、当該シートのセルA1に1〜12を入力した時に
イベントプロシジャーで処理されるコードです。
セルを変更される場合はコードのaddrを代えてください。

それと仕様は現在の月が12月の時のみ、
任意の月数字を入れたら来年の年にする ということですか?

現在の月が9の時、1と入力されたときは??
2007/1/1? 2006/1/1?

例のコードは、現在の月が12月のみ例外処理にしてありますが・・・。

【43056】Re:1と入力で1月1日と表示
お礼  kazu  - 06/9/30(土) 22:43 -

引用なし
パスワード
   関数でもできるのですね。
  回答ありがとうございました。

【43057】Re:1と入力で1月1日と表示
お礼  kazu  - 06/9/30(土) 23:07 -

引用なし
パスワード
   ▼ichinose さん:

>それと仕様は現在の月が12月の時のみ、
>任意の月数字を入れたら来年の年にする ということですか?
12月の時だけ1と入れた時に来年の1月1日と表示するだけでいいです。

>現在の月が9の時、1と入力されたときは??
>2007/1/1? 2006/1/1?
2006/1/1の表示でいいです。

>例のコードは、現在の月が12月のみ例外処理にしてありますが・・・。
1〜12以外にほかの日にちまで(9/29)入力でき
予想以上に使いやすくなっています。
どうもありがとうございました。またよろしくお願いします。

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