いつもお世話になっております
下記のコードは
ListBox1をClickしたときに
ListBox2に担当のお客様が表示されるというものです。
ここでListBox1をマルチセレクトしたときに
ListBox2に表示させることは可能でしょうか
添付ファイルを2回に分けます。
わかる方おしえてくれませんでしょうか
無理なのでしょうか。
よろしくお願いいたします。
Private Sub ListBox1_Click()
Dim dic As Object
Set dic = CreateObject("Scripting.dictionary")
ListBox2.Clear
For i = 2 To Cells(Rows.Count, 2).End(xlUp).Row
If Cells(i, "H").Value = ListBox1.List(ListBox1.ListIndex) Then
If Not dic.Exists(Cells(i, "H").Value) Then
With ListBox2
.AddItem ""
.List(.ListCount - 1, 0) = Cells(i, 3).Value
End With
End If
End If
Next
Set dic = Nothing
End Sub
Private Sub UserForm_initialize()
With ListBox1
.AddItem "近藤"
.AddItem "工藤"
.AddItem "遠藤"
.AddItem "加藤"
End With
End Sub
No.2ベストアンサー
- 回答日時:
clickイベントはマルチセレクトの場合、発生しないので
Private Sub ListBox1_Click()を
Private Sub ListBox1_Change() に変えます。
以下のようにようにしてください。
不明点があれば、補足してください。
----------------------------------------------------
Private Sub ListBox1_Change()
Dim dic As Object
Dim i As Long
Set dic = CreateObject("Scripting.dictionary")
ListBox2.Clear
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then
dic(ListBox1.List(i)) = True
End If
Next
For i = 2 To Cells(Rows.Count, 2).End(xlUp).Row
If dic(Cells(i, "H").Value) = True Then
With ListBox2
.AddItem ""
.List(.ListCount - 1, 0) = Cells(i, 3).Value
End With
End If
Next
Set dic = Nothing
End Sub
No.5
- 回答日時:
こんばんは
dictionaryのロジックはすでに指摘されている通り
UserForm_initializeで実行した方が理に適っています
担当者別データ(担当者リスト)が欲しく、重複担当者の値が有る列対象なのでListBox1.AddItem(作成時)が理想かと
.AddItem "近藤" などとするなら dicの使用意図がわからないです
選択されている値は一意ですよね・・(一意でないと困りけれど)
あと
ListBox1.MultiSelect = fmMultiSelectMulti も忘れずに・・
これも指摘されていますね
Private Sub ListBox1_Click()についてはMultiSelectにするとClickイベントが上手く動かないので Private Sub ListBox1_Change() にします
ListBox1_Changeの内容ですが
先ず ListBox2.Clear
ListBox1が選択されている値を使うのでListBox1リストをループ
ListBox1.Selected(インデックス) = True で
選択されているかを判断して選択されていれば
シートの対応する範囲をループ処理をして
ListBox1.Selected(インデックス)=Hセル ならば
ListBox2.List(j, 0) にListBox1.Selected(インデックス)の値
n = n + 1 ()ヒットごとに
ListBox2.List(j, n) = 該当Cセルテキスト
jはSelected(インデックス) = True ごとに j = j + 1
ListBox2.ColumnCountの設定は少し工夫が必要かな・・
コードを書いた方が判り易いと思いますが・・
取り合えず、、下手な日本語で書いて見ましたがめどは立ちますでしょうか
不明な点は追記してください‥Unique関数って使えますか?
すぐに閉じると間違い訂正や回答しようとしている場合に出来ない場合があります
No.4
- 回答日時:
No.3 です。
訂正。
>ListBox1を弄るたびにdicを組み替えるのは確かにデータ数が多ければ有利かもですけど、
ListBox1を弄るたびにdicを組み替えるのは確かにデータ数が少なければ有利かもですけど、
でした。
選択する項目のON・OFFの度にイベント発生しませんでしたっけ。
それなら選択後にCommandButtonを使う等の方が良いかなと。
今回とは逆にListBox2をクリックし、呼び込みをするって案もありそう。
No.3
- 回答日時:
個人的には、
Private Sub UserForm_initialize()
にてdicに担当をkey・名前セルをitemとして格納する。
その後keysを基にListBox1.AddItem~を追加作成。
あとはListBox1で選択された値を基にListBox2にdic("担当者名")のitemを吐き出す。
とかかな?
ListBox1を弄るたびにdicを組み替えるのは確かにデータ数が多ければ有利かもですけど、吐き出す回数が多いなら先に入れてしまうって方法は以前回答したと思いましたけど、近年回答してもスル~でしたので眺めるだけにしてました。
でも、
With ListBox2
.AddItem ""
.List(.ListCount - 1, 0) = Cells(i, 3).Value
End With
これって複数列を入れるって事の前段階な気もしちゃいますけど。
itemには複数のデータを格納できますって回答しようとして切られちゃったからかな?
key:item = 1:1に限らず(= 1:多 ですよ)。
No.1
- 回答日時:
元々得たい結果が不明ですが、1担当につき1顧客で宜しいのですかね?
>If Not dic.Exists(Cells(i, "H").Value) Then
にしては変数:dicは使われていないのに、存在の有無を判定してますけど?
マルチセレクトの場合、全てのリストを調べ選択されているかどうかを比較し処理判断する必要があるのでは?
2~3年前にそんな質問上げてませんでしたっけ?(当時のIDは違いましたけど)。
うろ覚えなので勘違いならすいません。
https://kosapi.com/post-4040/
選択されてたらその値でH列にフィルタをかけて、可視されている顧客名を順に取得するとか?
これは近年見かけたような気もします。
別の質問で別の回答者が仰ってたと思いましたが、既に作成できるスキルはあると思うのですが何をどう使うかって点は、そのやりたい事を検索してみるとヒントは見つかるかなと。
あとは過去の質疑の回答と照らし合わせ応用していく。
単に回答を得て動いたら質問を閉じるってやり方では、伸びないと思いますよ。
と、この時間は寝ぼけているので回答がメチャクチャかもしれませんけど。
まぁ指がメチャクチャに潰れるよりは良いですが?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
複数選択のListBoxでClickイベントが拾えません
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
異常でしょうか?タマネギを炒...
-
Illustratorでマンセル値を使う...
-
スポンジやカステラに何故使っ...
-
jwcadの印刷
-
エクセルでA3の資料作成(初心者)
-
「いく」と「ゆく」の違い
-
PDF編集で入力した文字が印刷で...
-
印刷ブローカーって何ですか?
-
ラクス(楽々明細など)とラク...
-
幼児雑誌の紙ふろく
-
Tシャツのプリントの上から色...
-
ビジネスメール
-
EpsonのEP-808AWで名刺は印刷で...
-
wordのスペルチェックと文章校...
-
雑誌広告の制作で、「3点出し...
-
プリントTシャツを10枚程度を安...
-
雑誌編集部の忙しい時期
-
余ったプリント類について
-
「校正」の意味が良くわかりません
-
工事写真の厚さの記号は t? D?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
色つきわたあめの作り方
-
60進法のことは何といいますか?
-
白はカウント?
-
異常でしょうか?タマネギを炒...
-
グレースケールK100とCMYKのK10...
-
壁紙(クロス)施工について
-
赤いハム ソーセージは何故無...
-
CMYK?の順番って・・・
-
高校3年生です。面接練習の際、...
-
キンアカはDICで表すと・・・・?
-
Illustratorでマンセル値を使う...
-
単語帳みたいなやつ
-
スポンジやカステラに何故使っ...
-
指定色PANTONEのCMYK値を知りたい
-
シルク印刷の剥離強度低下の原...
-
印刷時のカラー指定:CMYKの「...
-
濃口しょうゆと薄口しょうゆの...
-
レストランや食堂の入口に、メ...
-
「印刷会社はDICカラーを使用し...
-
JANコードで、読み取りが可能な...
おすすめ情報
添付はデータの表です。
よろしくお願いいたします。
下記の部分のところなんとかすれば
いけるのかもしれないのですが
If Cells(i, "H").Value = ListBox1.List(ListBox1.ListIndex) Then