| 
    
     |  | その3 シート上アクティブXコントロールのマルチページとリストボックス 
 ・シート上にマルチページの作るには。
 コントロールツールボックスのコントロールの選択の中から、「Micrsoft Forms 2.0 MultiPage」を選んで作成。
 
 ・マルチページの上にリストボックスボタンを作るには。
 デザインモードにしてから、
 マルチページを右クリック → マルチページオブジェクト → 編集
 で、出てきたツールボックスから作る。
 この辺りはフレームjと同じです。
 
 ・ページの増減、タブ名の変更は、タブを右クリックすれば編集できます。
 
 ---------------------------------
 マルチページのページ枚数が4枚、各ページにリストボックスがあったとして。
 
 尚、コードの書き方に With〜End With 使ったり使わなかったり、
 シートから記述してあったり無かったり、、とか、
 リスト項目の作成時に、1つのFor..Nextステートメントの中に「AddItem」、「配列」、「RowSource」
 などごちゃ混ぜに入れてますが、色々なパターンを紹介したいが、区分けして書くのが面倒だったので、節操無くごちゃ混ぜにし、しかもメモ書き状態のままで色々載せてみます。
 全標準モジュールから、シートモジュールで使える??
 余計に解りづらかったらすみません。
 
 注).Pages(i).Controls(0)
 の場合、ページ番号やリストボックスのControls番号が一致していないとエラーになります。
 マルチページに作ったオブジェクトの種類なども注意してください。
 
 
 ・現在選択されているページ番号の取得
 Sub 選択されているページ()
 PGNo = Worksheets("Sheet1").OLEObjects("MultiPage1").Object.Value
 MsgBox Worksheets("Sheet1").OLEObjects("MultiPage1").Object.Pages(PGNo).Caption & vbLf & _
 "選択ページ " & PGNo + 1 & vbLf & _
 ".Value は、" & PGNo
 End Sub
 
 
 ・2ページ目のリストボックスの場合
 Sub リストボックスリスト作成1()
 Dim OBJ As Object
 Application.EnableEvents = False
 For Each OBJ In Worksheets("Sheet1").OLEObjects("MultiPage1").Object.Pages(1).Controls
 If OBJ.Name = "ListBox2" Then
 OBJ.List = Worksheets("Sheet1").Range("C1:C5").Value
 Exit For
 End If
 Next
 Application.EnableEvents = True
 End Sub
 
 
 ・全ページ(4ページ)の場合
 Sub リストボックスリスト作成2()
 'Pagesは、0から
 Dim TB() As String, TB2() As String
 For i = 0 To Sheets("Sheet1").OLEObjects("MultiPage1").Object.Pages.Count - 1
 Select Case i
 Case 0
 '.Value使用
 Worksheets("Sheet1").OLEObjects("MultiPage1").Object.Pages(i).Controls(0).List = Range("A1:A10").Value
 Case 1
 'AddItem
 For ii = 1 To 10
 Worksheets("Sheet1").OLEObjects("MultiPage1").Object.Pages(i).Controls(0).AddItem Cells(ii, 2).Value
 Next
 Case 2
 '配列使用(1次元、2次元可)
 'ReDim TB(1 To 10, 1 To 1)
 ReDim TB2(1 To 10)
 For ii = 1 To 10
 'TB(ii, 1) = Cells(ii, "C").Value
 TB2(ii) = Cells(ii, "C").Value
 Next
 Worksheets("Sheet1").OLEObjects("MultiPage1").Object.Pages(i).Controls(0).List = TB2
 Erase TB2
 Case 3
 'RowSource使用
 Worksheets("Sheet1").OLEObjects("MultiPage1").Object.Pages(i).Controls(0).RowSource = "Sheet1!A15:A20"
 End Select
 Next
 End Sub
 
 
 ・リストボックス内容消去
 Sub 全ページListBox消し()
 With Worksheets("Sheet1").OLEObjects("MultiPage1").Object
 For i = 0 To .Pages.Count - 1
 'ListBoxのIndexが、全て0ならこれで良い。
 '.Pages(i).Controls(0).Object.Clear
 For ii = 0 To .Pages(i).Controls.Count - 1
 If TypeName(.Pages(i).Controls(ii)) = "ListBox" Then
 '↓ RowSource設定されていた場合を考えて入れた。
 .Pages(i).Controls(ii).RowSource = vbNullString
 '注)Clearは、RowSourceで設定されていた場合は、エラーになる。
 .Pages(i).Controls(ii).Object.Clear
 End If
 Next
 Next
 End With
 End Sub
 
 
 ・コンボボックスのリスト作成
 Sub コンボボックスリスト作成直書き()
 '配列仕様(注)Pagesは、0から
 Dim CbTb As Variant
 CbTb = Array("Combo_01", "Combo_02", "Combo_03", "Combo_04", "Combo_05")
 Worksheets("Sheet1").OLEObjects("MultiPage1").Object.Pages(0).Controls("ComboBox1").Object.Value = ""
 Worksheets("Sheet1").OLEObjects("MultiPage1").Object.Pages(0).Controls("ComboBox1").Object.List = CbTb
 'X Worksheets("Sheet1").OLEObjects("MultiPage1").Object.Pages(0).Controls("ComboBox1").Object.FontSize = "9pt MS Pゴシック"
 Erase CbTb
 
 Worksheets("Sheet1").OLEObjects("MultiPage1").Object.Pages(2).Controls("ComboBox2").Object.Value = ""
 Worksheets("Sheet1").OLEObjects("MultiPage1").Object.Pages(2).Controls("ComboBox2").RowSource = "Sheet1!B14:B20"
 End Sub
 
 
 ・コンボボックス内容の消去
 Sub コンボボックスリスト消し直書き()
 '(注)Pagesは、0から、.Objectは、無くても動いた。
 Worksheets("Sheet1").OLEObjects("MultiPage1").Object.Pages(0).Controls("ComboBox1").Value = ""
 Worksheets("Sheet1").OLEObjects("MultiPage1").Object.Pages(0).Controls("ComboBox1").RowSource = ""
 Worksheets("Sheet1").OLEObjects("MultiPage1").Object.Pages(0).Controls("ComboBox1").Clear
 
 Worksheets("Sheet1").OLEObjects("MultiPage1").Object.Pages(2).Controls("ComboBox2").Object.Value = ""
 Worksheets("Sheet1").OLEObjects("MultiPage1").Object.Pages(2).Controls("ComboBox2").RowSource = ""
 Worksheets("Sheet1").OLEObjects("MultiPage1").Object.Pages(2).Controls("ComboBox2").Object.Clear
 
 PGNo = Worksheets("Sheet1").OLEObjects("MultiPage1").Object.Value
 MsgBox "選択ページ " & PGNo + 1 & vbLf & _
 ".Value は、" & PGNo & vbLf & _
 Worksheets("Sheet1").OLEObjects("MultiPage1").Object.Pages(PGNo).Caption
 End Sub
 
 
 ・選択されたオプションボタン名の取得
 Sub オプションボタン取得()
 '2Pege (注)Pagesは、0から
 Dim Flg As Boolean
 With Worksheets("Sheet1").OLEObjects("MultiPage1").Object.Pages(2)
 For i = 0 To .Controls.Count - 1
 If TypeName(.Controls(i)) = "OptionButton" Then
 rtgh = .Controls(i).Value
 If .Controls(i).Value Then
 No = i
 Flg = True
 End If
 End If
 Next
 If Flg Then
 'i を使うなら、Forで、1プラスされるから -1する。
 MsgBox .Caption & vbLf & _
 .Controls(No).Caption
 Else
 MsgBox "OptionButtonチェック無。"
 End If
 End With
 End Sub
 
 
 ・テキストぼっクの内容取得と消去
 Sub テキストボックス()
 With Worksheets("Sheet1").OLEObjects("MultiPage1").Object.Pages(0)
 MsgBox .Controls("TextBox1").Object.Value & vbLf & _
 "メッセージボックス閉じた後消します。"
 .Controls("TextBox1").Object.Value = ""
 End With
 End Sub
 
 
 全然まとまってませんが、大体こんな感じだということでお願いします。
 
 フレーム、マルチページ上に作ったCommandButtonのコードは、わかりません。
 クリックイベントも無いようですし、マクロ登録できるのかも解りませんでした。
 
 |  |