我想整合我的 VBA,以便更容易管理和查看,而不是多次復制它。然后我想在 sub 內部撰寫一個 if 陳述句,根據我單擊的按鈕打開記錄集。有 4 個按鈕
cmdAllSuppliers cmdActive cmdInactive cmdArrangments
每個按鈕都有呼叫 subEmailQuery和錯誤處理的 VBA。子代碼如下。
Sub EmailQuery()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim strEmail As String
Dim strQryAll As String
Dim strQryActive As String
Dim strQryInactive As String
Dim strQryArrangement As String
Set cn = CurrentProject.Connection
Set rs = New ADODB.Recordset
strQryAll = "qryAllSuppliers"
strQryActive = "qryActiveSuppliers"
strQryInactive = "qryInactiveSuppliers"
strQryArrangement = "qryAgreementEmail"
rs.Open strQryAll, cn
rs.Open strQryActive, cn
rs.Open strQryInactive, cn
rs.Open strQryArrangement, cn
With rs
Do While Not .EOF
strEmail = strEmail & .Fields("Email") & ";"
.MoveNext
Loop
.Close
End With
strEmail = Left(strEmail, Len(strEmail) - 1)
DoCmd.SendObject , , , , , strEmail, , , True, False
End Sub
rs.open 顯然不會像現在這樣作業,但我希望 if 陳述句根據我按下的按鈕打開這四個中的一個。
uj5u.com熱心網友回復:
Sub EmailQuery(strQueryName as string)
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim strEmail As String
Set cn = CurrentProject.Connection
Set rs = New ADODB.Recordset
rs.Open strQueryName, cn
With rs
.movelast
.movefirst
Do While Not .EOF
strEmail = strEmail & .Fields("Email") & ";"
.MoveNext
Loop
.Close
End With
strEmail = Left(strEmail, Len(strEmail) - 1)
DoCmd.SendObject , , , , , strEmail, , , True, False
End Sub
'EmailQuery is a sub so no () around parameters
Private Sub cmdAllSuppliers_Click()
EmailQuery strQryAll
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/482476.html
