Поскольку у меня нет доступа к вашим исходным данным и т. Д., Я создал новую книгу с именами по умолчанию для всех листов и изменил некоторые вещи на «тестовые» данные, которые дали ожидаемые результаты - я изменил код обратно к вашему оригиналу с обновлениями для слияния клеток.
(код теста, который я использовал, находится в конце ответа).
Dim MergedCellsRowCount As Long
For Each c In Range("A1:A300")
If Trim(c.Value) Like JSONObjRemovedTasks("issues")(i)("fields")("assignee")("displayName") Then
c.EntireRow.Insert
c.Offset(-1, 1).Value = i 'the -1 inserts it to the new row (which is created above the "c.Row").
Range(Cells(c.Row - 1, 1), Cells(c.Row, 1)).Merge
MergedCellsRowCount = Range(c.Address).MergeArea.Rows.Count
Range("A" & c.Row & ":A" & c.Row + MergedCellsRowCount - 1).Rows.Ungroup
Range("A" & c.Row & ":A" & c.Row + MergedCellsRowCount - 1).Rows.Group
Exit For
End If
Next c
Поскольку вы только опубликовали фрагмент из вашего кода, я не уверен, что вы ссылаетесь на какой-либо конкретный лист c или рабочую книгу в этом коде, поэтому я не указал никаких объектов листа.
Если вы еще этого не сделали , вы должны добавить объекты и свойства в Range(Cells(c.Row - 1, 1), Cells(c.Row, 2)).Merge
к объекту Sheet
(например, Sheet1
или Sheets("SheetName")
, чтобы предотвратить непредвиденное такие результаты, как код, ссылающийся на неправильный лист.
Например:
Sheet1.Range(Sheet1.Cells(c.Row - 1, 1), Sheet1.Cells(c.Row, 2)).Merge
ИЛИ Вы можете обернуть его в With...End
Вот так:
With Sheet1
.Range(.Cells(c.Row - 1, 1), .Cells(c.Row, 1)).Merge`
End With
Вот несколько скриншотов с тестовыми данными и результатом выполнения кода (см. ниже используемый тестовый код) :
Данные испытаний:
Результат:
Используемый тестовый код:
Sub TestInsertNewRowAndMerge()
Dim MergedCellsRowCount As Long
For Each c In Range("A1:A300")
If Trim(c.Value) Like "test" Then
c.EntireRow.Insert
c.Offset(-1, 1).Value = "Success"
Sheet1.Range(Sheet1.Cells(c.Row - 1, 1), Sheet1.Cells(c.Row, 2)).Merge
MergedCellsRowCount = Range(c.Address).MergeArea.Rows.Count
Range("A" & c.Row & ":A" & c.Row + MergedCellsRowCount - 1).Rows.Ungroup
Range("A" & c.Row & ":A" & c.Row + MergedCellsRowCount - 1).Rows.Group
Exit For
End If
Next c
End Sub