| 
    
     |  | 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
 
 こんな感じです。
 
 |  |