如何点击单元格,弹出下拉框,选择其中之一

数据-》数据验证-》验证条件 允许:选择序列-》来源:框选excel中的内容

如何弹出一个多选框,然后多选后的内容自动放置到单元格内?

需要采用VB。保存格式必须为xlsm格式(启动宏的工作簿) 不是xls/xlsx

依次打开 开发工具-》控件-》查看代码
VB.net涉及到的:
对象(一个sheet对应一个对象)、
窗体
模块

对象:Sheet1**

  1. Sub MultiSelectProduct()
  2. UserForm1.Show
  3. End Sub
  4. Private Sub Worksheet_SelectionChange(ByVal Target As Range) '说明:监听sheet1发生的用户操作事件
  5. If ActiveCell.Column = 6 And ActiveCell.Row > 1 Then '说明:当前激活列为J列,第二行以下
  6. Call MultiSelectProduct '调用显示窗体宏名
  7. End If
  8. End Sub

窗体:UserForm1

  1. Private Sub CommandButton1_Click()
  2. Dim Arr(), k&, i&
  3. ReDim Arr(1 To 1)
  4. With ListBox1
  5. For i = 0 To .ListCount - 1
  6. If .Selected(i) Then
  7. k = k + 1
  8. ReDim Preserve Arr(1 To k)
  9. 'Arr(k) = .List(i, 1)
  10. Arr(k) = Sheet2.Range("B" & (i + 2)).Value '获取Sheet2列表中Ai+1行的值
  11. End If
  12. Next i
  13. End With
  14. If Application.ActiveCell.Value <> "" Then
  15. Dim iResult
  16. iResult = MsgBox("是否替换当前项目现有登记产品?", 1)
  17. If iResult = 1 Then
  18. Application.ActiveCell.Value = Join(Arr, vbCrLf) '将值放入到当前单元格
  19. Unload Me
  20. End If
  21. Else
  22. Application.ActiveCell.Value = Join(Arr, vbCrLf) '将值放入到当前单元格
  23. Unload Me
  24. End If
  25. End Sub
  26. Private Sub CommandButton2_Click()
  27. Unload Me
  28. End Sub
  29. Private Sub Label1_Click()
  30. End Sub
  31. Private Sub Label2_Click()
  32. End Sub
  33. Private Sub UserForm_Initialize()
  34. Label2.Caption = Application.ActiveCell.Value
  35. With UserForm1.ListBox1
  36. .RowSource = "dictionary!B2:B46" '设定源数据区域 ,下拉列表框的数据来源
  37. .ColumnCount = 1 '设定列数
  38. .ColumnHeads = False '设定列标题。标题为数据区域的上一行
  39. .BoundColumn = 2
  40. .MultiSelect = fmMultiSelectMulti '按空格键或单击鼠标以选定列表中一个条目或取消选定。
  41. ' .MultiSelect = fmMultiSelectExtended ' Shift 并单击鼠标,或按 Shift 的同时按一个方向键,将所选条目由前一项扩展到当前项。按 Ctrl 的同时单击鼠标可选定或取消选定。
  42. ' .MultiSelect = fmMultiSelectSingle '只可选择一个条目(默认)。
  43. End With
  44. End Sub