A fórmula VBA do Excel, chamada de uma célula, interrompe o processamento do VBA ou encontra um erro definido pelo aplicativo quando uma célula da planilha é gravada em
Eu tenho essa fórmula em uma célula:
=GetData("Channel_01","Chicago")
O qual executa este código:
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
O problema ocorre nesta linha:
'*** WHEN THIS LINE OF CODE IS REACHED AND EXECUTES, PROCESSING STOPS
Set destination.Value = ChannelCode
,
É definir isso invocando um recálculo da planilha, que encerra o thread do VBA em execução ou algo parecido? Eu pensei que sim, então eu tentei isso antes de escrever qualquer saída:
Application.Calculation = xlCalculationManual
Mas agora nessa mesma linha de código eu recebo:Erro definido pelo aplicativo ou definido pelo objeto.
A gravação de uma função VBA na mesma planilha da qual a função VBA é chamada, apenas não é permitida?