ホーム > ユーザーフォーム > Lesson11: タブストリップ

タブストリップ
タブストリップ タブストリップ
タブストリップは、タブをクリックすることでページを切り替えて表示するものです。
各ページに表示されるコントロールは、共通(同じ物)です。
タブストリップ
タブストリップを使って、それぞれのページに各科目の点数が表示されるようにします。
ユーザーフォームを広げて、タブストリップを配置します。
プロパティ 設定
オブジェクト名 tstKamoku
タブストリップを配置
このときタブは2つ。でも表示したいのは4つ(4科目)。
タブストリップを追加します。
タブストリップの上でゆくっり2回クリック。
そして右クリックするとメニューが表示されます。そこで「新しいページ」をクリックします。
2つ追加して、タブの名前を変更します。
そして、点数を表示するためのテキストボックスを1つ配置します。
プロパティ 設定
オブジェクト名 txtPoint
テキストボックス配置
タブストリップを切り替えるごとに表示が変わる(該当科目の点数表示)ようにします。
どのタブが選択されているかを知るには、tstKamoku.Value を見ます。
tstKamoku.Value は、0,1,2...です。
ここでは、国語が0、算数が1、理科が2、社会が3。
番号1のしげっちの国語なら、Cells(3, 4)。
番号1のしげっちの算数なら、Cells(3, 5)。
番号1のしげっちの理科なら、Cells(3, 6)。
番号1のしげっちの社会なら、Cells(3, 7)。
番号2のえんどーくんの国語なら、Cells(4, 4)。
   ・・・
これを、cmbNum.ListIndex と tstKamoku.Value を使って表すと
Cells(3 + cmbNum.ListIndex, 4 + tstKamoku.Value)
Private Sub tstKamoku_Change()
  
  txtPoint.Value = Cells(3 + cmbNum.ListIndex, 4 + tstKamoku.Value)
  
End Sub

実行結果
タブストリップを切り替えると、それぞれの点数が表示されました。
2007年6月
タブストリップ その2 タブストリップ その2
タブストリップを切り替えると、対応する人の科目の点数が表示されるようになりました。
でも、気になることも。
ユーザーフォームが表示されたとき、タブを切り替えるまで点数が表示されない。
フォームが表示されたときに、点数を表示させたいな...
もう一つ。
番号を変えたとき(別の人に変えた時)も、タブを切り替えるまで、正しい点数が表示されない。
番号を変えたらすぐに、その人の点数を表示するようにしたい。

ユーザーフォームが表示されるとき、UserForm_Initialize
タブストリップを切り替える tstKamoku_Change を実行する
Private Sub UserForm_Initialize()
  
  cmbNum.ListIndex = 0
  tstKamoku_Change
  
End Sub

実行結果
フォームが表示されたときに、点数を表示されるようになりました。

もう一つのほうは
番号を変えたとき cmbNum_Change
タブストリップを切り替える tstKamoku_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
  
End Sub

番号を変えたらすぐに、その人の点数を表示するようになりました。

しかし、バグ発見。
コンボボックスに直接入力したら、こうなった。
バグ
というわけで、また修正。
cmbNum.ListIndex = -1 のときの処理を追加。
Private Sub tstKamoku_Change()
  
  If cmbNum.ListIndex = -1 Then
    txtPoint.Value = vbNullString
  Else
    txtPoint.Value = Cells(3 + cmbNum.ListIndex, 4 + tstKamoku.Value)
  End If
  
End Sub

バグ修正
2007年6月