Excel VBA質問箱 IV

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

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


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

【43109】1と入力でひとつき前の1日と表示 kazu 06/10/2(月) 14:39 質問[未読]
【43113】Re:1と入力でひとつき前の1日と表示 りん@通りすがり 06/10/2(月) 16:15 回答[未読]
【43114】Re:1と入力でひとつき前の1日と表示 kazu 06/10/2(月) 17:09 発言[未読]
【43117】Re:1と入力でひとつき前の1日と表示 りん 06/10/2(月) 19:29 回答[未読]
【43125】Re:1と入力でひとつき前の1日と表示 kazu 06/10/3(火) 0:24 お礼[未読]

【43109】1と入力でひとつき前の1日と表示
質問  kazu  - 06/10/2(月) 14:39 -

引用なし
パスワード
   前回は、1と入力で1月1日と表示で
こちらの思った以上の回答頂きありがとうございました。
また、よろしくお願いします。

現在の日付は2006年10月の時
セルC7に29と入力するとひとつき前の9月29日とセルC7に表示するには。
(2007年1月の時、1と入力の時は2006年12月1日
    ただし、10/7(月日)を入力の時はそのままその年の10月7日と表示)

例、2006年4月の時・10→3月10日、23→3月23日、2/3→2月3日
  2007年1月の時・5→2006年12月5日、18→2006年12月18日、5/3→5月3日

【43113】Re:1と入力でひとつき前の1日と表示
回答  りん@通りすがり  - 06/10/2(月) 16:15 -

引用なし
パスワード
   kazu さん、こんにちわ。

>現在の日付は2006年10月の時
>セルC7に29と入力するとひとつき前の9月29日とセルC7に表示するには。
>(2007年1月の時、1と入力の時は2006年12月1日
>    ただし、10/7(月日)を入力の時はそのままその年の10月7日と表示)
>
>例、2006年4月の時・10→3月10日、23→3月23日、2/3→2月3日
>  2007年1月の時・5→2006年12月5日、18→2006年12月18日、5/3→5月3日

WorksheetのChangeイベントに以下を記述
Private Sub Worksheet_Change(ByVal Target As Range)
  With Target
    If .Count = 1 Then
      Application.EnableEvents = False
      Select Case .Value2
        Case 1 To 31
          .Value = DateSerial(Year(Date), Month(Date) - 1, .Value2)
        Case Else
      End Select
      Application.EnableEvents = True
    End If
  End With
End Sub

こんな感じです。

【43114】Re:1と入力でひとつき前の1日と表示
発言  kazu  - 06/10/2(月) 17:09 -

引用なし
パスワード
   ▼りん@通りすがり さん:
迅速な回答ありがとうございます。
まことにすみませんが、セルC7に入力いた時、
 セルC7に表示するにはどうすればいいのですか。
  よろしくお願いします。

【43117】Re:1と入力でひとつき前の1日と表示
回答  りん E-MAIL  - 06/10/2(月) 19:29 -

引用なし
パスワード
   kazu さん、こんばんわ。

> セルC7に表示するにはどうすればいいのですか。
>  よろしくお願いします。
WorksheetのChangeイベントに以下を記述
Private Sub Worksheet_Change(ByVal Target As Range)
  With Target
    If .Count = 1 And .Address = "$C$7" Then
      Application.EnableEvents = False
      Select Case .Value2
        Case 1 To 31
          .Value = DateSerial(Year(Date), Month(Date) - 1, .Value2)
        Case Else
      End Select
      Application.EnableEvents = True
    End If
  End With
End Sub

こんな感じです。
前回言い忘れた注意としては、今月(10月)に31と入力すると、9月の31日目→10月1日になります。

【43125】Re:1と入力でひとつき前の1日と表示
お礼  kazu  - 06/10/3(火) 0:24 -

引用なし
パスワード
   ▼りん さん:
回答ありがとうございます。
今まで月日を入力していましたが、日付だけになり便利になりました。
また、よろしくお願いします。

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