2015-05-26 11 views
0

Я пытаюсь написать код, который найдет последнюю строку в расширенном листе excel, и автозаполнение еще 24 строк с теми же формулами, которые содержат две последние строки (например, вы автоматически выполняете автозаполнение). Колонка A содержит дату и время с одного часового периода, например так:Использование AutoFill в Excel VBA для диапазона ячеек

26/5/15 00:00 
26/5/15 01:00 
and so on... 

Столбцы BG содержат формулы, которые применяются в зависимости от времени в соответствующей ячейке в колонке А

Это код, который я придумал:

Sub FillDay() 
Dim Initial_cell, Var_1, Final_End_Row As Long, Update_range, Range_To_Fill As String 
Dim col, n, b As Integer, rng As Range 
col = 1 
If Application.WorksheetFunction.CountA(Columns(col)) = 0 Then 
MsgBox "You have selected a blank column" 
n = 0 
Else 
Set rng = Intersect(Columns(col), ActiveSheet.UsedRange) 
On Error Resume Next 
b = rng.Cells.SpecialCells(xlCellTypeBlanks).Count 
n = rng.Cells.Count - b 
On Error GoTo 0 
n = n + 1 
End If 
'n returns the number of the last occupied cell 
Initial_cell = n 
Var_1 = Initial_cell - 2 
Update_range = "A" & Var_1 & ":" & "G" & Initial_cell 
Final_End_Row = Initial_cell + 24 
Range_To_Fill = "A" & Initial_cell & ":" & "G" & Final_End_Row 
Range(Update_range).AutoFill Destination:=Range(Range_To_Fill), Type:=xlFillDefault 
End Sub 

Получение ошибки во время выполнения «1004» Application определен или определен объект ошибки ... Использование отладки проблема, кажется, в последней строке

Новое в VBA, любая помощь приветствуется!

Благодаря

+1

На какой линии у вас есть ошибка? – R3uK

+0

Кажется, что последняя строка – Fasi4

ответ

0

изменить последний бит кода для

Initial_cell = n - 1 
Var_1 = Initial_cell - 2 
Update_range = "A" & Var_1 & ":" & "G" & Initial_cell 
Final_End_Row = Initial_cell + 24 
Range_To_Fill = "A" & Var_1 & ":" & "G" & Final_End_Row 
Range(Update_range).AutoFill Destination:=Range(Range_To_Fill), Type:=xlFillDefault 

2 проблемы: - 1 вы включили пустую строку в Initial_cell (это может быть преднамеренным?). 2 автозаполнения назначения должен начать в той же строке, что делает update_range

другая вещь, чтобы думать о том, что может быть var_1 = initial_setup -2 может вызвать ошибку позже в строке, если она отрицательна

+0

Большое спасибо, проблема была с назначением, поскольку вы упомянули Update_range и Range_To_Fill, чтобы начать с той же строки. Не могу понять, где пустая строка исходит из Initial_cell. Можете ли вы объяснить этот момент, пожалуйста. Начальная ячейка будет всегда больше 2, поэтому не будет проблемы с отрицательным значением Var_1. – Fasi4

+0

Если вы входите в первый оператор if: - n устанавливается в 0, тогда Initial_cell будет установлен в 0, и у вас будет -2 в Var_1. вы можете переместить последние 6 строк кода в разделе «else» вашего оператора if – 99moorem

+0

Понял, спасибо! – Fasi4

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