Excel VBA質問箱 IV

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

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


6617 / 13644 ツリー ←次へ | 前へ→

【44155】2つのリストボックスから複数選択 Help me!! 06/11/6(月) 17:14 質問[未読]
【44156】Re:2つのリストボックスから複数選択 ハチ 06/11/6(月) 17:32 発言[未読]
【44160】Re:2つのリストボックスから複数選択 Help me!! 06/11/6(月) 21:13 質問[未読]
【44168】Re:2つのリストボックスから複数選択 ハチ 06/11/7(火) 9:16 回答[未読]
【44169】Re:2つのリストボックスから複数選択 Help me!! 06/11/7(火) 10:41 質問[未読]
【44188】Re:2つのリストボックスから複数選択 ハチ 06/11/7(火) 16:05 発言[未読]
【44194】Re:2つのリストボックスから複数選択 Help me!! 06/11/8(水) 7:55 お礼[未読]
【44195】Re:2つのリストボックスから複数選択 ハチ 06/11/8(水) 8:33 発言[未読]

【44155】2つのリストボックスから複数選択
質問  Help me!!  - 06/11/6(月) 17:14 -

引用なし
パスワード
   いつもここで本当に助けられている者です。
今回も何卒よろしくお願いします。

リストボックスのマクロ作成に苦戦しております。
苦戦と言うよりもどういうメソッド?プロパティ?があるのかさっぱり解りません。

やりたい事

ワークブックの中に2つのシート "日報"と"データ"があります。
"データ"のシートには、得意先名(A列)と担当者番号(B列)のデータが5000行ほど入っています。

"日報"シート上に、リストボックスを二つ設置して、一つ目のリストボックスで担当者番号を選択すると、その担当者番号の得意先名のリストが2つめのリストボックスに表示され、リストから複数選択してA3,B3,C3,D3,E3ここで折り返してA4,B4,C4,D4,E4・・・と選択されたすべてをABCDE列内に貼り付けたいのです。

わかりにくいので図を書きます

例えばユーザーがリストから14個選択してOKボタンを押した場合

   A      B      C       D       E
1                             日付
2              日報
3 得意先名  得意先名   得意先名   得意先名   得意先名
4 得意先名  得意先名   得意先名   得意先名   得意先名
5 得意先名  得意先名   得意先名   得意先名   
6              
7 報告
8 今日はどこどこにいってなになにをしました。

10
11
             
という感じにしたいのです。

解りづらい点がございましたらご指摘下さい。

何卒ご教授のほどよろしくお願いします。

【44156】Re:2つのリストボックスから複数選択
発言  ハチ  - 06/11/6(月) 17:32 -

引用なし
パスワード
   ▼Help me!! さん:
>いつもここで本当に助けられている者です。
>今回も何卒よろしくお願いします。
>
>リストボックスのマクロ作成に苦戦しております。
>苦戦と言うよりもどういうメソッド?プロパティ?があるのかさっぱり解りません。
>
>やりたい事
>
>ワークブックの中に2つのシート "日報"と"データ"があります。
>"データ"のシートには、得意先名(A列)と担当者番号(B列)のデータが5000行ほど入っています。

このデータは、空白なくすべてに得意先=担当者 と入力されているんですか?
また、担当者でSortしておく、セルの範囲に名前を付けることは可能ですか?

>
>"日報"シート上に、リストボックスを二つ設置して、一つ目のリストボックスで担当者番号を選択すると、その担当者番号の得意先名のリストが2つめのリストボックスに表示され、リストから複数選択してA3,B3,C3,D3,E3ここで折り返してA4,B4,C4,D4,E4・・・と選択されたすべてをABCDE列内に貼り付けたいのです。

担当者も複数選択する可能性があるんでしょうか?
複数選択した場合の得意先は2つの担当者を合わせた
得意先がListBoxに表示されるんですか?

>
>わかりにくいので図を書きます
>
>例えばユーザーがリストから14個選択してOKボタンを押した場合
>
>   A      B      C       D       E
>1                             日付
>2              日報
>3 得意先名  得意先名   得意先名   得意先名   得意先名
>4 得意先名  得意先名   得意先名   得意先名   得意先名
>5 得意先名  得意先名   得意先名   得意先名   
>6              
>7 報告
>8 今日はどこどこにいってなになにをしました。
>9
>10
>11
>             
>という感じにしたいのです。
>
>解りづらい点がございましたらご指摘下さい。

で、どこまでは出来て、わからないのはどの部分ですか?
ListBoxで選択された担当者の得意先をListBox2に表示するとこですか?
ListBoxで複数選択(MultiSelectにしておく必要がありますが)得意先を
5列で折り返してセルに入れるところですか?

【44160】Re:2つのリストボックスから複数選択
質問  Help me!!  - 06/11/6(月) 21:13 -

引用なし
パスワード
   ▼ハチ さん:
すいません。説明不足でした。

>このデータは、空白なくすべてに得意先=担当者 と入力されているんですか?
>また、担当者でSortしておく、セルの範囲に名前を付けることは可能ですか?

データは担当者でソートしてありますし、セルの範囲に名前もついています。
名前は「選択データ」という名前にしてあります。


>担当者も複数選択する可能性があるんでしょうか?

ありません。ひとつしか選びません。


>で、どこまでは出来て、わからないのはどの部分ですか?
>ListBoxで選択された担当者の得意先をListBox2に表示するとこですか?
>ListBoxで複数選択(MultiSelectにしておく必要がありますが)得意先を
>5列で折り返してセルに入れるところですか?

Listboxを二つ作っただけです。どうやってその二つのlistboxを連携させればいいのかわかりません。listboxのオプションのmultiselectは2番のfm multiselect Extendedに設定してあります。
もちろんその後の5列でおりかえす方法もわかりませんし、その前にlistboxのデータをどうやって取得するのかもわかりません。
listbox.valueではうまくいきません。

何卒、ご教授のほどよろしくお願いします!

【44168】Re:2つのリストボックスから複数選択
回答  ハチ  - 06/11/7(火) 9:16 -

引用なし
パスワード
   ▼Help me!! さん:

>>で、どこまでは出来て、わからないのはどの部分ですか?
>>ListBoxで選択された担当者の得意先をListBox2に表示するとこですか?
>>ListBoxで複数選択(MultiSelectにしておく必要がありますが)得意先を
>>5列で折り返してセルに入れるところですか?
>
>Listboxを二つ作っただけです。どうやってその二つのlistboxを連携させればいいのかわかりません。listboxのオプションのmultiselectは2番のfm multiselect Extendedに設定してあります。

ListBoxへの表示はこちらの質問が参考になりませんか?
他の過去ログも検索してみてください。(リンク禁止のためh○tpにしてます)
h○tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=44076;id=excel

>もちろんその後の5列でおりかえす方法もわかりませんし、その前にlistboxのデータをどうやって取得するのかもわかりません。

こちらは、選択されている箇所を判定して順次書き出していけば良いですね。

'例)ListBox1(MultiSelect)の選択項目を特定範囲に書き出す
Private Sub CommandButton1_Click()
  Dim r As Long, c As Integer 'Row,Column
  Dim i As Long
  Dim Ran As Range  '書き出しセルの範囲
  
  Set Ran = Worksheets(2).Range("A10:E15")
  r = 1: c = 1
  For i = 0 To ListBox1.ListCount - 1
    If ListBox1.Selected(i) = True Then
      If r > Ran.Rows.Count Then Exit Sub
      Ran.Cells(r, c).Value = ListBox1.List(i)
      '次の書き込み位置を調整
      c = c Mod Ran.Columns.Count + 1
      If c = 1 Then r = r + 1
    End If
  Next i
  Set Ran = Nothing

End Sub

【44169】Re:2つのリストボックスから複数選択
質問  Help me!!  - 06/11/7(火) 10:41 -

引用なし
パスワード
   ▼ハチ さん:
>ListBoxへの表示はこちらの質問が参考になりませんか?

>>もちろんその後の5列でおりかえす方法もわかりませんし、その前にlistboxのデータをどうやって取得するのかもわかりません。
>
>こちらは、選択されている箇所を判定して順次書き出していけば良いですね。
>

実際に動かしてみて感動しました!!
5列でちゃんと折り返して行きます!!
ありがとうございます!!

2つのリストボックスを連動させるに関する過去ログは見つかりませんでした・・・

誰か助けてください!!

【44188】Re:2つのリストボックスから複数選択
発言  ハチ  - 06/11/7(火) 16:05 -

引用なし
パスワード
   ▼Help me!! さん:

>2つのリストボックスを連動させるに関する過去ログは見つかりませんでした・・・
>
>誰か助けてください!!

「ListBox 表示」あたりで検索すればたくさんでます。
ListBox1_Changeイベントで
.AddItem
.List
.RowSource
のどれかを変更するコードを書けばできると思います。
やり方は何通りもあるので自分のスキルにあった方法を探してください。

どなたかコードを書いてくれるかもしれませんが、
「作ってください」と言っている(ように自分は感じる)ので
難しいかもしれませんね。

まずはエラー出まくりでも良いので、自分で手を動かすことが重要だと思います。

【44194】Re:2つのリストボックスから複数選択
お礼  Help me!!  - 06/11/8(水) 7:55 -

引用なし
パスワード
   ▼ハチ さん:
ありがとうございます。
自分で頑張ってはいるつもりなんですが・・・
頑張りが足りないみたいです。

ハチさんの言うとおり、検索すれば表示する方法はでてきます。

でもどうしても、listbox1で得た値をキーにlistbox2内で検索・表示という物が見つかりません・・・
listbox2.rowsourceに検索する記述をすればいいのだとは思うのですが・・・
Vlookup関数とかを使えば出来るのでしょうか?

そもそも、これだけ検索(このサイト内・他のVBAサイト・WEB)をしても出てこないと言うことはそもそも私がやりたい事は他の方法でやるのが一般的なのかもしれません。

いろいろアドバイス頂きありがとうございました。
もうちょっと悩んで見ます。

【44195】Re:2つのリストボックスから複数選択
発言  ハチ  - 06/11/8(水) 8:33 -

引用なし
パスワード
   ▼Help me!! さん:

>ありがとうございます。
>自分で頑張ってはいるつもりなんですが・・・
>頑張りが足りないみたいです。

足りないんじゃなくて、「見えない」と言っているだけです。
少なくてもListBox1に表示はできているんですよね?
それをどういう風にやっているのか提示すると
Rowsourceでなら理解できているんだな・・
とか分かるのでアドバイスもしやすいです。(と自分は思います)

>でもどうしても、listbox1で得た値をキーにlistbox2内で検索・表示という物が見つかりません・・・
>listbox2.rowsourceに検索する記述をすればいいのだとは思うのですが・・・
>Vlookup関数とかを使えば出来るのでしょうか?

最近の質問でもありましたが、RowSourceに指定するのは「範囲を表す文字列」です。
Vlookupでは用途が違うと思います。

やり方はいろいろあります。
パッと思いつくだけでも3つくらい
1、1行づつチェックしてAddItemしていく
2、AutoFilterをかけてWork用のシートにコピーする(コピーしなくてもできるかも)
3、担当者ごとにセルの範囲に名前をつけておいて、RowSourceに指定する

>いろいろアドバイス頂きありがとうございました。
>もうちょっと悩んで見ます。

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