エクセルでリストボックスの複数の値を取得する方法
- エクセルのSheet1にユーザーフォームにListBox1とCommandButton1を配置しました。ListBox1で複数選択した値をCommandButton1を押した後、指定のセル範囲内(B5:B10)へ順に、1つずつ下に反映したいのですが、うまくいきません。
- UserForm_Initializeプロシージャでは、ListBox1にAAA、BBB、CCC、DDDの項目を追加しています。また、CommandButton1_Clickプロシージャでは、指定されたセル範囲に選択された値を反映する処理を行っています。
- 質問者は初心者であるため、コードの一部がわからないと説明しています。具体的には、行数を取得する方法やListBoxの選択された値を取得する方法についての理解が不足しているようです。
- ベストアンサー
エクセル リストボックスの複数の値を取得
Sheet1にユーザーフォームに ListBox1とCommandButton1を配置しました。 ListBox1で複数選択した値をCommandButton1を押した後、指定のセル範囲内 (B5:B10)へ順に、1つずつ下に反映したいのですが、うまくいきません。 ListBox1 AAA BBB CCC DDD で BBBとCCCを複数選択した際に Sheet1のセルB5 へ BBB Sheet1のセルB6 へ CCC という具合です。 セルB10以下の行は他の数式等で使用しています。 Private Sub UserForm_Initialize() With ListBox1 .AddItem "AAA" .AddItem "BBB" .AddItem "CCC" .AddItem "DDD" End With End Sub Private Sub CommandButton1_Click() Dim lastRow As Long With Worksheets("Sheet1") lastRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1←このあたりがさっぱり .Cells(lastRow, 1).Value = UserForm6.ListBox1.Value←このあたりがさっぱり End With End Sub 初心者の質問で申し訳ありませんが、よろしくお願いいたします。
- kfoitoy3333
- お礼率100% (2/2)
- Excel(エクセル)
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Private Sub UserForm_Initialize() With ListBox1 .AddItem "AAA" .AddItem "BBB" .AddItem "CCC" .AddItem "DDD" End With End Sub Private Sub CommandButton1_Click() Dim lastRow As Long With Worksheets("Sheet1") lastRow = 5 For i = 0 To ListBox1.ListCount - 1 If ListBox1.Selected(i) = True Then .Cells(lastRow, 2).Value = UserForm6.ListBox1.List(i) lastRow = lastRow + 1 End If Next i End With End Sub
関連するQ&A
- 複数選択可能なリストボックス
Excel VBAの質問をさせてください。 シート(sheet1)のA列、セルA1から以下のデータがあるとします。 みかん りんご バナナ 苺 梨 バナナ バナナ みかん フォームのリストボックスで"みかん"と"バナナ"を選択した際、シート(sheet2)のセルA1にコピーしていきたいのですが機能しません。 単品、"みかん"だけを選択しても何もコピーされません。 どこがいけないでしょうか?? Private Sub UserForm_Initialize() With ListBox1 .AddItem "みかん" .AddItem "りんご" .AddItem "バナナ" .AddItem "苺" .AddItem "梨" .MultiSelect = fmMultiSelectMulti End With End Sub Private Sub CommandButton1_Click() Dim i As Long For i = 1 To 8 If Worksheets("Sheet1").Cells(i, "A").Value = Me.ListBox1.Value Then Worksheets("Sheet1").Cells(i, "A").Copy Worksheets("Sheet2").Cells(i, "A") End If End Sub
- ベストアンサー
- Visual Basic
- リストボックスの値を拾うには
リストボックスの値を拾うには 以下のボタンコマンドでListBox1のListIndexから配列二番目の値を「hinban」という変数に取り込みたいのですがうまくいきません。 「hinban = ListBox1.List(ListBox1.ListIndex, 1)」という行を書いてみましたが 「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」とアラートが出てしまいます。 VBA初心者です。 解決法を教えてください。 Private Sub CommandButton1_Click() Dim lastRow As Long Dim i As Integer With Worksheets("Sheet1") lastRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1 'For i = 1 To 3 '.Cells(lastRow, i).Value = ListBox1.List(ListBox1.ListIndex, i - 1) hinban = ListBox1.List(ListBox1.ListIndex, 1) 'Next i End With End Sub
- ベストアンサー
- その他(プログラミング・開発)
- エクセルVBA ユーザーフォームのリストボックス
エクセルVBAのユーザーフォームのリストボックスについて教えてください。 現在、以下のようにコードがされています。 Private Sub UserForm_Initialize() With UserForm.ListBox1 .AddItem "ABC" .AddItem "DEF" .AddItem "GHI" .ListIndex = 0 End With End Sub Private Sub ListBox1_Click() With ListBox2 .Clear Select Case UserForm.ListBox1.List(ListBox1.ListIndex) Case "ABC" .AddItem "123" .AddItem "456" .AddItem "789" Case "DEF" .AddItem "456" .AddItem "789" Case "GHI" .AddItem "789" End Select .ListIndex = 0 End With End Sub それで、ユーザーフォームを起動した時点で、ListBox1には"ABC"、ListBox2には"789"を選択し、青く色がついている状態にすることは可能でしょうか。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセルVBA コンボボックスの値の転記
エクセルVBAの質問です。 ユーザーフォームを表示し 年を選択するコンボボックス1 月を選択するコンボボックス2 を入力してもらい ユーザーフォームを閉じるときに sheet1のワークシートのC2セルに 「コンボボックス1の値」+「年」+と「コンボボックス2の値」+「月」をつなげて 入力できるというようなマクロを考えています。 下記の様に考えてみたのですが、 うまく入力できませんでした。 Private Sub UserForm_Initialize() With ComboBox1 .AddItem "2021" .AddItem "2022" .AddItem "2023" .AddItem "2024" End With With ComboBox2 .AddItem "1" .AddItem "2" .AddItem "3" .AddItem "4" .AddItem "5" .AddItem "6" .AddItem "7" .AddItem "8" .AddItem "9" .AddItem "10" .AddItem "11" .AddItem "12" End With Private Sub CommandButton1_Click() 'ユーザーフォームを閉じる Unload UserForm1 'ユーザーフォームの値をセルC2に入力 With Worksheets("sheet1") .Cells(2, 3).Value = "ComboBox1.Text" & "月" & "ComboBox2.Text" & "日" End With End Sub どのように修正すればいいでしょうか? よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- コンボボックス 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 教えていただけましたら幸いです。 よろしくお願いいたします。
- ベストアンサー
- Visual Basic
- リストボックス
すいません以下の処理に困っております。 リストボックスで値を取得して他のリストボックスにその値を 出力したいのですがまったくできません。 <例> リストボックス1 a b c リストボックス2(上で選択した値を出力) a ちなみに構文は、 ------------------------------------------------------------ Private Sub btn選択_Click() ListBox2.Text = ListBox1.Text 'ListBox1.ListIndex + 1 & ": " & ListBox1.Text End Sub Private Sub CommandButton1_Click() End Sub Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) btn選択_Click End Sub Private Sub ListBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean) btn選択_Click End Sub Private Sub UserForm_Initialize() With ListBox1 .AddItem "スケジューラ" .AddItem "データ変換" .AddItem "DWH Server" .AddItem "PPP Server" .AddItem "ファイヤーウォール" .AddItem "暗号オプション" End With End Sub ---------------------------------------------------- 初心者でまったくできません。 御教授をお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- フォームのリストボックスに値を表示させたい
VBA フォームのリストボックスに値を表示させたい A1→aaa A2→bbb リストボックスに上記の値を表示させたいなら、 Private Sub UserForm_Initialize() UserForm1.ListBox1.RowSource = "Sheet1!A1:A2" End Sub で出来ますが、シート上のセルで表示する値を指定するのではなく、VBA上で、リストボックスに表示させる値を指定したいのです。 Private Sub UserForm_Initialize() UserForm1.ListBox1.RowSource = "aaa,bbb" End Sub を実行すると、VBA実行時エラー380になってしまいます。 UserForm1.ListBox1.RowSource = "aaa;bbb" もダメでした。 ご回答よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- EXCEL VBA コンボボックスでのLISTINDEXの値
初めて質問させていただきます。 EXCEL VBAでコンボボックスを設定したときのLISTINDEXの値についてですが、 コンボボックスがフォーム内に3つ(ComboBox1,2,3)あり、次のようなコードの入力を行い、 ComboBox1 Sub Userform_Intialize() With CcomboBox1 AddItem"AAA" '・・・ここの値は0ですね AddItem"BBB" '・・・ここの値は1ですね End With End Sub sub ComboBox1_Change() Me.combobox2.Clear Select Case Me.ComboBox1.ListIndex Case 0 Me.ComboBox2.AddItem "2AAA" '・・・ここの値は0ですね Me.ComboBox2.AddItem "2BBB" '・・・ここの値は1ですね Case 1 Me.ComboBox2.AddItem "2CCC" '・・・ここの値は何になりますか? Me.ComboBox2.AddItem "2DDD" '・・・ここの値は何になりますか? End Select End Sub このcombobox2の4つの項目から、 更にcombobox3の選択項目に分岐するように設定したいのです。 わかりやすいように、ComboBox3もComboBox2のように作成したいのですが、 このように入力した場合、ComboBox2で"2CCC"を選択した場合、 ListIndexの値が2ではないようなのです。 この"2CCC"と"2DDD"のListIndex値はいくつになるのでしょうか? どなたか教えて下さい。
- ベストアンサー
- オフィス系ソフト
- エクセル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
- ベストアンサー
- オフィス系ソフト
- Excel VBA リストボックスについて
現在エクセルのVBAを勉強中の 超初心者なのですが、 リストボックスを使うコードでエラーが出て どう直したらいいかわかりません。 下記コードをどのようになおしたらいいでしょうか? 回答、よろしくお願いいたします。 エラー内容は、実行時エラー381 Listプロパティを設定できません。プロパティの配列のインデックスが無効です。 Private Sub UserForm_Initialize() 'リストボックスの設定 With ListBox1 .Font.Size = 10 .ColumnCount = 7 .ColumnWidths = "50;100;80;80;100;30;70" .TextAlign = fmTextAlignLeft .Font.Name = "MSゴシック" End With Dim i As Integer Dim LastRow As Integer LastRow = Range("A" & Rows.Count).End(xlUp).Row For i = 2 To LastRow With ListBox1 .AddItem Cells(i, 1).Value .List(ListCount - 1, 1) = Cells(i, 2).Value .List(ListCount - 1, 2) = Cells(i, 3).Value ←ここでエラー .List(ListCount - 1, 3) = Cells(i, 4).Value .List(ListCount - 1, 4) = Cells(i, 5).Value .List(ListCount - 1, 5) = Cells(i, 6).Value .List(ListCount - 1, 6) = Cells(i, 7).Value End With Next End Sub
- ベストアンサー
- Excel(エクセル)
お礼
chie65535 様 早速の回答ありがとうございました。 大変助かりました。