• ベストアンサー

VBAのListBoxで複数選択してExcelの1つのセルに反映

いつもお世話になります。 出来るか教えて欲しいのですが、 UserFormに「ListBox」と「Commandbutton」があります。 「ListBox」には5つの選択肢がありますが、これを複数選択可に して、「Commandbutton」をクリックすることにより、 Excelの1つのセルに「ListBox」で選択した項目を反映させることは 出来ますか? 出来る場合どのようにすれば宜しいでしょうか?

noname#168961
noname#168961

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

ListBoxのSelectedプロパティを使えばどのアイテムが選択されているか確認出来ます ボタンのクリックイベントで dim n as integer, s as string for n = 0 to ListBox1.Count-1   if ListBox1.Selected( n ) then     s = s & ListBox1.List( n )   end if Next Range("A2").value = s といった具合で出来るかと思います

noname#168961
質問者

お礼

早速の回答有難うございました。 無事出来ました。

関連するQ&A

  • エクセルVBA ListBox選択を反映させる

    いろいろ試みたのですが、分からないので教えてください ・ユーザーフォームにListBox1、ListBox2があります ・やりたいこと ●ListBox1=ListBox2場合、A2にListBox1の値を入力 (ex)ListBox1がH8 (1996)、ListBox2がH8 (1996)の場合、A2に「H8」と入力 ●ListBox1がListBox2と1年違う場合、A2とA3にその間の期間を入力 (ex)ListBox1がH8 (1996)、ListBox2がH9 (1997)の場合、A2に「H8」、A3に「H9」と入力 ●ListBox1がListBox2と2年違う場合、A2とA4にその間の期間を入力 (ex)ListBox1がH8 (1996)、ListBox2がH10 (1998)の場合、A2に「H8」、A3に「H9」、A4に「H10」と入力 ・作成したもの1 Private Sub ListBox1_Change()     With ListBox2     .Clear     Select Case UserForm1.ListBox1.List(ListBox1.ListIndex)     Case "H8 (1996)"       .List = Array("H8 (1996)", "H9 (1997)", "H10 (1998)")     Case "H9 (1997)"       .List = Array("H9 (1997)", "H10 (1998)")     Case "H10 (1998)"       .List = Array("H10 (1998)")     End Select     .ListIndex = 0     End With End Sub ・作成したもの2 If Mid(ListBox1, Application.Find("(", ListBox1) + 1, 4) = Mid(ListBox2, Application.Find("(", ListBox2) + 1, 4) Then sheets1.Cells(Rows.Count, 1).End(xlUp).Offset(1) = "H" & Mid(ListBox1, Application.Find("(", ListBox1) + 1, 4) - 1988 End If If Mid(ListBox1, Application.Find("(", ListBox1) + 1, 4) + 1 = Mid(ListBox2, Application.Find("(", ListBox2) + 1, 4) Then sheets1.Cells(Rows.Count, 1).End(xlUp).Offset(1) = "H" & Mid(ListBox1, Application.Find("(", ListBox1) + 1, 4) - 1988 sheets1.Cells(Rows.Count, 1).End(xlUp).Offset(1) = "H" & Mid(ListBox1, Application.Find("(", ListBox1) + 1, 4) - 1987 End If If Mid(ListBox1, Application.Find("(", ListBox1) + 1, 4) + 2 = Mid(ListBox2, Application.Find("(", ListBox2) + 1, 4) Then sheets1.Cells(Rows.Count, 1).End(xlUp).Offset(1) = "H" & Mid(ListBox1, Application.Find("(", ListBox1) + 1, 4) - 1988 sheets1.Cells(Rows.Count, 1).End(xlUp).Offset(1) = "H" & Mid(ListBox1, Application.Find("(", ListBox1) + 1, 4) - 1987 sheets1.Cells(Rows.Count, 1).End(xlUp).Offset(1) = "H" & Mid(ListBox1, Application.Find("(", ListBox1) + 1, 4) - 1986 End If ・困ったこと (1) ListBox1を選択した時、ListBox2の表示を切り替えられるようにしており、選択したように青になっていますが、実際はListBox2を選択していないようです ListBox1をH8にクリックしてから、ListBox2をH9やH10を選択して、再度H8を選択しなおさなければ、エラーになってしまいます (2)ListBox1とListBox2が1年違い、2年違いの場合、うまくいかずセルに入力されない もし分かる方がいらっしゃいましたら、教えてください よろしくお願いします

  • リストボックスから項目を選択してセルに入力したいのです

    EXcel2003でマクロ作成中です。エクセルシートのN列を右クリックすると、ユーザーォームが現れ、その中のリストボックスから項目を選択すると選択文字が白色に反転します。 ユーザーホームの下方に設置した「入力する」ボタンをクリックする、アクティブセルにテキスト文字列が挿入されます。 Option Explicit Private Sub CommandButton1_Click() With ListBox1 If .ListIndex = -1 Then MsgBox "項目を選択してくだい" Else ActiveCell.Value = ListBox1.list(ListBox1.ListIndex) End If End With Unload UserForm1 End Sub --------------------------- Private Sub CommandButton2_Click() Unload UserForm1 End Sub ------------------------------ これと同じものをB列につくりました。エクセルシートのB列を右クリックすると、リストボックスが表示されますが、その中の項目を選択しようとすると、一瞬にしてユーザーフォーム自体が消えてしまい項目を 選択できません。 Private Sub CommandButton1_Click() With ListBox2 If .ListIndex = -1 Then MsgBox "項目を選択してくだい" Else ActiveCell.Value = ListBox2.list(ListBox2.ListIndex) End If End With Unload UserForm2 End Sub ----------------------------- Private Sub CommandButton2_Click() Unload UserForm2 End Sub ------------------------------------------ まったく同じものを作って内容だけかえたのですが、できません。 どうしてでしょうか?ご教授おねがいします。

  • Excel VBA ListBoxについて

    お世話になります。 Excelで以下のようなフォーム画面を作成しております。 1.フォーム画面には、リストボックス、テキストボックス、登録ボタンを設定 2.リストボックスには、Sheet1のデータが表示される。 3.リストボックスのレコードを選択すると、選択した値がテキストボックスに表示される。 4.登録ボタンをクリックすると、テキストボックスのデータが、Sheet1に反映される。 今1~3まではできましたが、4で悩んでおります。 テキストボックスの値を取得してセルに反映させようと以下のコードを書きました。 'リストボックスで選択したレコード数 ListNo = Me.ListBox1.ListIndex 'TextBox1の値を、Sheet1のセルにセット Sheets("sheet1").Cells(ListNo, 1).Value = Me.TextBox1.Value  これを実行すると、何故かここから3のリストボックスのレコードをクリックしたイベントを呼びます。 Private Sub ListBox1_Click() クリックしてもいないのですが、Private Sub ListBox1_Click() を呼ばないようにしたいので、 ListBoxをEnableプロパティをfalseにしても、呼んでました。 呼びにいかない方法をご教授いただけますでしょうか。 よろしくお願いいたします。

  • エクセル リストボックスの複数の値を取得

    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 初心者の質問で申し訳ありませんが、よろしくお願いいたします。

  • Excelの複数セルの選択方法

    Excelで、Ctrlキーを押しながらクリックし、複数のセルを選択している途中で、間違ったセルをクリックしてしまいました。 こんな場合、この間違ったセルの選択だけを解除する方法はありませんでしょうか? WindowsXP・Excel2002&2003を使用しています。

  • 複数選択のListBoxでClickイベントが拾えません

    VBAのフォーム上で、複数選択ができるListBox1を作っています。 ListBox1を選択する度に、ListBox2へListBox1の選択内容で 絞り込んだListBox2のリストを作るという処理をしたいのですが、 ListBox1_ClickイベントでListBox1のリストクリック時に 何も反応がありません。 .MultiSelect = fmMultiSelectSingle で指定した複数リストボックスはClickイベントが拾えないのでしょうか? ListBox1リスト内のデータ選択・解除の度にイベントが 発生するようにしたいです。 宜しくお願いします。

  • ListBoxを数字Keyで選択したい

    お世話になります。 OSはWin XP Home、Excel2002を使用しています。 EXCELのsheet1にCommandButton1とListBox1を貼り付けて以下のようにコーディングしています。 'Listbox1表示 Private Sub CommandButton1_Click() ListBox1.Visible = True End Sub '使用者はリストボックスのダブルクリックでリストボックスの入力ができる。 Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) ListBoxDataSet End Sub '使用者はリストボックスでマウスで選択後EnterKeyで入力ができる。 Private Sub ListBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) If KeyAscii = vbKeyReturn Then ListBoxDataSet KeyAscii = 0 '←これがないとなぜかEXCELが異常終了するので注意! End If End Sub 'リストボックスで選択したリストを、シートの選択セル(単一)に転記し、 'その後でリストボックスを非表示 Sub ListBoxDataSet() ActiveCell.Value = ListBox1.Text ListBox1.Visible = False End Sub さらにListBox1のプロパティのListFillRangeはA1:B100としており、A列は1から100の連番、B列は上から順に「中山」、「常盤」、「高島」・・・98番目には「吉岡」という名前があります。 現在A列の数字は表示以外の機能は持っておらず、ダブルクリックか、マウスで1クリックで項目選択をした後にEnterKeyで名前だけがActivecellに転記されるようになっています。 100件もの項目をひとつのリストボックスには表示しきれず、スクロールバーで探すのも大変なので、例えば数字Keyで1と打てばすぐに「中山」が選択され、さらにEnterKeyで転送される、98と打てば「吉岡」が選択され・・・という風に機能追加したいのです。 いろいろ調べましたが、方法が分かりませんでした。 よろしくお願いします。

  • エクセルVBA ListBox最初と最後を選択

    エクセルVBAのListBoxについて教えてください 「ListBoxの最初が選択させれいる場合は・・・」は、 If ListBox.ListIndex = 0 Then だと思うのですが、 「ListBoxの最後を選択されている場合・・・」は、 どのようになるのでしょうか? ListBoxの数を自分で数えて、 If ListBox.ListIndex = n Then など自分でnを記載するしかないのでしょうか ListIndexの数が変われば、毎回書き直さなければいけないので、できれば最後を取得する方法があればと思うのですが よろしくお願いします

  • Excelで質問です。ListBoxの項目を別bookから読込むには

    Excelで質問です。ListBoxの項目を別bookから読込むには VBA初心者です。 book-AのListBox1からbook-Bのセルの項目を読み込むことは可能なのでしょうか。 Excel2003です。 book-AのUserForm1に下記のコードを実行しても構文エラーになってしまいます。 book-Aとbook-Bは同じフォルダに入っています。出来ればbook-Bを閉じた状態で実行できれば良いのですが Private Sub UserForm_Initialize() ListBox1.RowSource =[book-B.xls]Sheet1!A1:A10 End Sub

  • excel vba listboxについて

    EXCELのVBA LISTBOXに関することで質問です。 ワークシート1のA2-5セルに取引先名を入力してあります。 UF1という名前のユーザーフォームの中にリストボックスを作成し、ワークシート1のA2-5の取引先を表示するには、 Private Sub UserForm_Initialize() Dim torihiki As String torihiki = Worksheets(1).range("A2:A5") UF1.ListBox1.List() = torihiki End Sub と打ち込んでいます。 ちなみに、ユーザーフォームは以下のようにOKボタンで閉じるようにしました。 Private Sub CommandBottan1_Click() unload UF1 End Sub 質問したいのはここからですが、 上のユーザーフォーム内のリストボックスで選択された取引先をTRHKという変数に代入したい場合、どうしたらいいのでしょうか? 私の少ない知識を振り絞って以下のように考えてみたのですが、 TRHK = UF1.ListBox1.List() としても代入されていないようです。 List()ではないメソッドが必要なのだと思うのですが・・・・ .Selectedとかでしょうか? どなたか、ご教授願います! 宜しくお願い致します。