こんにちは、テキストボックスに2003をデフォルトでいれスクロールバーで
スクロールさせるには、下記のとおりでいいんでしょうか?
Private Sub VScroll1_KeyDown(KeyCode As Integer, Shift As Integer)
'年フィールドDOWNのボタン
If Text1.Text < 2002 Then
MsgBox "2002年以前にはできません", 16, "警告"
Exit Sub
End If
Text1.Text = Text1.Text - 1
End Sub
Private Sub VScroll1_KeyUp(KeyCode As Integer, Shift As Integer)
'年フィールドUPのボタン
If Text1.Text = 2005 Then
MsgBox "2005年以降には対応していません", 16, "警告"
Exit Sub
End If
Text1.Text = Text1.Text + 1
End Sub
VScroll_Changeでスクロールのダウンだけだと動きます。
KeyDown、およびKeyUpイベントはオブジェクトに対して
キーボードを押下した時、および離した時のイベントで、スクロールとは一切関係ありません。
Microsoft Windows Common Controls-2 のUpDownコントロールを使ってみては?
VScrollを使うのであれば、
VScrollのMin と Maxを指定してみてはどうでしょう。
いかに2つ(2件にわけて)コードを書いてみます。
フォームにTextBoxとVscrollコントロールをひとつずつ配置。
初期値
TextBox.Text="2003"
Vscroll1.Min=2003
Vscroll1.Max=2004
'コードここから
Private Sub VScroll1_Change()
Text1.Text = VScroll1.Value
End Sub
'以上。
エラーが必要な場合は
TextBox.Text="2003"
'コードここから
Const VScrollMin = 2002
Const VScrollMax = 2005
Private Sub Form_Load()
VScroll1.Min=VScrollMin
VScroll1.Max=VScrollMax
VScroll1.Value=2003
End Sub
Private Sub VScroll1_Change()
select case VScroll1.Value
case VScrollMin
MsgBox CStr(VScrollMin) & "以前には対応していません", 16, "警告"
VScroll1.Value=VScrollMin
case VScrollMax
MsgBox CStr(VScrollMax) & "以降には対応していません", 16, "警告"
VScroll1.Value=VScrollMax
case Else
'エラー時に値を変更させないならここにText1.Text = VScroll1.Value
'をおくなど適宜変更してください
end Select
Text1.Text = VScroll1.Value
End Sub
こんな感じでしょうか。
ありがとうございます。
ツイート | ![]() |