• ベストアンサー

リストボックスの複数データをセルに転記する

よろしくお願いします。 複数表示させたリストの2番目のリストを抜いて 1、3、4、5番目のリストを、 シートAの、C6からF6に転記する   With ListBox1 .ColumnCount = 5 .ColumnWidths = "150;0;150;0;0"                ↑ .RowSource = "シートA!C6:F" & Worksheets("シートA").Cells(Rows.Count, 5).End(xlUp).Row End With

  • 1211M
  • お礼率54% (90/165)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

こんにちは、みっちょです。 セルの途中を1列飛ばした範囲をリストとしたいのでしょうか? それであればセル内容の変更に同期させる必要が無いのであれば、 Dim tV As Variant, LL As Long, tI As Long ListBox1.ColumnCount = 5 ListBox1.ColumnWidths = "150;0;150;0;0" LL = Worksheets("シートA").Cells(Rows.Count, 5).End(xlUp).Row ReDim tV(LL - 6, 4) For tI = 6 To LL   tV(tI - 6, 0) = Worksheets("シートA").Cells(tI, 3).Value   tV(tI - 6, 2) = Worksheets("シートA").Cells(tI, 4).Value   tV(tI - 6, 3) = Worksheets("シートA").Cells(tI, 5).Value   tV(tI - 6, 4) = Worksheets("シートA").Cells(tI, 6).Value Next ListBox1.List = tV などとやれば、リストの内容をセルより更新できます。 逆に先にリスト側に出来上がっている内容をセルに移すには、 Dim tV As Variant, LL As Long, tI As Long tV = ListBox1.List LL = UBound(tV) For tI = 0 To LL   Worksheets("シートA").Cells(tI + 5, 3).Value = tV(tI, 0)   Worksheets("シートA").Cells(tI + 5, 4).Value = tV(tI, 2)   Worksheets("シートA").Cells(tI + 5, 5).Value = tV(tI, 3)   Worksheets("シートA").Cells(tI + 5, 6).Value = tV(tI, 4) Next などとやれば可能です。こういった感じではいかがでしょう?

1211M
質問者

お礼

つたない説明にも関わらず、丁重にお答えいただきましてありがとうございました。 解決しました。

その他の回答 (1)

回答No.1

こんにちは、みっちょです。 意図されていることが良く解りませんが、 4項目程度ならベタ打ちしてはどうでしょう? Worksheets("シートA").Range("C6").Value = ListBox1.List(ListBox1.ListIndex, 0) Worksheets("シートA").Range("D6").Value = ListBox1.List(ListBox1.ListIndex, 2) Worksheets("シートA").Range("E6").Value = ListBox1.List(ListBox1.ListIndex, 3) Worksheets("シートA").Range("F6").Value = ListBox1.List(ListBox1.ListIndex, 4) こんな感じでは求める結果は得られませんか?

1211M
質問者

お礼

ありがとうございます。 出来ましたが、E列目の6行より下で End(xlUp).Rowとしたいのです。 よろしくお願いします。

関連するQ&A

  • リストボックスに複数シートのデーターを表示させる。

    リストボックスに複数シートのデーターを表示させる。 下記の構文で複数表示はできたのですが、このListBox1のColumnCount7つ目に シートBのC列のデーターを表示させる方法をお教えください。 With ListBox1 .ColumnCount = 7         ↓ .ColumnWidths = "0;100;120;0;0;0;120" .RowSource = "シートA!B5:G" & Worksheets("シートA").Cells(Rows.Count, 5).End(xlUp).Row        → .RowSource = "シートB!C5:C" & Worksheets("シートB").Cells(Rows.Count, 5).End(xlUp).Row .MultiSelect = fmMultiSelectMulti .ListStyle = fmListStyleOption End With よろしくお願いします

  • リストボックスのリストをシートのセル範囲で表示する

    リストボックスのリストをシートのセル範囲で表示する おはようございます。 朝から行き詰っています。 リストは、シートのセル範囲で列の離れたリストを複数表示させる。 下のようにしたのですが、うまくできません。 よろしくアドバイスをお願いします。 With ListBox2 .ColumnCount = 3 .ColumnWidths = "150;150;150" .RowSource = "受注物件!C5:D,F5:F" & Worksheets("受注物件").Cells(Rows.Count, 5).End(xlUp).Row .MultiSelect = fmMultiSelectMulti .ListStyle = fmListStyleOption End With

  • リストボックスのリストを右詰で表示する

    リストボックスのリストを右詰で表示する おはようございます。 先般、お教えいただいた複数列表示の構文ですが ColumnCountの5つ目の数値が左詰で表示されます。 これを右詰で表示したいのですが、構文がわかりません。 よろしくご教示をお願いします。 With ListBox2 .ColumnCount = 5 .ColumnWidths = "150;150;0;0;150" .RowSource = "受注物件!C5:G" & Worksheets("受注物件").Cells(Rows.Count, 5).End(xlUp).Row .MultiSelect = fmMultiSelectMulti .ListStyle = fmListStyleOption End With

  • エクセルVBAユーザーフォーム・リストボックスについて

    エクセルVBAにてユーザーフォームを作りリストボックスにSheet1、AからEのデータすべてを 表示させることは出来るのですが、E行にデータがある物のみ表示する方法をご存じの方教えて頂けないでしょうか。 入力したソースは下記のとおりです。 Private Sub UserForm_Click() Dim lastRow As Long With Worksheets("Sheet1") lastRow = .Cells(Rows.Count, 5).End(xlUp).Row End With With ListBox1 .ColumnCount = 5 .ColumnWidths = "35;25;30;100;25" .RowSource = "Sheet1!A2:E" & lastRow .ColumnHeads = True End With End Sub

  • リストボックス内の表示について

    マクロ初心者です。(エクセル2003使用_ユーザーフォーム) リストボックスを作成しました。 Sheet1でA5からAEまでを選択することはできたのですが、 下記コードでは、リストボックス内の表示がA,B,Cの値がでてしまいます。自分は、G,H,Iの値を表示したいのですが、どこが違うのか教えてください。 (Sheet1のデータ) A  B  C ・・・・G  H  I ・・・・AE 犬  猫  鳥     馬  羊  蝶     猿 (コード) Private Sub UserForm_Initialize() With ListBox1 .ColumnWidths = "45;18;90" .ColumnCount = 3 .RowSource = "Sheet1!A5:AE" & Worksheets("Sheet1").Range("AE" & Rows.Count).End(xlUp).Row End With End Sub ↑これだと、リストボックスには<犬 猫 鳥>となってしまいます。 <馬 羊 蝶>にするやり方を教えてください。 よろしくお願いいたします。

  • リストボックスのプロパティを設定できません

    excelのuserform上にリストボックスを作って表示させようとしているのですが、 ↓ここでエラー  (1)ColumnWidths = "50:50"  (ColumnWidths プロパティを設定できません。) (2) .RowSource = Worksheets("過去データ").Range("A" & lastRow & ": B" & lastRow).Address     (RowSourceプロパティを設定できません。) ここでエラーになるのですが、何が違うのかわかりません。 ちなみに Worksheets("過去データ").Range("A" & lastRow & ": B" & lastRow).Select で選択させてみるとちゃんと選択しているのです。 今はAB列だけで試しているのですが、最終的には39列ありすべて表示させるつもりです。 listbox1(←番号)をクリックすると、クリックした値で、Worksheets("過去データ").にフィルターがかかり、 フィルタをかけた状態で、最終行を選択し、listbox2(←その番号に付随する詳細内容)に表示され、そしてlistbox1のチェックボックスにチェックの入ったものを、登録ボタンを押すと別のシートに貼り付ける、ということが最終的にはしたいのです。 1日中悩んでおりましたがわかりません。どなたか助けてください。 ------------------------------ Private Sub ListBox1_Click() Worksheets("過去データ").Cells(1, 1) = UserForm1.ListBox1.Text Unload UserForm1 Dim target As String target = Worksheets("過去データ").Range("A1").Value Worksheets("過去データ").Cells(1, 39).AutoFilter Field:=1, Criteria1:=target, Operator:=xlAnd Dim lastRow As Long With Worksheets("過去データ") lastRow = .Range("A" & Rows.Count).End(xlUp).Row MsgBox lastRow End With With ListBox2 .ColumnCount = 2 '.ColumnWidths = "50:50" '.RowSource = "過去データ!A" & lastRow & ": B" & lastRow.Address .RowSource = Worksheets("過去データ").Range("A" & lastRow & ": B" & lastRow).Address End With End Sub

  • VBAを使用しコンボボックスにリストを設定する方法

    いつもお世話になっております。 現在コンボボックスにリストを設定する方法について悩んでいます。 バージョンはExcel2003です。 コンボボックスに指定したい列がA列とB列なら通常下記のようにすると思います。     With ComboBox1       .ColumnCount = 2       .ColumnWidths = "50;50"       .RowSource = "Sheet1!A2:B5"     End With ただ今回はA列とC列をリストに設定したいと思い、下記のような設定にしたのですがうまく設定できません。     With ComboBox1       .ColumnCount = 2       .ColumnWidths = "50;50"       .RowSource = "Sheet1!A2:A5;C2:C5"     End With そもそもRowSource は連続的なデータを設定する場合のプロパティだと思うのですが、このように飛んだ列のデータを効率的に指定するにはどのようにするのが一番いいのでしょうか? 分かる方がいっらしゃいましたらご教授願います。

  • コンボボックス or リストボックス (複数列表示→値の取得)

    マクロ初心者です。(エクセル2003使用-ユーザーフォーム) 先日はお世話になり、ありがとうございました。 作成していくうちにさらに改良を加えたく、再質問させていただきます。 ※コンボボックス内の表示を複数行表示(Sheet1の管理番号,品名,注文数量)し、そのデータをSheet2のセルA(管理番号),セルB(品名),セルC(注文数量)と貼り付けようとしております。 が、本で探したところ複数行表示のやり方がリストボックスでしかのっていなく、さらに自分で作成したマクロでは動きませんでした。 すみませんが、お力をお貸しください。 (Sheet1) 担当課 客先 管理番号 品名 注文数量 出荷数量 A 岡田さん 1324 りんご 30 20 B 山田さん 1554 みかん 250 70 C 岡田さん 7634 なし 40 25 B 金子さん 4653 みかん 75 70 A 金子さん 6675 りんご 170 60 C 杉浦さん 7789 りんご 200 120 (↓こちらは、前回質問させていただいた内容です。) Private Sub UserForm_Initialize() ComboBox1.RowSource = "Sheet1! C2:C" & Worksheets("Sheet1").Range("C" & Rows.Count).End(xlUp).Row ←ここを複数行用に変更するのでしょうか?いろいろ試したのですがダメでした。 ComboBox1.ListIndex = -1 ComboBox1.SetFocus End Sub Private Sub CommandButton1_Click() Dim lRow As Long With Worksheets("Sheet2") lRow = .Range("A" & Rows.Count).End(xlUp).Row .Range("A" & lRow + 1).Value = ComboBox1.Value End With End Sub (↓こちらは、リストボックスでのマクロですが、動きません) Private Sub UserForm_Initialize() With UserForm2.ListBox1 .ColumnWidths = "70;50;50" .ColumnCount = 3 End With With Worksheets("Sheet1") Dim MyA As Variant Dim i As Long For i = 2 To UBound(MyA, 1) .AddItem .List(i - 2, 0) = Cells(i, 1).Value .List(i - 2, 1) = Cells(i, 2).Value .List(i - 2, 2) = Cells(i, 3).Value Next End With End Sub Private Sub CommandButton1_Click() Dim lRow As Long With Worksheets("Sheet2") lRow = .Range("A" & Rows.Count).End(xlUp).Row .Range("A" & lRow + 1).Value = ListBox1.Value End With End Sub 教えていただけましたら幸いです。 よろしくお願いいたします。

  • リストボックスについて

    リストボックスからデータを転記したいのですが、 実行時エラー"1004"が出てしまい、どうしてもうまくいきません。 どなたか原因を教えてください。 Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) Dim i As Long With Worksheets("sheet2") i = .Range("F47").End(xlUp).Row + 1 .Range(i, 6).Value = ListBox1.List(ListBox1.ListIndex, 0) .Range(i, 12).Value = ListBox1.List(ListBox1.ListIndex, 1) .Range(i, 26).Value = ListBox1.List(ListBox1.ListIndex, 2) .Range(i, 28).Value = ListBox1.List(ListBox1.ListIndex, 3) .Range(i, 34).Value = ListBox1.List(ListBox1.ListIndex, 4) .Range(i, 37).Value = ListBox1.List(ListBox1.ListIndex, 5) End With Unload Me End Sub

  • リストボックスでデータを呼び出し→修正を反映させる方法を教えてください

    マクロ初心者です。(エクセル2003使用_ユーザーフォーム) リストボックスで表示した行のデータをユーザーフォームに呼び出し、修正を加える方法を教えてください。 (Sheet1のデータ) 客先 管理番号 品名 注文数量 出荷数量 出荷日 完納状況 G社  1324   パソコン    30    20 K社  1554   プリンタ    250    70    8月9日 J社  7634   テレビ      40    25 K社  4653   パソコン    75    75    6月4日  完納 G社  6675   パソコン    170    60 G社  7789   プリンタ    200    120 表の行数は、日々変動し、出荷日や完納状況欄は、分かり次第記入や変更をするため、空白の箇所もあります。 (コマンドボタン1まで動く(日付が数字になってしまうが)コード) Private Sub UserForm_Initialize()   With ListBox1 .ColumnWidths = "50;50;50" .ColumnCount = 2 .RowSource = "Sheet1!A2:G" & Worksheets("Sheet1").Range("G" & Rows.Count).End(xlUp).Row End With End Sub            →リストに表示されるが、本当は<管理番号>と<品名>を表示させたいです。(今は、客先と管理番号です) Private Sub CommandButton1_Click() TextBox1.Value = ListBox1.List(ListBox1.ListIndex, 5) →日付が数字ででてしまいます。 TextBox2.Value = ListBox1.List(ListBox1.ListIndex, 6) End Sub Private Sub CommandButton2_Click() TextBox1.Value = ListBox1.List(ListBox1.ListIndex, 5) →動きません。 TextBox2.Value = ListBox1.List(ListBox1.ListIndex, 6) →動きません。 End Sub 空白は、空白のまま表示させたり、修正したいと思っています。 (例 管理番号1554の日付を8月14日にのみ修正したい時、そこは修正し、完納欄は空白のまま表示され、空白の状態でコマンド2を押すことができてほしいということです) すみませんが、どなたかご回答よろしくお願いいたします。