|
こんにちは。
>
>>シート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月のみ例外処理にしてありますが・・・。
|
|