J'ai cette formule dans une cellule:formule Excel VBA, appelé à partir d'une cellule, VBA de traitement arrête ou rencontre une erreur App-définie, lorsqu'une cellule de feuille de calcul est écrit à
=GetData("Channel_01","Chicago")
qui exécute ce code :
Public Function GetData(ChannelCode As String, Key As String) As String
Dim sql As String
Dim cmd As New ADODB.Command
Dim outputTo As Range
Set outputTo = Application.Caller
sql = "select * from ChannelData WHERE ChannelCode = ? AND Key1 = ?"
Set cmd = getCommand(sql, ChannelCode, Key)
Dim rs As ADODB.Recordset
Set rs = cmd.Execute
WritePivotRecordset ChannelCode, rs, outputTo.Offset(1, 0)
End Function
Public Sub WritePivotRecordset(ChannelCode As String, rs As ADODB.Recordset, destination As Range)
Dim i As Integer
'*** WHEN THIS LINE OF CODE IS REACHED AND EXECUTES, PROCESSING STOPS
Set destination.Value = ChannelCode
For i = 1 To rs.Fields.Count - 1 'skip first field
destination.Offset(0, i).Value = rs.Fields(i).Name
Next
destination.Offset(1, 0).CopyFromRecordset rs
End Sub
Le problème se produit sur cette ligne:
'*** WHEN THIS LINE OF CODE IS REACHED AND EXECUTES, PROCESSING STOPS
Set destination.Value = ChannelCode
réglage est-il cette invocation d'une feuille de calcul rec alc, qui termine le thread VBA en cours d'exécution ou quelque chose comme ça? Je pensais, donc j'ai essayé cela avant d'écrire une sortie:
Application.Calculation = xlCalculationManual
Mais maintenant, sur cette même ligne de code que je reçois: application défini ou un objet défini erreur.
L'écriture d'une fonction VBA dans la même feuille de calcul à partir de laquelle la fonction VBA est appelée n'est-elle pas autorisée?
Définition de quoi? –