ホーム > ユーザーフォーム > Lesson13: スクロールバー

スクロールバー
スクロールバー スクロールバー
スクロールバーは、スクロール操作によって値を増減することができるコントロールです。
スクロールバーを使って点数を表示することにします。
スクロールバー
テキストボックス(点数)の下にスクロールバーを配置します。
プロパティ 設定
オブジェクト名 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 スクロール その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月