如標題的疑問,小弟想要製作一份Excel VBA的巨集,下圖為部門與職務的對應關係,當我部門下拉選單選擇選擇A時,職位的下拉選單則會顯示相對應的職務關係。
最近我用Excel表單控制項來寫類似多選的功能,需先用集合套字典來作,再給表單使用
主要資料作一個結構,給程式使用
Public cTool As New Collection
Function coll_data(vOri) As Collection
Dim irow%, sStaff$, sDepartment$, icol%
Dim aTool$()
Set coll_data = New Collection
With coll_data
.Add CreateObject("scripting.dictionary"), "部門"
.Add CreateObject("scripting.dictionary"), "人員"
For icol = 1 To UBound(vOri, 2)
sDepartment = vOri(1, icol)
.Item("部門")(sDepartment) = 6 + .Item("部門").Count
.Add CreateObject("scripting.dictionary"), sDepartment
For irow = 2 To UBound(vOri)
sStaff = vOri(irow, icol)
If Len(sStaff) Then
.Item("人員")(sStaff) = 2 + .Item("人員").Count '從2開始計數
.Item(sDepartment)(sStaff) = .Item("人員")(sStaff) '記錄所有人的位置
End If
Next irow, icol
aTool = Split("擇一部門 Clear SelectAll 編輯 所有收件人 " & Join(.Item("部門").keys))
.Add aTool, "fcLB1"
aTool = Split("編輯模式 新增 刪除/修改 移動 退出編輯 編輯-")
.Add aTool, "fcLB1_edit"
End With
End Function