Как исправить «определяемую приложением или определяемую объектами ошибку», вызванную моим диапазоном ячеек VBA - PullRequest
0 голосов
/ 22 января 2019

Каждый раз, когда я пытаюсь запустить свой макрос, первый раздел, окруженный LIRCounter, работает нормально, но Excel возвращает «Ошибка времени выполнения« 1004 »: ошибка приложения или объекта», а отладка выделяет мойRange (...). Объединение разделов в остальной части моего макроса.

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

Я попытался переформатировать диапазон, удалив .Merge, переменную Counter и переписав весь код, но я не могу сузить, какая частьдиапазон вызывает ошибку.

Sub MergeCells()

    Set Worksheet = Worksheets("Technical Data")

    With Worksheet
        For LIRCounter = 44 To 15 Step -1
            If .Cells(LIRCounter, 19).Value = Not IsEmpty(Cells(LIRCounter, 19)) Then
            Else
                .Range(.Cells(LIRCounter, 21), .Cells(LIRCounter, 26)).Merge
            End If

            If .Cells(LIRCounter, 19).Value = Not IsEmpty(Cells(LIRCounter, 19)) Then
            Else
                .Range(.Cells(LIRCounter, 21), .Cells(LIRCounter, 26)) = "N/A"
            End If
        Next LIRCounter

        For ETCounter = 44 To 15 Step -1
            If .Cells(ETCounter, 3).Value = "Structural" Then
                .Range(.Cells(ETCounter, 4), .Cells(ETCounter, 12)).Merge
            End If

            If .Cells(ETCounter, 3).Value = "Structural" Then
                .Range(.Cells(ETCounter, 4), .Cells(ETCounter, 12)) = "N/A - Structural"
            End If
        Next ETCounter

        For ETCounter2 = 44 To 15 Step -1
            If .Cells(ETCounter2, 3).Value = "Structural" Then
                .Range(.Cells(ETCounter2, 15), .Cells(ETCounter2, 26)).Merge
            End If

            If .Cells(ETCounter2, 3).Value = "Structural" Then
                .Range(.Cells(ETCounter2, 15), .Cells(ETCounter2, 26)) = "N/A - Structural"
            End If
        Next ETCounter2
    End With
End Sub

Ожидаемый результат: если в раскрывающемся меню ячейки C15 выбран «Структурный», то ячейки D15: L15 объединяются в одну ячейку, а ячейки O15: Z15объединяются в одну ячейку, и обе объединенные ячейки говорят «N / A - Структурная».И то же самое относится к каждой строке вплоть до строки 44. Когда выполняется макрос, он просто возвращает «Ошибка времени выполнения« 1004 »: ошибка приложения или объекта», и никакие ячейки не объединяются.

Как это должно работать

1 Ответ

0 голосов
/ 22 января 2019

В качестве предложения вы можете написать код проще, удалите много лишнего кода.Только один for loop, потому что все три цикла одинаковы и только два if else.Почему ошибка?Это не воспроизводимо для меня.Попробуйте закомментировать большую часть кода и попытаться сузить источник ошибки.Источником ошибки также могут быть данные на листе, поэтому попробуйте сначала запустить код на пустом / пустом листе.HTH.

Option Explicit

Sub MergeCells()
    Dim TechnicalDataSheet As Worksheet
    Dim counter As Long

    Set TechnicalDataSheet = Worksheets("Technical Data")

    With TechnicalDataSheet 
        For counter = 44 To 15 Step -1
            If .Cells(counter, 19).Value = "" Then
                .Range(.Cells(counter, 21), .Cells(counter, 26)).Merge
                .Range(.Cells(counter, 21), .Cells(counter, 26)) = "N/A"
            End If

            If .Cells(counter, 3).Value = "Structural" Then
                .Range(.Cells(counter, 4), .Cells(counter, 12)).Merge
                .Range(.Cells(counter, 4), .Cells(counter, 12)) = "N/A - Structural"
                .Range(.Cells(counter, 15), .Cells(counter, 26)).Merge
                .Range(.Cells(counter, 15), .Cells(counter, 26)) = "N/A - Structural"
            End If
        Next counter
    End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...