Я пишу небольшой код для автоматизации некоторых моих работ. Я использую Autofill
для заполнения диапазона. Все работает нормально, пока диапазон остается прежним. Когда я меняю диапазон, он показывает ошибку 1004: для этой операции объединенные ячейки должны быть одинакового размера.Excel VBA: автозаполнение с ошибкой динамического диапазона
Еще одна вещь, которую нужно добавить, показывает только тогда, когда диапазон становится больше.
Вот часть моего кода, когда изменения диапазона линия ниже 'autofill first column
становится желтой:
Dim WSL As Worksheet, WSB As Worksheet
Dim first_col As Long, second_col As Long
Dim first_r As Byte, first_c As Byte
Dim second_r As Byte, second_c As Byte
Dim LastCellRowNumber As Long
Dim LastCell As Range, ActiveWS As String
Application.ScreenUpdating = False
Set WSB = Worksheets("Barcodes") 'your worksheet name
Set WSL = Worksheets("List") 'your worksheet name
With WSL
Set LastCell = .Cells(.Rows.Count, "A").End(xlUp)
LastCellRowNumber = LastCell.Row
End With
ActiveWS = ActiveSheet.Name
first_col = Round(LastCellRowNumber/2) + 1
second_col = LastCellRowNumber - first_col
first_r = 5 'position of "first column" row
first_c = 7 'position of "first column" column
second_r = 5 'position of "second column" row
second_c = 11 'position of "first column" column
j = 7
k = 8
l = 7
m = 8
'activate Barcodes sheet
WSB.Activate
'autofill first column
WSB.Range(Cells(first_r, first_c), Cells(first_r + 1, first_c)).AutoFill _
Destination:=Range(Cells(first_r, first_c), Cells((first_r + 1) + (first_col * 2) - 4, _
first_c)), Type:=xlFillDefault 'filling column G
WSB.Range(Cells(first_r, first_c + 1), Cells(first_r + 1, first_c + 2)).AutoFill _
Destination:=Range(Cells(first_r, first_c + 1), Cells(first_r + 1 + (first_col * 2) - 4, _
first_c + 2)), Type:=xlFillFormats 'filling with columns H:I
'autofill second column
WSB.Range(Cells(second_r, second_c), Cells(second_r + 1, second_c)).AutoFill _
Destination:=Range(Cells(second_r, second_c), Cells(second_r + 1 + (second_col * 2), _
second_c)), Type:=xlFillDefault 'filling column K
WSB.Range(Cells(second_r, second_c + 1), Cells(second_r + 1, second_c + 2)).AutoFill _
Destination:=Range(Cells(second_r, second_c + 1), Cells(second_r + 1 + (second_col * 2), _
second_c + 2)), Type:=xlFillFormats 'filling with columns L:M
проверить таблицу 'WSB' для megred клеток –
@simoco WSB содержит объединенные ячейки - это шаблоны. Autofill выбирает эти объединенные ячейки и заданный диапазон автозаполнения. – lowak
, как говорится в сообщении об ошибке, вы объединили ячейки с различной «формой». говорят в первой строке 'C1: D1', но во втором' D2: E2' –