HOME > 即効テクニック > Excel VBA > ページ設定関連のテクニック > MultiPageの活用−動的なページとコントロールの追加




(Excel 97/2000)
  1. ページの追加方法
  2. ページへのコントロールの追加方法
  3. 追加したコントロールのイベント処理
  4. ページ内外のコントロール間でのデータのやり取り
などが問題になります。 サンプルではワークシート数分のページをMultiPageに配置し、各ページにコマンドボタンを配置します。コマンドボタンのクリックイベント処理にはクラスを利用し、クリック時にはページの名称を取得し、ページ外のテキストボックスに転記します。 (前提) ・UserForm1, MultiPage1、TextBox1 ・クラスモジュール(Class1) 
Dim Cls() As Class1

Private Sub UserForm_Initialize()

    Dim NumOfAdd As Integer
    Dim i As Integer, j As Integer
    Dim Ctrl As Control
    Dim P As Page

    With MultiPage1
       'シート数 - デフォルトのページ数分だけページの追加
        NumOfAdd = Worksheets.Count - .Pages.Count
        If NumOfAdd < 1 Then Exit Sub
        For i = 1 To NumOfAdd
        Next i

        For Each P In .Pages
            Set Ctrl = P.Controls.Add("Forms.CommandButton.1")

            With Ctrl
                .Top = 50: .Left = 100: .Width = 100
                .Caption = Ctrl.Name
            End With

            ReDim Preserve Cls(j)
            Set Cls(j) = New Class1
            Set Cls(j).Cmd = Ctrl
            j = j + 1

    End With

End Sub

Private Sub UserForm_QueryClose _
    (Cancel As Integer, CloseMode As Integer)
    Erase Cls
End Sub

Public WithEvents Cmd As MSForms.CommandButton

Private Sub Cmd_Click()
    With UserForm1
        .TextBox1.Value = .MultiPage1.SelectedItem.Name
    End With

End Sub