目安箱 IV

目安箱投稿のルールはこちらをごらんください。
ご意見は電子メールで承っています。
「目安箱」は質問禁止です。技術的な質問はそれぞれの質問箱へどうぞ。

迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。

  新規投稿 ┃ツリー表示 ┃一覧表示 ┃トピック表示 ┃検索 ┃設定 ┃ホーム  
173 / 277 ←次へ | 前へ→

【116】シート上アクティブXコントロールのマルチページ(MultiPage)
Excel  Jaka  - 05/10/14(金) 10:47 -

引用なし
パスワード
   その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のコードは、わかりません。
クリックイベントも無いようですし、マクロ登録できるのかも解りませんでした。

3,797 hits

【112】シート上のアクティブX(ActivX)コントロールについて Jaka 05/10/11(火) 11:35 Excel[未読]
【113】シート上アクティブXコントロールのフレーム... Jaka 05/10/11(火) 11:43 Excel[未読]
【115】フレームのバックカラー、フォントカラー変更... Jaka 05/10/14(金) 10:42 Excel[未読]
【114】シート上アクティブXコントロールのタブスト... Jaka 05/10/11(火) 12:29 Excel[未読]
【116】シート上アクティブXコントロールのマルチペ... Jaka 05/10/14(金) 10:47 Excel[未読]

  新規投稿 ┃ツリー表示 ┃一覧表示 ┃トピック表示 ┃検索 ┃設定 ┃ホーム  
173 / 277 ←次へ | 前へ→
ページ:  ┃  記事番号:   
0
(SS)C-BOARD v3.8 is Free