いつもお世話になっております
下記のコードは
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.1
- 回答日時:
元々得たい結果が不明ですが、1担当につき1顧客で宜しいのですかね?
>If Not dic.Exists(Cells(i, "H").Value) Then
にしては変数:dicは使われていないのに、存在の有無を判定してますけど?
マルチセレクトの場合、全てのリストを調べ選択されているかどうかを比較し処理判断する必要があるのでは?
2~3年前にそんな質問上げてませんでしたっけ?(当時のIDは違いましたけど)。
うろ覚えなので勘違いならすいません。
https://kosapi.com/post-4040/
選択されてたらその値でH列にフィルタをかけて、可視されている顧客名を順に取得するとか?
これは近年見かけたような気もします。
別の質問で別の回答者が仰ってたと思いましたが、既に作成できるスキルはあると思うのですが何をどう使うかって点は、そのやりたい事を検索してみるとヒントは見つかるかなと。
あとは過去の質疑の回答と照らし合わせ応用していく。
単に回答を得て動いたら質問を閉じるってやり方では、伸びないと思いますよ。
と、この時間は寝ぼけているので回答がメチャクチャかもしれませんけど。
まぁ指がメチャクチャに潰れるよりは良いですが?
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.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.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関数って使えますか?
すぐに閉じると間違い訂正や回答しようとしている場合に出来ない場合があります
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
複数選択のListBoxでClickイベントが拾えません
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
壁紙(クロス)施工について
-
色つきわたあめの作り方
-
60進法のことは何といいますか?
-
シルク印刷の剥離強度低下の原...
-
Illustratorでマンセル値を使う...
-
スポンジやカステラに何故使っ...
-
白はカウント?
-
海外で発行している色見本帳が...
-
グレースケールK100とCMYKのK10...
-
CMYK?の順番って・・・
-
DIC650くらいの色?
-
赤いハム ソーセージは何故無...
-
カラーする時美容室によってで...
-
薄口醤油
-
CMYKの色の確認について質問です
-
マンセル値を使ったデザインの...
-
色つき綿菓子
-
DIC 色
-
オーブンで肉を焼いたときの火...
-
エクセルでA3の資料作成(初心者)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
色つきわたあめの作り方
-
60進法のことは何といいますか?
-
白はカウント?
-
異常でしょうか?タマネギを炒...
-
グレースケールK100とCMYKのK10...
-
壁紙(クロス)施工について
-
赤いハム ソーセージは何故無...
-
CMYK?の順番って・・・
-
キンアカはDICで表すと・・・・?
-
高校3年生です。面接練習の際、...
-
Illustratorでマンセル値を使う...
-
単語帳みたいなやつ
-
スポンジやカステラに何故使っ...
-
指定色PANTONEのCMYK値を知りたい
-
シルク印刷の剥離強度低下の原...
-
印刷時のカラー指定:CMYKの「...
-
濃口しょうゆと薄口しょうゆの...
-
「印刷会社はDICカラーを使用し...
-
JANコードで、読み取りが可能な...
-
レストランや食堂の入口に、メ...
おすすめ情報
添付はデータの表です。
よろしくお願いいたします。
下記の部分のところなんとかすれば
いけるのかもしれないのですが
If Cells(i, "H").Value = ListBox1.List(ListBox1.ListIndex) Then