Excel VBA質問箱 IV

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

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


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

【58665】ユーザーフォームのリストボックス ON 08/11/4(火) 10:49 質問[未読]
【58666】Re:ユーザーフォームのリストボックス kanabun 08/11/4(火) 11:08 発言[未読]
【58667】Re:ユーザーフォームのリストボックス ON 08/11/4(火) 11:25 お礼[未読]

【58665】ユーザーフォームのリストボックス
質問  ON  - 08/11/4(火) 10:49 -

引用なし
パスワード
   よろしくお願い致します

アクセスのリストボックスとの比較で申し訳ないですが


Q1
アクセスであれば
リストボックスの値タイプを、値リスト とし
値リストに、1,2,3 と入力して、
フォームを開くと、リストとして 1、2、3 が表示されます

エクセルでは、
Private Sub UserForm_Initialize()
  Me.ListBox1.MultiSelect = fmMultiSelectSingle
  Me.ListBox1.AddItem "文字列1"
  Me.ListBox1.AddItem "文字列2"
  Me.ListBox1.AddItem "文字列3"
End Sub
としているのですが
リストボックスのプロパティでアクセスのように設定することは出来るのでしょうか


Q2
上記のリストボックスで
Private Sub ListBox1_Click()
  MsgBox Me.ListBox1.Value
End Sub
としているのですが
フォームを実行し、
リストから1つ選択するとmsgboxが表示されるのですが
次に選択すると
1回目の選択が反転したまま、2回目の選択リストが反転され
メッセージが出てから、一回目のリストの反転が戻ります

2回目のリストの選択と同時に、1回目選択のリストの反転を
クリアーしたいのですがどうすればいいのでしょうか

よろしくお願い致します

【58666】Re:ユーザーフォームのリストボックス
発言  kanabun  - 08/11/4(火) 11:08 -

引用なし
パスワード
   ▼ON さん:
こんにちは。

>Q1
>アクセスであれば
>リストボックスの値タイプを、値リスト とし
>値リストに、1,2,3 と入力して、
>フォームを開くと、リストとして 1、2、3 が表示されます

プロパティボックスには Listプロパティがないので、
デザイン時にあらかじめ「1,2,3」のようにセットしておくことは
できないようです。

まぁ、コードで、

Private Sub UserForm_Initialize()
  ListBox1.List = Split("Item 1,Item 2,Item 3,Item 4", ",")
End Sub

くらいでお茶を濁すのかな?


>Q2
>上記のリストボックスで
>Private Sub ListBox1_Click()
>  MsgBox Me.ListBox1.Value
>End Sub
>としているのですが
>フォームを実行し、
>リストから1つ選択するとmsgboxが表示されるのですが
>次に選択すると
>1回目の選択が反転したまま、2回目の選択リストが反転され
>メッセージが出てから、一回目のリストの反転が戻ります
>
>2回目のリストの選択と同時に、1回目選択のリストの反転を
>クリアーしたいのですがどうすればいいのでしょうか

こちらは、AfterUpdateイベントプロシージャに記述したらどうでしょうか?

Private Sub ListBox1_AfterUpdate()
  MsgBox ListBox1.Value

End Sub

【58667】Re:ユーザーフォームのリストボックス
お礼  ON  - 08/11/4(火) 11:25 -

引用なし
パスワード
   ▼kanabun さん こんにちは  いつもありがとうございます

>プロパティボックスには Listプロパティがないので、
>デザイン時にあらかじめ「1,2,3」のようにセットしておくことは
>できないようです。

なるほどです
前々から疑問に思っていたのですが、解決です


>まぁ、コードで、

>Private Sub UserForm_Initialize()
>  ListBox1.List = Split("Item 1,Item 2,Item 3,Item 4", ",")
>End Sub

>くらいでお茶を濁すのかな?

これで、やりたいことが、簡便にできるようになります
助かります ありがとうございます


>こちらは、AfterUpdateイベントプロシージャに記述したらどうでしょうか?
ムム〜・・・ ですね
こちらもこれで解決です

ありがとうございました
今後もよろしくお願い致します

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