|
▼tonton さん:
こんばんは。
>ユーザーフォームのマルチページ(5ページ)にリストボックスを
>それぞれ作成しました。
>各ページごとに別シートのセル(a1:a10)をリストアップしています。
>指定したセルに、選択したリスト(a3)の右隣のセル(b3)を参照した
>いのです。
>
>ListBox名.Listindex.Valueを使えばいいのはわかるのですが、
>オブジェクトを「今選択しているリストボックス」とするには
>どのようにすればいいのでしょうか。
仮に以下のユーザーフォームを想定します。
ユーザーフォーム(Userfrom1)
マルチページコントロール(MultiPage1)を一つ配置
説明の都合上、ページは2ページとしておきましょう
Page1にリストボックス(Listbox1)を配置
Listbox1のRowsourceプロパティに"Sheet1!A1:A10"を予め設定。
Page2にリストボックス(Listbox2)を配置
Listbox2のRowsourceプロパティに"Sheet2!A1:A10"を予め設定。
コマンドボタン(CommandButton1)を一つ設定
例は、コマンドボタンがクリックされたら、
>選択したリスト(a3)の右隣のセル(b3)を参照
ここでは、メッセージボックスで表示するようにしました。
標準モジュールで
'======================================
Sub test()
UserForm1.Show
End Sub
当該ユーザーフォームモジュールで
'======================================
Private Sub UserForm_Initialize()
With MultiPage1
For idx = 0 To .Pages.Count - 1
.Pages(idx).Controls("listbox" & idx + 1).ListIndex = 0
Next
End With
End Sub
'==========================================
Private Sub CommandButton1_Click()
With MultiPage1
idx = .Pages(.Value).Controls("listbox" & .Value + 1).ListIndex + 1
rng = .Pages(.Value).Controls("listbox" & .Value + 1).RowSource
MsgBox Range(rng).Cells(idx).Offset(0, 1).Value
' これでリストボックスでセルA3に該当するメンバが選択されたらB3の内容を
' 表示します
End With
End Sub
要点は、
・MultiPage1.Valueで、アクティブなページインデックスを取得する。
・Controlsプロパティを使用して、そのページに配置されたリストボックスを取得する。
の2点だと思いますが、上記のコードは、さらに
ページインデックスとリストボックスのオブジェクト名の最後の数字との間に
一定の関係(ページインデックス+1=リストボックスのオブジェックト名の最後の数字)
を持たせています。
|
|