|
こんにちは。
別解をひとつ‥‥‥
出発日(B列)/帰宅日(C列)のセルをダブルクリックすると、カレンダーフォーム
がポップアップして日付入力するという例です。
----- シートモジュール ------
Private Sub Worksheet_BeforeDoubleClick _
(ByVal Target As Range, Cancel As Boolean)
Dim MyDate As Date
Dim dtmFromDate As Date
Dim dtmToDate As Date
If (Target.Row <= 1) Then
Exit Sub 'タイトル行
Else
Select Case Target.Column
Case 2 '出発日(B列)
dtmFromDate = DateSerial(Year(Date), Month(Date), 1)
dtmToDate = DateSerial(Year(Date), Month(Date) + 4, 0)
If ktCalDate(MyDate, Target.Value, 入力Msg:="出発日", _
期間制限Fr:=dtmFromDate, 期間制限To:=dtmToDate) Then
Target.Value = MyDate
'Target.Value = Format(MyDate, "yyyy/m/d")
If (Target.Offset(0, 1).Value < MyDate) Then
'既入力の帰宅日の方が過去ならばクリア
Target.Offset(0, 1).ClearContents
End If
End If
Cancel = True
Case 3 '帰宅日(C列)
If (Target.Offset(0, -1).Value = "") Then
Beep '出発日未入力
Else
dtmFromDate = Target.Offset(0, -1).Value
dtmToDate = DateSerial(Year(dtmFromDate),Month(dtmFromDate)+4,0)
If ktCalDate(MyDate, Target.Value, 入力Msg:="帰宅日", _
期間制限Fr:=dtmFromDate, 期間制限To:=dtmToDate) Then
Target.Value = MyDate
'Target.Value = Format(MyDate, "yyyy/m/d")
End If
End If
Cancel = True
Case Else
Exit Sub
End Select
End If
End Sub
------------------------------------
[kt関数アドイン]というσ(^_^)のアドインソフトにある[ktCalDate]
というカレンダー入力フォームを使った例です。
DLはσ(^_^)のHPから出来ます。
日付入力用のツールは他にも色々とあります。
「カレンダーコントロール色々」
http://www.h3.dion.ne.jp/~sakatsu/Excel_Tips06.htm
|
|