スクロールバー
スクロールバーは、スクロール操作によって値を増減することができるコントロールです。
スクロールバーを使って点数を表示することにします。
テキストボックス(点数)の下にスクロールバーを配置します。
プロパティ |
設定 |
オブジェクト名 |
scbGrade |
Max |
100 |
Min |
0 |
テストの点数は100点満点なので、Maxは100、Minは0。
スクロールさせると点数表示が変わるようにします。
スクロールバーが変わったときなので、scbGrade_Change。
Private Sub scbGrade_Change()
txtPoint.Value = scbGrade.Value
End Sub
スクロールさせると点数表示が変わるようになりました。
2007年9月
スクロール その2
とりあえず動くようになったけれど、もう少し変更。
ユーザーフォームを開いたときに、スクロールバーのカーソルの位置が該当する点数のところにあるように変更。
バグを回避するために、点数が0〜100点のときだけ表示するようにする。
100より大きいとき、0より小さいときは、点数のテキストボックスは0点と表示する。
そのテキストボックスの値をもとにスクロールバーのカーソル位置を決める。
Private Sub UserForm_Initialize()
cmbNum.ListIndex = 0
tstKamoku_Change
mltData_Change
If (txtPoint.Value > 100) Or (txtPoint.Value < 0) Then
txtPoint.Value = 0
End If
scbGrade.Value = txtPoint.Value
End Sub
処理をわかりやすくするために、スクロールバーの処理のところを、別のSubプロシージャに分けます。
それを scbGradeCheck() とすると
Sub scbGradeCheck()
If (txtPoint.Value > 100) Or (txtPoint.Value < 0) Then
txtPoint.Value = 0
End If
scbGrade.Value = txtPoint.Value
End Sub
なのでUserForm_Initializeは
Private Sub UserForm_Initialize()
cmbNum.ListIndex = 0
tstKamoku_Change
mltData_Change
scbGradeCheck
End Sub
番号を変えたとき(cmbNum_Change)の処理にも追加。
Private Sub cmbNum_Change()
If cmbNum.ListIndex = -1 Then
txtName.Value = vbNullString
Else
txtName.Value = Cells(3 + cmbNum.ListIndex, 3)
End If
tstKamoku_Change
mltData_Change
scbGradeCheck
End Sub
タブスリップのタブが変わったときの処理にも追加。
Private Sub tstKamoku_Change()
If cmbNum.ListIndex = -1 Then
txtPoint.Value = vbNullString
Else
txtPoint.Value = Cells(3 + cmbNum.ListIndex, 4 + tstKamoku.Value)
End If
scbGradeCheck
End Sub
結果、ユーザーフォームを開いたとき、正しく表示されるようになりました。
そして、表示される人物、教科が変わったときも正しく表示されるようになりました。
2007年9月