[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『リストを複数選択して一つのセルに表示させたい』(まきるへに)
入力規則のリストだと項目が一つしか選択できないですが、それを複数選択したいです。
そして、複数選択した項目を同じセル内に表示させたいです。
元の値が↓だとして
10代女性,10代男性,20代女性,20代男性,30代女性,30代男性,40代女性,40代男性,それ以上,
10代女性と20代女性を選択したら、
10代女性
20代女性
とセル内に表示されるようにしたいのですが、可能でしょうか。
ご教示いただけるとありがたいです。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
リストボックスですと、複数選択可能です。
http://www.excel.studio-kazu.jp/lib/e7a/e7a.html
(カリーニン) 2015/10/08(木) 16:56
フォームのリストボックスよりもActiveXコントロールのリストボックス の方がいいかな。
プロパティのMultiSelectをfmMultiSelectMultiにして、Changeイベントに ↓のように記述してみてください。 使うイベントやコード内容は工夫の余地がありそうです。
また、不慣れなので、フォームのリストボックスでも行けるかもしれません。
Private Sub ListBox1_Change() Dim lb As Object Dim i As Integer Dim r As Range Dim rstr As String Set r = ActiveSheet.Cells(1, 2) rstr = "" For i = 0 To Worksheets(1).OLEObjects("ListBox" & 1).Object.ListCount - 1 If Worksheets(1).OLEObjects("ListBox" & 1).Object.Selected(i) = True Then If rstr <> "" Then rstr = rstr & vbLf rstr = rstr & Worksheets(1).OLEObjects("ListBox" & 1).Object.List(i) End If Next i If rstr <> "" Then r.Value = rstr Set r = Nothing End Sub (カリーニン) 2015/10/08(木) 17:17
リストからの入力規則選択は、あくまで、リストから【1つだけ】選んでセルに入力する機能ですから無理でしょう。 カリーニンさん指摘のリストボックスがいいでしょうね。
追記です。
フォームコントロールのリストボックスでも複数選択設定ができます。 ただし、LinkedCell には、選ばれた行の情報が入りませんので、やはり VBA処理が必要です。
(β) 2015/10/08(木) 17:22
VBA触ったことがないので、どこに何を入れたらいいのか皆目不案内ですが、
これから勉強して入力してみます。
Chargeイベントというのは、コードの表示>Worksheet>chargeで良いでしょうか。
どうやらできそうな方法がある、ということがわかっただけでもありがたいです。
躓いたらまたおうかがいしますので、よろしくお願いいたします。
(まきるへに) 2015/10/08(木) 17:56
>Chargeイベントというのは、コードの表示>Worksheet>chargeで良いでしょうか。
いえ、ListBox1のChangeイベントです。 シートタブを右クリックしてコードの表示を選んだところに、カリーニンさんがアップされたコードを そのままコピペで貼りつければいいですよ。
(β) 2015/10/08(木) 18:03
見返してみると、私のコードちょいといい加減ですね。
Activesheet と Worksheets(1) が混在しています。
また、転記先は
Set r = ActiveSheet.Cells(1, 2)
とアクティブシートのB1セルと決め打ちですので、適宜変更する 必要があります。
ちょっと修正しました。
Private Sub ListBox1_Change()
Dim lb As Object Dim i As Integer Dim r As Range Dim rstr As String Set r = ActiveCell '転記先/アクティブセル rstr = "" For i = 0 To ActiveSheet.OLEObjects("ListBox" & 1).Object.ListCount - 1 If ActiveSheet.OLEObjects("ListBox" & 1).Object.Selected(i) = True Then If rstr <> "" Then rstr = rstr & vbLf rstr = rstr & ActiveSheet.OLEObjects("ListBox" & 1).Object.List(i) End If Next i If rstr <> "" Then r.Value = rstr Set r = Nothing End Sub (カリーニン) 2015/10/08(木) 18:51
フォームツールを使った例です。
シートモジュールに以下のマクロをコピペで貼り付けてください。
フォームツールのリストボックスをシート上に配置し、リストボックスを右クリック、コントロールの書式設定で、 ListFIllRangeに、リストで表示すべき領域を たとえば A1:A10 といったように指定。 あわせて 選択の種類として複数選択または拡張選択を選ぶ。
で、このリストボックスを右クリック、マクロの登録で以下のマクロを登録。
リストボックスで選択するたびに、アクティブセルに結果を転記します。
Sub Test() Dim s As String Dim i As Long
With ListBoxes("リスト 1") '★ 実際の名前に変更 For i = 1 To .ListCount If .Selected(i) Then s = s & vbLf & .List(i) Next End With
ActiveCell.Value = Mid(s, 2)
End Sub
(β) 2015/10/08(木) 19:24
できました!
ちゃんとひとつのセルに複数選択した項目が入りました!
無理かと思っていたので、感動です。
ありがとうございます。
>βさん
あわせて色々アドバイスありがとうございました。
貼り付け場所も・・。
初歩の初歩の質問にも親切にお答えいただき、感謝です。
おかげで、資料を完成させられそうです!
(まきるへに) 2015/10/09(金) 10:44
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.