Private Sub CmdOpenInsp1201_Click()
Dim xlApp As Excel.Application
Dim xlWkb As Excel.Workbook
Dim xlWks As Excel.Worksheet
Dim SQLCpt As String
Dim SQLLt As String
Dim rsCpt As DAO.Recordset
Dim rsLt As DAO.Recordset
SQLCpt = " SELECT [FirstName] & "" "" & [LastName] AS FullName, TblMembers.Position " & _
" FROM TblMembers " & _
" WHERE TblMembers.Position='Capt #1' "
SQLLt = " SELECT [FirstName] & "" "" & [LastName] AS FullName, TblMembers.Position " & _
" FROM TblMembers " & _
" WHERE TblMembers.Position='Lt #1' "
Set rsCpt = CurrentDb.OpenRecordset(SQLCpt, dbOpenSnapshot)
Set rsLt = CurrentDb.OpenRecordset(SQLLt, dbOpenSnapshot)
Set xlApp = New Excel.Application
Set xlWkb = xlApp.Workbooks.Open(CurrentProject.Path & "\Trk_Insp_1201_10_08_2016.xlsx")
Set xlWks = xlWkb.Sheets("Oct")
xlApp.Visible = True
With xlWks
Do While Not rsCpt.EOF
.Range("U42").Value = Nz(rsCpt!FullName, "")
rsCpt.MoveNext
Loop
End With
With xlWks
Do While Not rsLt.EOF
.Range("AA42").Value = Nz(rsLt!FullName, "")
rsLt.MoveNext
Loop
End With
SubExit:
On Error Resume Next
rsCpt.Close
rsLt.Close
Set rsCpt = Nothing
Set rsLt = Nothing
Exit Sub
SubError:
MsgBox "Error Number: " & Err.Number & "=" & Err.Description, vbCritical + vbOKOnly, "An error occured"
GoTo SubExit
End Sub
Dies funktioniert und läuft wie erwartet, aber ich bin mir nicht sicher über die Fehlerbehandlung. Ich brauche die Datei am Ende des Sub geöffnet, aber ich habe die rs freigegeben, ist das nötig? Ist der richtige Weg dies zu tun?Fehlerbehandlung bei Sub
Würden Sie es anders machen?
Danke für die Hilfe bis jetzt.
D
In der Fehlerbehandlung, sollte es sein 'Fortsetzen SubExit' statt' GoTo SubExit'. – Andre
@Andre das ist interessant. Ich wusste nicht, dass du das kannst, aber es funktioniert nicht wie beabsichtigt. Die Verwendung von 'Resume SubExit' würde den gleichen Fehler verursachen. Was der OP tun möchte, ist eine Fehlermeldung für jeden Fehler, der ausgelöst wird, bevor die Objekte bereinigt werden. Nachdem er die Fehlermeldung erhalten hat, möchte er, dass die Verbindung und die Recordsets geschlossen sind und der Sub-Server beendet wird. –
Ich denke, du hast es falsch verstanden. Ein Fehlerbehandlungsblock sollte mit "Fortsetzen