PR

【VBA】タブストリップの追加や選択を行う

これで楽に!?VBA活用
記事内に広告が含まれています。

こんにちは、Ryoです。
TabStripコントロールを使用してページ(Tab)を追加するにはAddメソッドを利用すれば良いですが、今回はその方法と合わせて追加したタブを選択したい場合、タブを切り替えた際の処理などについても書いていこうと思います。

スポンサーリンク

1.サンプル概要

ユーザーフォームにタブストリップとテキストボックス、コマンドボタンをそれぞれ配置したものをサンプルとして作成しています。

このフォームを起動しコマンドボタンを押す度にTabが追加され、その追加されたTabをアクティブ(選択した状態)にしています。また、手動で他のTabへ切り替えた際にはタブのページ番号を取得してテキストボックスに表示するようにしています。

タブストリップはページごとに同じコントロールを持っているので、サンプルのような動作は扱いやすいと思います。

2.サンプルコード

◆初期化処理

Private Sub UserForm_Initialize()

 '初期化処理として起動時のテキスト表示用
 Me.TextBox1 = "Tab1選択中"

End Sub

UserForm1起動の際にTextBox1が空欄なので、そこに文字として「Tab1選択中」と書込むためだけのものです。これは特になくても問題ないので任意で大丈夫です。

◆CommandButton1:タブ追加/選択

Private Sub CommandButton1_Click()

 With TabStrip1
   .Tabs.Add 'タブストリップにタブを追加
   .Value = .Tabs.Count - 1 '追加されたタブを選択する
   '※↑↑現時点のタブ数をカウント-1としValue値へ
         '代入することで最終タブページを選択した状態とする
   'テキストボックスに現在選択中のタブを表示
    Me.TextBox1 = "Tab" & .Value + 1 & "選択中"
 End With

End Sub

タブを追加するにはAddメソッドを利用します。

構文:オブジェクト.Add

タブを追加するだけならTabStrip1.Tabs.Addで大丈夫ですが、ここでは追加されたタブをアクティブ(選択された状態)にしていきます。

タブにはそれぞれページ番号ともいうべき値があり、0から始まり1,2,3・・・と増えていきます。なのでTab1は0、Tab2が1ということになるので、追加されたタブのページ番号を取得するにはタブ数をカウントして-1すればページ番号(Value値)となります。

TabStrip1.Value =TabStrip1.Tabs.Count-1

サンプルコードはWithを利用して書いているので上記とは記述が違いますが、Withを外せばこのような形になります。

ここでTabStrip1.Value=数値として指定することで、その対象のタブが選択されてアクティブ状態とすることができます。

あとはMe.TextBox1 = “Tab” & .Value + 1 & “選択中”とすることで、TextBox1に現在選択しているTabを表示しています。

◆タブ切り替えによる処理

Private Sub TabStrip1_Change()

  'Chengeイベント⇒タブ切り替えにより発生
  '切り替えによりアクティブとなったタブのValue値を取得
  Me.TextBox1 = "Tab" & TabStrip1.Value + 1 & "選択中"

End Sub

ここでは手動でタブを切替えた際に、テキストボックス内の表示を選択したタブに合わせています。

タブの切替Changeイベントを利用することで対応可能なので、ここにテキストボックスへの表示を同様に記述すると、その切り替えられたTabのページ番号を取得し、表示することができます。

◆参考:選択されたタブのキャプションを取得、変更する

TabStripで選択されたタブはSelectedItemプロパティを利用することで取得することができますので、参考までにタブのキャプションを「Sample」に変更し、そのキャプションをメッセージボックスで表示します。

上で利用したユーザーフォームにCommandButton2を追加してサンプルコードを記述しています。

Private Sub CommandButton2_Click()

'選択されているタブのキャプションを取得して
'"Sample"に書き換え、メッセージボックスで表示する
 With TabStrip1.SelectedItem
   .Caption = "Sample"
    MsgBox "選択中のタブは" & .Caption & "です"
 End With

End Sub

実行結果は以下の通りになりますので、ご参考までに。

3.まとめ

タブを切り替えた際の処理や追加は問題ないのですが、「タブを選択する」にはどうしたら良いかという点が簡単ではあるものの忘れやすいので、私自身よく覚えておこうと思います。



この辺りのコントロールは知っておくと何かと便利なことも多いので、何か機会などがあれば是非活用をご検討くださいませ。

以上、タブストリップの追加や選択を行う方法についてでした!今回の記事が何かの参考になれば幸いです。

Ryo

タイトルとURLをコピーしました