タブストリップで問題と解答を切り替えるコード
タブストリップで問題と解答を切り替えるコード

Excel2016,2013 マクロ 42b回
タブストリップ(TabStrip)
コントロールが複数のタブを持つタブストリップは、タブを切り替えることで表示内容を切り替えることができる便利なオブジェクトです。
なかなか覚えられない憲法条文を穴埋め問題にしてみました。
(サンプルファイルは、こちらから
マクロ42回サンプルデータ)
タブを切り替えた時に表示する値を書き換える
タブストリップにテキストボックスを1つ設置します。タブを切り替えてもテキストボックスは共通して表示されます。表示する内容はコードで切り替えてやります。ここに、Excelのシート「kenpojyoubun!A5:A16」にあるデータを表示させましょう。

憲法条文を表示させようと思うので、フォームにテキストボックスとコンボボックスを追加しました。ここには、条文のタイトルを表示させる予定です。

タブの名称は変更することができます。名前を変更したいタブの上で右クリックして、名前の変更を選択。

名前の変更ダイアログで名前を入力します。

TabStripの名前変更と移動
タブの順序を変更するには、TabStrip上で右クリックして、移動を選択します。

コンボボックスに表示されるセル範囲をプロパティウィンドーのRowSourceで「kenpojyoubun!A5:A21」と指定しました。

コンボボックスの値が変わったときのコード
コンボボックスを変更すると、隣のテキストボックスに対応するセルの内容が表示されるようにします。コンボボックスに入力された内容なタブインデックスで取得します。最初のインデックスは0です。指定されたRowSource以外は-1となります。

Private Sub ComboBox1_Change()
If ComboBox1.ListIndex = -1 Then
txtName.Value = "" '-1なら何も表示しない
Else
txtName.Value = Cells(5 + ComboBox1.ListIndex, 2) '条文NO
End If
kenpoTabs_Change
End Sub
TabStrip上のテキストを表示するコード
そしてタブストリップ(kenpoTab)にテキストを表示するコードは、コンボボックスで指定した
ComboBox1.ListIndexを元に変更されるようにします。
kenpoTabs.Valueは、0,1,2となります。
Private Sub kenpoTabs_Change()
jyoubun.Value = Cells(5 + ComboBox1.ListIndex, 3 + kenpoTabs.Value)
jyoubun.WordWrap = True '文字列を折り返す
jyoubun.MultiLine = True '複数行のテキストを表示
End Sub
Tabを切り替えると、kenpoTabs.Valueが変わるので表示されるテキストの列が変更になります。

フォームを起動するときに初期化するコードを記入します。
Private Sub UserForm_Initialize()
kenpoTabs.Value = 0
ComboBox1.ListIndex = 0
kenpoTabs_Change
End Sub
フォームを終了するコード
Private Sub CloseButton_Click()
Unload Me
End Sub
条文を読んでから、穴埋め問題を答え、解答を見るという流れです。

これは憲法条文をサンプルにして問題を作りましたが、TabStripは、いろいろと応用がききそうです。
