У меня есть эта формула в ячейке:
=GetData("Channel_01","Chicago")
, которая выполняет этот код:
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
Проблема возникает в этой строке:
'*** WHEN THIS LINE OF CODE IS REACHED AND EXECUTES, PROCESSING STOPS
Set destination.Value = ChannelCode
Установка этого вызывает вызов перезаписи электронной таблицы, который завершает выполнение потока VBA или что-то в этом роде?Я так и думал, поэтому попробовал это перед тем, как написать какой-либо вывод:
Application.Calculation = xlCalculationManual
Но теперь в той же строке кода я получаю: Ошибка приложения или объекта.
Запись из функции VBA в тот же рабочий лист, с которого вызывается функция VBA, только не разрешена?