2014-09-19 1 views
0

Я строю формулы в запросе 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 мой метод для выполнения запроса и возвращает несвязанный набор записей.)

Благодаря

ответ

0

Вам придется итерируем и результирующий набор формул, как это:

Range("A1").Formula = myFormulaString 

Или

Range("A1").FormulaR1C1 = myFormulaString 
+0

Спасибо, я надеялся избежать переборе клетки так, но это правильный способ установить формулу. – Johnny3663

Смежные вопросы