Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4925 / 13646 ツリー ←次へ | 前へ→

【53558】リストボックスについて初歩的な質問。。 mana 08/1/22(火) 17:18 質問[未読]
【53562】Re:リストボックスについて初歩的な質問。。 ichinose 08/1/22(火) 20:08 発言[未読]
【53569】Re:リストボックスについて初歩的な質問。。 mana 08/1/22(火) 22:45 お礼[未読]
【53571】Re:リストボックスについて初歩的な質問。。 ichinose 08/1/22(火) 23:19 発言[未読]
【53573】Re:リストボックスについて初歩的な質問。。 mana 08/1/23(水) 0:13 お礼[未読]

【53558】リストボックスについて初歩的な質問。。
質問  mana  - 08/1/22(火) 17:18 -

引用なし
パスワード
   ごめんなさい。。初心者の初歩的な質問なのですが。。
ユーザーフォームにWSから引用したリストボックスを2つ挿入したいのですが、
片方(2個目)だけリストが表示されません。。泣
プログラムは定義などの後、次のを二回繰り返して組みました
Private Sub ListBox1_Click()
n = ListBox1.ListIndex
TextBox1.Text = Worksheets("1.").Cells(n + 2, 2)
M1 = CInt(Worksheets("1.").Cells(n + 2, 2))
End Sub
Private Sub UserForm_Initialize()
Worksheets("1.").Activate
ListBox1.RowSource = "A2:A5"
TextBox1.Text = Range("b2")
M1 = CInt(Range("b2"))
ListBox1.ListIndex = 0
End Sub
(二回目はListBox2などに変更)

たぶん、二回目のUserForm_Initialize()ってところが悪いのだと思います。。(?)

二個目のリストも表示するにはどうしたらよいでしょうか?
対処法等をご存じの方がいたら教えてください。。よろしくお願いします。。><;

【53562】Re:リストボックスについて初歩的な質問...
発言  ichinose  - 08/1/22(火) 20:08 -

引用なし
パスワード
   ▼mana さん:
こんばんは。

>ユーザーフォームにWSから引用したリストボックスを2つ挿入したいのですが、
>片方(2個目)だけリストが表示されません。。泣
>プログラムは定義などの後、次のを二回繰り返して組みました

ちょっと、意味がわからない箇所がありますが・・・。


>Private Sub ListBox1_Click()
>n = ListBox1.ListIndex
>TextBox1.Text = Worksheets("1.").Cells(n + 2, 2)
>M1 = CInt(Worksheets("1.").Cells(n + 2, 2))
>End Sub
>Private Sub UserForm_Initialize()
>Worksheets("1.").Activate
>ListBox1.RowSource = "A2:A5"
>TextBox1.Text = Range("b2")
>M1 = CInt(Range("b2"))
>ListBox1.ListIndex = 0
'ここでListbox2についてもメンバを設定しないとね!!
ListBox2.RowSource = "C2:C5" 'のように


>End Sub
>(二回目はListBox2などに変更)
>
>たぶん、二回目のUserForm_Initialize()ってところが悪いのだと思います。。(?)
>
>二個目のリストも表示するにはどうしたらよいでしょうか?
>対処法等をご存じの方がいたら教えてください。。よろしくお願いします。。><;

【53569】Re:リストボックスについて初歩的な質問...
お礼  mana  - 08/1/22(火) 22:45 -

引用なし
パスワード
   ▼ichinose さん:

こんばんは◎ いちのせさん、回答ありがとうございます。

2個のリストボックスのプログラムを次のように直しました

Private Sub ListBox1_Click()
(途中略)
End Sub

Private Sub ListBox2_Click()
n = ListBox2.ListIndex
TextBox2.Text = Worksheets("1.").Cells(n + 2, 2)
M2 = CInt(Worksheets("1.").Cells(n + 2, 2))
End Sub
Private Sub UserForm_Initialize()
Worksheets("1.").Activate
ListBox2.RowSource = "C2:C5"←ここ直した
TextBox2.Text = Range("d2")
M1 = CInt(Range("d2"))
ListBox2.ListIndex = 0
End Sub

やっぱり二個目の UserForm_Initialize()ってところで引っかかるみたいです。。
名前が適切でないとかヘルプで出てきます。。汗
..かといってUserForm2_Initialize()とかに勝手に変えてしまうとやっぱ動きません。。
この場合はどうしたら二つのリストボックスにそれぞれ選択肢を表示することができるのでしょうか?
ホントに初心者で、わからないことだらけでごめんなさい。。。
ご存じでしたら、ご指導お願いします。。。

【53571】Re:リストボックスについて初歩的な質問...
発言  ichinose  - 08/1/22(火) 23:19 -

引用なし
パスワード
   ユーザーフォーム上に配置した二つのリストボックスに両方に
指定のメンバを設定する

ということなら・・・。

新規ブックにて(あくまでも新規ブックですよ!!)。

ユーザーフォームを一つ作成してください(UserForm1)
   二つのリストボックスを配置してください
   ListBox1  ListBox2


ではコードです。

標準モジュールに
'===================================================
Sub main()
  With ActiveSheet
    .Range("a1:a5").Formula = "=char(row()+64)"
    .Range("b1:b10").Formula = "=char(row()+96)"
    MsgBox "A列は、ListBox1のメンバ、B列は、ListBox2のメンバ"
    End With
  UserForm1.Show
End Sub


UserForm1のモジュールには

'=============================================================
Option Explicit
Private Sub UserForm_Initialize()
  With ListBox1
    .RowSource = Range("a1", Cells(Rows.Count, "a").End(xlUp)).Address
    .ListIndex = 0
    End With
  With ListBox2
    .RowSource = Range("b1", Cells(Rows.Count, "b").End(xlUp)).Address
    .ListIndex = 0
    End With
End Sub

として、mainを実行してみてください。
いかがですか? 

ListBox1 ListBox2の両方にメンバが
登録されていませんか?

これでよいなら、後はご自分が抱えている問題のブックに上記のコードを

参考に修正を加えてみてください。

【53573】Re:リストボックスについて初歩的な質問...
お礼  mana  - 08/1/23(水) 0:13 -

引用なし
パスワード
   ▼ichinose さん:

親切に教えてくださってありがとうございます◎
さっそく試してみますね。。

頼りになる人に出会えてよかったです ≧≦* 

4925 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free