返回列表 上一主題 發帖

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

回復 2# colinyang

把程式碼貼到UserForm1中試試
  1. Option Explicit
  2. Dim myCon As Object, myRs As Object, SQL$
  3. Private Sub ComboBox1_Click()
  4.     ComboBox2.Clear
  5.     ComboBox3.Clear
  6.     SQL = "SELECT 公私立" & _
  7.           " FROM [學校名單$]" & _
  8.           " Where 區域 Like '" & ComboBox1.Value & "'" & _
  9.           " GROUP BY 公私立;"
  10.     Set myRs = myCon.Execute(SQL)
  11.     ComboBox2.List = Application.Transpose(myRs.GetRows)
  12. End Sub

  13. Private Sub ComboBox2_Click()
  14.     ComboBox3.Clear
  15.     SQL = "SELECT 學校" & _
  16.           " FROM [學校名單$]" & _
  17.           " GROUP BY 學校, [區域] & [公私立]" & _
  18.           " HAVING [區域] & [公私立] Like '" & ComboBox1.Value & ComboBox2.Value & "';"
  19.     Set myRs = myCon.Execute(SQL)
  20.     ComboBox3.List = Application.Transpose(myRs.GetRows)
  21. End Sub

  22. Private Sub CommandButton1_Click() '輸人資料
  23.     Dim ro
  24.     With Sheets("工作表1")
  25.         ro = .Cells(Rows.Count, 2).End(xlUp).Row + 1
  26.         .Cells(ro, 2) = ComboBox1.Value
  27.         .Cells(ro, 3) = ComboBox2.Value
  28.         .Cells(ro, 4) = ComboBox3.Value
  29.     End With
  30.     ComboBox3.Clear
  31.     ComboBox2.Clear
  32.     ComboBox1.Value = ""
  33. End Sub

  34. Private Sub CommandButton2_Click() '離開
  35.     Unload Me
  36. End Sub

  37. Private Sub UserForm_Initialize()
  38.     Set myCon = CreateObject("ADODB.Connection")
  39.     Set myRs = CreateObject("ADODB.Recordset")
  40.     myCon.Open "provider=Microsoft.ACE.OLEDB.12.0;" & _
  41.                "Data Source=" & ThisWorkbook.Path & "\data.xlsx;" & _
  42.                "Extended Properties=""Excel 12.0;HDR=Yes;"";"
  43.     SQL = "SELECT 區域" & _
  44.           " FROM [學校名單$]" & _
  45.           " GROUP BY 區域;"
  46.     Set myRs = myCon.Execute(SQL)
  47.     ComboBox1.List = Application.Transpose(myRs.GetRows)
  48.     Set myRs = Nothing
  49. '    myCon.Close
  50. '    Set myCon = Nothing
  51. End Sub
複製代碼

TOP

回復 5# colinyang

下面代碼摻雜著ADODB及SQL語言,若需求更多說明,請自行Google
  1. Option Explicit
  2. Dim myCon As Object, myRs As Object, SQL$
  3. Private Sub ComboBox1_Click()
  4.     ComboBox2.Clear
  5.     ComboBox3.Clear
  6.     '增加了ComboBox4.Value至 FROM的後面來切換工作表
  7.     SQL = "SELECT 公私立" & _
  8.           " FROM [" & ComboBox4.Value & "$]" & _
  9.           " Where 區域 Like '" & ComboBox1.Value & "'" & _
  10.           " GROUP BY 公私立;"
  11.     Set myRs = myCon.Execute(SQL)
  12.     ComboBox2.List = Application.Transpose(myRs.GetRows)
  13. End Sub

  14. Private Sub ComboBox2_Click()
  15.     ComboBox3.Clear
  16.     '增加了ComboBox4.Value至 FROM的後面來切換工作表
  17.     SQL = "SELECT 學校" & _
  18.           " FROM [" & ComboBox4.Value & "$]" & _
  19.           " GROUP BY 學校, [區域] & [公私立]" & _
  20.           " HAVING [區域] & [公私立] Like '" & ComboBox1.Value & ComboBox2.Value & "';"
  21.     Set myRs = myCon.Execute(SQL)
  22.     ComboBox3.List = Application.Transpose(myRs.GetRows)
  23. End Sub

  24. Private Sub ComboBox4_Change()
  25.     ComboBox3.Clear
  26.     ComboBox2.Clear
  27.     ComboBox1.Clear
  28.     SQL = "SELECT 區域" & _
  29.           " FROM [" & ComboBox4.Value & "$]" & _
  30.           " GROUP BY 區域;"
  31.     Set myRs = myCon.Execute(SQL)
  32.     ComboBox1.List = Application.Transpose(myRs.GetRows)
  33.     Set myRs = Nothing
  34. End Sub

  35. Private Sub CommandButton1_Click() '輸人資料
  36.     Dim ro
  37.     With Sheets("工作表1")
  38.         ro = .Cells(Rows.Count, 2).End(xlUp).Row + 1
  39.         .Cells(ro, 2) = ComboBox1.Value
  40.         .Cells(ro, 3) = ComboBox2.Value
  41.         .Cells(ro, 4) = ComboBox3.Value
  42.     End With
  43.     ComboBox3.Clear
  44.     ComboBox2.Clear
  45.     ComboBox1.Clear
  46.     ComboBox4.Value = ""
  47. End Sub

  48. Private Sub CommandButton2_Click() '離開
  49.    
  50.     Set myRs = Nothing
  51.     myCon.Close
  52.     Set myCon = Nothing
  53.     Unload Me
  54. End Sub

  55. Private Sub UserForm_Initialize()
  56.     Set myCon = CreateObject("ADODB.Connection")
  57.     Set myRs = CreateObject("ADODB.Recordset")
  58.     myCon.Open "provider=Microsoft.ACE.OLEDB.12.0;" & _
  59.                "Data Source=" & ThisWorkbook.Path & "\data.xlsx;" & _
  60.                "Extended Properties=""Excel 12.0;HDR=Yes;"";"
  61. '   加入ComboBox4的Vlaue
  62.     ComboBox4.AddItem "學校名單"
  63.     ComboBox4.AddItem "學校名單2"
  64. End Sub
複製代碼

TOP

        靜思自在 : 對父母要知恩,感恩、報恩。
返回列表 上一主題