
Excel に、1 つのセルのドロップダウン リストから複数の項目を選択できるテーブルがあります。
現在、マクロを使用してすべてのオプションを個別に選択する必要があり、それらは 1 つずつセルに追加されます。
ドロップダウン リストにチェック ボックスを追加するマクロを作成して、追加したい項目をチェックすると同時に追加されるようにすることは可能でしょうか?
答え1
はい、フォーム リスト ボックスを追加して、複数の選択を許可できます。こちらをご確認くださいMS サポート用。
VBA - チェックこのstackoverflowのスレッド
答え2
さて、リストボックスには次のコードを使用しました:
Dim lngItem As Long
Const strSep = ", " 'delimiter
Private Sub UserForm_Initialize()
With ListBox1
.RowSource = "=Sheet1!A2:A12"
For lngItem = 0 To ListBox1.ListCount - 1
.Selected(lngItem) = InStr(1, strSep & ActiveCell.Value & strSep, strSep & .List(lngItem, 0) & strSep)
Next lngItem
End With
End Sub
Private Sub CommandButton1_Click()
Dim strItems As String
With ListBox1
For lngItem = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(lngItem) Then
strItems = strItems & strSep & ListBox1.List(lngItem, 0)
End If
Next lngItem
End With
With ActiveCell
.NumberFormat = "@"
.Value = Replace(strItems, strSep, "", 1, 1)
End With
Unload Me
End Sub
列選択の場合は次のようになります:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column <> 3 Or Target.Row = 1 Then Exit Sub
UserForm1.Show
Cancel = True
End Sub
非常にうまく機能していますが、1つ変更したい点があります。
現時点では、リストボックスはセルをダブルクリックすると表示されますが、ワンクリックだけで表示できるようにする可能性はありますか? また、リストボックスが常に選択したセルの下に表示されるように変更することはできますか?
答え3
添付の画像を見ると、これが完璧な解決策であることがわかります。リストボックス内でチェックボックスを使用します。
コードをダウンロード: http://www.vlsiip.com/exceltips.html