Hola, yo lo haría de la siguiente manera:
'------------------------------------------------------------------------------
' Procedimiento............: pfEjecutaComando
' Descripción..............: Ejecuta una sentencia SQL
' Autor....................: caliaga
'------------------------------------------------------------------------------
Public Function pfEjecutaComando( _
  ByVal lvStrComando As String) As Boolean
  Dim BolResultado As Boolean
  On Error GoTo pfEjecutaComandoError
  pvLngError = 0
  pvStrError = ""
  cnn.IsolationLevel = adXactReadCommitted
  cnn.BeginTrans
  psGrabaLog clInformacion, cSql, lvStrComando
  cnn.Execute lvStrComando
  psGrabaLog clInformacion, cVB, "Query ejecutado"
  cnn.CommitTrans
  BolResultado = True
  pfEjecutaComando = BolResultado
  On Error GoTo 0
  Exit Function
pfEjecutaComandoError:
  cnn.RollbackTrans
  pvLngError = Err.Number
  pvStrError = Err.Description
  psGrabaLog clError, cSql, "Error: " & pvStrError
  If Not EsCompilado Then
    Debug.Assert pvLngError = 0
    MsgBox "Query: " & lvStrComando & vbCrLf & "Error: " & pvStrError, vbCritical + vbOKOnly, "Atención"
  End If
  Screen.MousePointer = vbDefault
  pfEjecutaComando = False
End Function