2010年11月11日

UserFormsオブジェクト12.MultiPage

マルチページコントロール[ MultiPage* ]

 一つのVBAProject(VBAプロジェクト)には、複数の[ UserForm* ]を作ることができます。ユーザーの操作によって、まるっきりデザインの異なるユーザーフォームが、必要なときもあります。反対に、[  UserForm* ]の外枠は変えずに、マクロ同様、一連の動きとして全く別の作業を行いたい場合は、マルチページコントロールを使うと、スムーズに作業を進める事ができます。例えば、Excelのメニューバーにある[ツール][オプション]画面です。全く異なるデザインを持ったページが沢山あります。でも、[オプション]という括りの中では、1つにまとめておきたい設定情報、項目ばかりです。そんなときには、Excelのオプションメニューのように、カテゴリを同じにした専用のページを作ると良いかもしれませんね。

  • Private Sub MultiPage1_Change()
      With MultiPage1
        If .Value = 1 Then
          CommandButton1.Caption = .Page1.Caption & "のコマンドボタンです。"
        ElseIf .Value = 2 Then
          CommandButton2.Caption = .Page2.Caption & "のコマンドボタンです。"
        Else
          CommandButton3.Caption = .Page3.Caption & "のコマンドボタンです。"
        End If
      End With
    End Sub
     
    [ MultiPage1 ]でアクティブになっているページ名を[ CommandButton* ]のキャプションに変更するマクロです。役に立たない例ですが、[ MultiPageコントロール ]は、[ Pagesコレクション ]のコンテナで、その中に[ Page*オブジェクト ]があります。
     
    タブストリップコントロールの時は、タブを切り替えても、その上に配置したコントロール同じものを使い、データを切り替えるために使いました。マルチページコントロールでは、ページが変わると、コントロールもプロシージャも新たに用意する必要があり、同じ[ MultiPage* ]の中で、同じ名前を持つコントロールを配置することはできません。 
     
    一つの[ UserForm ]ユーザーフォームズオブジェクトに、たくさんのコントロールを配置することもあります。チェーンストア伝票や、財務会計マクロなどは、商品名やコード・価格欄など、ナンバリングされるにしろ、同じ項目が表のように沢山並びます。例えば、ページを切り替えるように、入力用ページとデータの保守用ページなどと、複数のページに分けると便利です。
     
  • [ MultiPage1 ]の[ Page1 ]には、以下の[ Btn_Mnu入力用 ]と[ Btn_Mnu保守用 ]のボタンが配置されています。
     
    Private Sub Btn_Mnu入力用_Click()
      MultiPage1.Value = 2
      '入力用コントロールのある2ページ目に、画面を変移します。
    End Sub
    Private Sub Btn_Mnu保守用_Click()
      MultiPage1.Value = 3
      '保守用コントロールのある3ページ目に、画面を変移します。
    End Sub
posted by くきお at 11:10| Comment(0) | UserFormオブジェクト | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。