|
今晩は…
日にちの検索を、以前に聞かせていただき貴重な回答をいただきました。
その後その検索をUserFormのスピンボタンで、また作成しています。
つまりスピンボタンで年・月・日を指定して、その対象日にジャンプさせる
という方法です。
年月日はA列の6行目(2009.03.01)から向こう8年分まで検索させています。
このような状態で、日にちが日曜日であればその日にちの数字を赤にしたいのですが、weekday関数を使って色替えを考えたのですが、日曜日がずれてしまいます。
対応方法をよろしくお願いします。コードは次の通りです。
Private Sub CommandButton1_Click()
Dim dt As Date
Dim r As Range
Dim c As Range
Dim ch
ch = DateSerial(Label1, Label2, Label3)
Set r = Range("A1", Cells(Rows.Count, "A").End(xlUp))
Set c = r.Find(ch, Range("a1"), _
xlFormulas, xlWhole, , xlPrevious)
If Not c Is Nothing Then
c.Activate
MsgBox ch & " 日へジャンプしました", , "セル位置は" & c.Address(0, 0)
Else
MsgBox "その年月日はありません", vbExclamation
End If
End Sub
Private Sub UserForm_Initialize()
Dim sund As Integer
With Me
With .SpinButton1 '年
.Max = Year(Date) + 8
.Min = Year(Date)
Label1 = Year(Date)
End With
With .SpinButton2 '月
.Max = 12
.Min = 1
Label2 = Month(Date)
End With
With .SpinButton3 '日
.Min = 1
.Max = Day(DateSerial(Year(Date), Month(Date) + 1, 1 - 1))
Label3 = Day(Date)
End With
.Label4.Caption = "年"
.Label5.Caption = "月"
.Label6.Caption = "日"
End With
End Sub
Private Sub SpinButton1_Change()
Me.Label1 = Me.SpinButton1.Value
End Sub
Private Sub SpinButton2_Change()
Me.Label2 = Me.SpinButton2.Value
Me.Label3 = Day(DateSerial(Label1, Label2 + 1, 1 - 1))
End Sub
Private Sub SpinButton3_Change()
Dim n As Integer
Me.Label3 = Me.SpinButton3.Value
With Me
With .SpinButton3
.Max = Day(DateSerial(Label1, Label2 + 1, 1 - 1))
End With
End With
n = Weekday(DateSerial(Year(Label1), Month(Label2), Day(Label3)))
If n <> 1 Then
Me.Label3.ForeColor = RGB(0, 0, 0)
Else
Me.Label3.ForeColor = RGB(255, 0, 0)
End If
End Sub
'nの変数が当月ですと木曜日ですが4になり1ずれます、それだけでなく
'2年後の日にちでは更にずれるのですが、何故でしょうか。
'理由がわかりません。アドバイスお願いします。
|
|