- ベストアンサー
リストボックスに複数シートのデーターを表示させる方法を教えてください
- リストボックスに複数シートのデーターを表示させる方法をお教えください。
- 特に、ListBox1の7番目の列にシートBのC列のデーターを表示させる方法が知りたいです。
- ColumnCountを7に設定し、ColumnWidthsを設定した後、RowSourceを使ってシートAのデーターを表示させる方法は分かりましたが、シートBのC列のデーターを表示させる方法がわかりません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
7列目のセットは、シートBのC列をひとつずつセットすることになるでしょう。 処理の流れは次のようになります。 '------------------------------------------------ 先ず、シートAのB~G列の6列ではなくて、B~H列までの7列セットしておく (H列はダミーなのでデータがあってもなくてもいい) 次に、ListBoxにセットされている7列目とシートBのC列のデータを入れ替える ------------------------------------------------- Dim R As Long Dim LastRow As Long '●最終行の取得 LastRow = Sheets("シートA").Cells(Rows.Count, 5).End(xlUp).Row With ListBox1 .ColumnCount = 7 .ColumnWidths = "0;100;120;0;0;0;120" '●シートAのB5~H最終行をセット(7列セットしておく) .List = Sheets("シートA").Range("B5:H" & LastRow).Value '●シートBのC5~C最終行をひとつずつ7列目にセット For R = 5 To LastRow .List(R - 5, 6) = Sheets("シートB").Cells(R, "C").Value Next R .MultiSelect = fmMultiSelectMulti .ListStyle = fmListStyleOption End With '---------------------------------------------------- 上記のようにシートBの最終行もシートAの最終行を使用した方がいいでしょう また、セットするプロパティは統一した方が見やすいので 質問者のコードのRowSourceプロパティは、Listプロパティに変更してあります。 以上です。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
この質問は下記の点ではどれか。質問をするとき良く認識せずに質問してるのでは。 (1)エクセルシート上にListBoxを貼り付けたもの(表示ーツールバーーコントロール) (2)シート上にListBoxを貼り付けたもの(表示ーツールバーフォーム) (3)UserForm1フォームの上にListBox貼り付け (4)VBなどでフォームの上にListBox貼り付けかつリストボックスのアイテムだけ シートデータから取りたい (4)ではエクセルシートのセルデータをリストボックスのアイテムとして採る(利用する)のが難しい(質問のコードでは出来ない?) それぞれ微妙に違いがある。 ーーー 以下は参考に。 (1)ではエクセル(VBA)では、プロパティのFilllistRangeをB5:H7のように設定するが、別のセル範囲から(同一シート上や別シートから)寄せ合わせては出来ないようだ。 H列に=Sheet2!C2のような式を入れて参照し=Sheet1!B5:H7のように設定は出来た。 (2)でも同じと思う。 ーー (3)でも Private Sub UserForm_Click() With UserForm1.ListBox1 .ColumnCount = 7 .ColumnWidths = "0;100;120;0;0;0;120" '.RowSource = "Sheet1!B5:G" & Worksheets("シートA").Cells(Rows.Count, 5).End の行を '.RowSource = Union(Worksheets("Sheet1").Range("B5:G7"), Worksheets("Sheet2").Range("C2:C4")) や「&」や「,」や「;」でつないでやってみたがダメだった。 Sheet1!B5:H7のような表記でつなげてもダメだった。 End With End Sub ーー 他の点参考事項 (1)では .ColumnCount = 7も可能 .ColumnWidths = "0;100;120;0;0;0;120"も可能・B,C,H列が表示される。 .LinkedCell = "C2"は1セル指定に限りで、アイテムの一番左列に限られる?C2:D2など2列を採ることは出来ない。 ーー UserformのLinkedcellは無いのか? それに対しWEB記事から フォームオブジェクトは、どうも「LinkedCell」プロパティーに変わるプロパティーを持っていないようです。私は、コードを書く以外方法がないと思います。ー> Private Sub ListBox1_Click() Worksheets("Sheet1").Range("c2") = UserForm1.ListBox1.Text End Sub にするとうまく行った。
お礼
ありがとうございます。 リストボックスは、ユーザーフォーム上に貼り付けています。 2つのシートのデーターを、1つのリストボックスに表示することは 無理なのでしょうか。