- ベストアンサー
EXCELで、1つのセルに選択した値を並べて表示
A1のセルに、B1からB10までにある値のうち、該当する値だけをリストから選択して並べて表示するような方法がありますでしょうか。 例えば、B1からB10には次のような値が入力されており、 B1広島県、B2山口県、B3福岡県、B4佐賀県、B5長崎県、B6大分県、B7熊本県、B8宮崎県、B9鹿児島県、B10沖縄県 A1には、「広島県、福岡県、大分県」と表示したい場合等です。A1をクリックするとリストが表示され、チェックボックスにチェックするとそれが並びで表示されるようなイメージです。 さらには、値の間には読点またはカンマが入力または表示されるようにできれば最高です。 以上、よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
希望に近い?かも 1 メニューの表示→ツールバー→コントロールツールボックスを選択 2 コントロールツールボックスのリストボックスをシート上に作成 3 〃 プロパティを選択 4 リストボックスのプロパティが表示されているのを確認 5 プロパティの ListFillRange の値を B1:B10 とする 6 〃 ListStyle の値を 1 にする 7 〃 MultiSelect の値を 1 にする 8 コントロールツールボックスのコードの表示を選択 9 表示された所に下記のマクロをコピペ 10 コントロールツールボックスのデザインモードの終了を選択 11 邪魔な窓等を閉じて出来上がり Private Sub ListBox1_Change() Dim i As Integer Range("a1").Value = "" For i = 0 To 9 If ListBox1.Selected(i) Then If Range("a1").Value = "" Then Range("a1").Value = ListBox1.List(i) Else Range("a1").Value = Range("a1").Value & "、" & ListBox1.List(i) End If End If Next i End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "$A$1" Then ListBox1.Visible = True Else ListBox1.Visible = False End If End Sub 以上
その他の回答 (1)
- kuma56
- ベストアンサー率31% (1423/4528)
やり方の一つとして思いついたのは・・・・・ A1セルに、同じ大きさの無色枠なしのオートシェイプを重ねる。 そのオートシェイプをクリックするとマクロが起動するように登録しておく。 マクロの内容は、B1~B10の値を表示したユーザーフォームを表示させて、チェックボックスにチェックを入れて、OKボタンをクリックするとユーザーフォームが閉じてチェックされた値がA1セルに表示される。 具体的な書き出し方法の案として A1セルには =C1&C2&C3&・・・&C9&C10 と式を入れておいて、ユーザーフォームにチェックの入った値だけをそれぞれC1セル~C10セルに書き出してやるなど・・・・ では駄目かなぁ・・・??
補足
ご回答ありがとうございます。 マクロの書き方を調べたのですが、 よくわからないので検証できませんでした。 お手すきの際に具体的な方法を教えていただければ幸いです。