2015-03-17 4 views
1

Я пытаюсь следовать this example, но это не работает. Вызывает ли проблема offset?Вставить формулу в ячейки с помощью excel vba

Вот что у меня есть:

Sub parse_dates_flurry() 

    Dim col_diff As Integer ' how many columns away the unparsed date 
    col_diff = -20 

    Dim num_of_char As Integer 
    num_of_char = 10 

    Dim sheet_name_flurry As String 
    sheet_name_flurry = "flurry_an_output.csv" 

' get rows used in sheet 
    Dim rows1 As Long 
    rows1 = Get_Rows_Generic(sheet_name_flurry, 1) 

' find last column and fill with formula 
    Dim formula_parse As String 
    formula_parse = "=LEFT(RC[col_dif],num_of_char)" ' 

    Dim starting_cell_range As Range 
    Dim n As Long 
    With Worksheets(sheet_name_flurry) 
     Set starting_cell_range = .Range(find_last_column(sheet_name_flurry)) 
     starting_cell_range.Offset(0, 1) = "Parsed date" 

     For n = 1 To (rows1 - 1) 
     ' getting error here: 
      starting_cell_range.Offset(n, 1).Formula = formula_parse 
     Next n 
    End With 
End Sub 
+0

Что ошибка вы получаете, точно? –

+0

«Ошибка времени выполнения 1004» - элемент с указанным именем не найден. – dwstein

ответ

2
formula_parse = "=LEFT(RC[col_dif],num_of_char)" 

Должно быть так:

formula_parse = "=LEFT(RC[" & col_dif & "]," & num_of_char & ")" 

Помните, что formula_parse в виде строки, которая является правильной.
Но чтобы связать значение переменной с ним, вам нужно сделать это, как указано выше.
И поскольку вы передаете формулу в R1C1 нотации, измените эту строку:

starting_cell_range.Offset(n, 1).Formula = formula_parse 

к этому:

starting_cell_range.Offset(n, 1).FormulaR1C1 = formula_parse 
+0

Я должен был знать лучше. Благодаря! – dwstein

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