2014-09-19 1 views
0

SQL 쿼리에 수식을 작성한 다음 ExcelFBA 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