Я строю формулы в запросе SQL, а затем используя функцию EXCEL VBA CopyFromRecordSet, чтобы вставить формулы в электронную таблицу. Текст формулы вводится правильно, но отображается только как текст и не вычисляется. Режим расчета установлен на автоматический, и ячейка отформатирована как «Общее», а не «Текст».Формулы Excel не вычисляются при копировании из набора записей
Чтобы получить формулы для расчета, я должен ввести каждую ячейку, как если бы я собирался отредактировать формулу, а затем покинуть ячейку, фактически не имея необходимости редактировать что-либо. Просто действие ввода и выхода вызывает вычисление формулы, но должно выполняться вручную в каждой ячейке.
Sub Test1()
Application.ReferenceStyle = xlR1C1
Dim qry As String
qry = "SELECT mYEAR, '=RC[-1]*12' AS xFormula FROM tblYears"
Dim Datacmd As ADODB.Command
Set Datacmd = New ADODB.Command
Datacmd.CommandText = qry
Dim Datars As ADODB.Recordset
Set Datars = DB.RunSelect(GV.ConStr_Config, Datacmd)
ActiveSheet.Range("A1").CopyFromRecordset Datars
Application.ReferenceStyle = xlA1
End Sub
В результате этого ...
1 2
1 2012 =RC[-1]*12
2 2013 =RC[-1]*12
3 2014 =RC[-1]*12
Тогда я должен дважды щелкнуть в каждой ячейке формулы, чтобы начать редактирование, то я могу просто нажать на другую ячейку, чтобы выйти из формулы и будет вычислять.
1 2
1 2012 24144
2 2013 24156
3 2014 24168
Я попытался добавить кнопку «Рассчитать сейчас»; и добавление команды VBA APPLICATION.CALCULATION = xlCalculationManual в начале с APPLICATION.CALCULATE (и CalculateFULL) в конце.
Я не могу выполнять вычисления в запросе, формулы должны быть интерактивными с данными Excel в конечном продукте.
(Функция DB.RunSelect мой метод для выполнения запроса и возвращает несвязанный набор записей.)
Благодаря
Спасибо, я надеялся избежать переборе клетки так, но это правильный способ установить формулу. – Johnny3663