返回列表 上一主題 發帖

[發問] 如何利用VBA對另個檔案的資料庫進行篩選,然後將選出的值存入表格中

本帖最後由 Hsieh 於 2016-4-29 23:56 編輯

回復 2# colinyang

直覺是Combobox3清單會依據Combobox1,Combobox2內容變動
選定後按下按鈕依序輸入
  1. Public d2

  2. Private Sub ComboBox1_Change()
  3. ex
  4. End Sub

  5. Private Sub ComboBox2_Change()
  6. ex
  7. End Sub

  8. Private Sub ComboBox4_Change()
  9. Set d = CreateObject("Scripting.Dictionary")
  10. Set d1 = CreateObject("Scripting.Dictionary")
  11. Set d2 = CreateObject("Scripting.Dictionary")
  12. fs = ThisWorkbook.Path & "\data.xlsx" '請將2檔案放在同一目錄
  13. Set databook = Workbooks.Open(fs)
  14. With databook.Sheets(ComboBox4.Text)
  15. For Each a In .Range(.[A2], .[A2].End(xlDown))
  16.    d(a.Value) = "" 'A欄不重複清單
  17.    d1(a.Offset(, 1).Value) = "" 'B欄不重複清單
  18.    d2(a & a.Offset(, 1)) = IIf(d2(a & a.Offset(, 1)) = "", a.Offset(, 2), d2(a & a.Offset(, 1)) & "," & a.Offset(, 2)) 'A&B欄清單內容
  19. Next
  20. ComboBox1.List = d.keys
  21. ComboBox2.List = d1.keys
  22. End With
  23. databook.Close 0

  24. End Sub

  25. Private Sub CommandButton1_Click()
  26. Cells(Rows.Count, 2).End(xlUp).Offset(1).Resize(, 3) = Array(ComboBox1, ComboBox2, ComboBox3) '輸入資料
  27. End Sub

  28. Private Sub UserForm_Initialize()
  29. fs = ThisWorkbook.Path & "\data.xlsx" '請將2檔案放在同一目錄
  30. Set databook = Workbooks.Open(fs)
  31. For Each sh In databook.Sheets
  32.    ComboBox4.AddItem sh.Name
  33. Next
  34. databook.Close 0
  35. End Sub
  36. Sub ex()
  37. mystr = ComboBox1 & ComboBox2
  38. If d2(mystr) <> "" Then ComboBox3.List = Split(d2(mystr), ",") 'Combobox3的清單
  39. End Sub
複製代碼
學海無涯_不恥下問

TOP

        靜思自在 : 【行善要及時】行善要及時,功德要持續。如燒開水一般,未燒開之前千萬不要停熄火候,否則重來就太費事了。
返回列表 上一主題