«Ошибка найденных ячеек» в Excel vba

Я использую следующий код для unMerge и скопируйте ячейки. Это код, который я использую.

Sub unMerge() Dim lastRow As Long Dim lastCol As Long lastRow = Range("B2").End(xlDown).Row lastCol = Range("A2").End(xlToRight).Column For iCol = 1 To lastCol Columns(iCol).unMerge Columns(iCol).SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=r[-1]c" Next iCol End Sub 

Код работает плавно, когда в столбце сливаются ячейки, однако, когда столбец встречается без объединенных ячеек, он дает Captioned Error. В чем может быть ошибка в коде.

Если пустые ячейки не найдены, метод SpecialCells будет выходить из строя. Чтобы этого избежать, вы можете использовать простую обработку ошибок, чтобы пропустить эту ошибку

 On Error Resume Next Columns(iCol).SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=r[-1]c" 

Если все остальное работает гладко, это хороший способ исправить это:

 Sub unMerge() Dim lastRow As Long Dim lastCol As Long Dim iCol As Long lastRow = Range("B2").End(xlDown).Row lastCol = Range("A2").End(xlToRight).Column For iCol = 1 To lastCol If Columns(iCol).MergeCells Then Columns(iCol).unMerge If RangeContainsCellTypeBlanks(Columns(iCol)) Then Columns(iCol).SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=r[-1]c" End If Next iCol End Sub Public Function RangeContainsCellTypeBlanks(rng As Range) As Boolean On Error GoTo RangeContainsCellTypeBlanks_Error If rng.Cells.SpecialCells(xlCellTypeBlanks).Count > 0 Then RangeContainsCellTypeBlanks = True On Error GoTo 0 Exit Function RangeContainsCellTypeBlanks_Error: RangeContainsCellTypeBlanks = False End Function 

Он проверяет объединенные ячейки, и если они найдены, он выполняет unMerge и записывает FormulaR1C1. Вот документация Microsoft для свойства MergeCells : https://msdn.microsoft.com/en-us/vba/excel-vba/articles/range-mergecells-property-excel

Что касается SpecialCellsTypeBlanks, очевидно, что существует известное ограничение, которое не позволяет легко обойти его, и, следовательно, следует использовать On Error Resume Next , хотя я действительно не поклонник этой ошибки – https: //www.rondebruin .nl / выигрыш / s4 / win003.htm

Таким образом, по крайней мере, я использую его в логической функции, убедившись, что он не загрязняет остальную часть кода.

Давайте будем гением компьютера.