Excel VBA質問箱 IV

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

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


21242 / 76732 ←次へ | 前へ→

【60892】Re:UserFormで対象日が日曜であればその日を赤色にする
発言  kanabun  - 09/3/20(金) 22:34 -

引用なし
パスワード
   ▼Porta さん:

>最初に表示される日にちは今日の年月日ですが、
>
>例えば月のスピンを▽で1にしたくても出来ず、先ず△を使い2に
>変更して▽で1にスピンしなくてはなりませんが…
>
>▽を押せば減数、△は増数という単純な動きは
>今のコードの一部変更では出来ないものでしょうか。

思いっきり方法を変更してみました。

SpinButtonのイベントは Changeイベントでなく、
SpinUp, SpinDown イベントを使います。

モジュールレベルの変数 myDateに変更後の日付を格納して、
 年用 SpinButtonが押されたら、 myDate = DateAdd("yyyy",±1, myDate)
 月用 SpinButtonが押されたら、 myDate = DateAdd("m", ±1, myDate)
 日用 SpinButtonが押されたら、 myDate = DateAdd("d", ±1, myDate)
という方式で、日付を変更しています。

'----------------------------------------  UserForm2
Option Explicit

Private MaxDate As Date
Private myDate As Date

Private Sub UserForm_Initialize()
 myDate = Date
 MaxDate = DateAdd("yyyy", 8, myDate)
 SetDate
 Label4.Caption = "年"
 Label5.Caption = "月"
 Label6.Caption = "日"
End Sub

Private Sub SetDate()
 Dim n As Integer
 Dim colr As Long
  If myDate > MaxDate Then Beep: myDate = MaxDate
  Label1.Caption = Year(myDate)
  Label2.Caption = Month(myDate)
  Label3.Caption = Day(myDate)
  
  n = Weekday(myDate)
  If n = 1 Then colr = vbRed Else colr = vbBlack
  Label3.ForeColor = colr
End Sub


Private Sub SpinButton1_SpinDown()
 myDate = DateAdd("yyyy", 1, myDate)
 SetDate
End Sub

Private Sub SpinButton1_SpinUp()
 myDate = DateAdd("yyyy", -1, myDate)
 SetDate
End Sub

Private Sub SpinButton2_SpinDown()
 myDate = DateAdd("m", 1, myDate)
 SetDate
End Sub

Private Sub SpinButton2_SpinUp()
 myDate = DateAdd("m", -1, myDate)
 SetDate
End Sub

Private Sub SpinButton3_SpinDown()
 myDate = DateAdd("d", 1, myDate)
 SetDate
End Sub

Private Sub SpinButton3_SpinUp()
 myDate = DateAdd("d", -1, myDate)
 SetDate
End Sub

Private Sub CommandButton1_Click()
 Dim r As Range
 Dim c As Range
 Dim m
 
 '      [A6]セルに先頭日付
 Set r = Range("A6", Cells(Rows.Count, "A").End(xlUp))
 m = Application.Match(CLng(myDate), r, 1)
 Set c = r.Item(m, 1)
 If c.Value = myDate Then
  c.Activate
  MsgBox myDate & " 日へジャンプしました", , "セル位置は" & c.Address(0, 0)
 Else
  MsgBox "その年月日はありません", vbExclamation
 End If
End Sub
0 hits

【60881】UserFormで対象日が日曜であればその日を赤色にする Porta 09/3/19(木) 20:52 質問
【60882】Re:UserFormで対象日が日曜であればその日... kanabun 09/3/19(木) 22:48 発言
【60889】Re:UserFormで対象日が日曜であればその日... Porta 09/3/20(金) 21:20 質問
【60892】Re:UserFormで対象日が日曜であればその日... kanabun 09/3/20(金) 22:34 発言
【60898】Re:UserFormで対象日が日曜であればその日... Porta 09/3/22(日) 13:54 お礼
【61166】Re:UserFormで対象日が日曜であればその日... Porta 09/4/14(火) 6:58 質問
【61167】Re:UserFormで対象日が日曜であればその日... kanabun 09/4/14(火) 8:35 発言

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