Ошибка 80010108 с автозаполнением - PullRequest
0 голосов
/ 29 марта 2011

Я пишу код, но получаю ошибку -2147417848 (80010108).Я знаю, что это происходит каждый раз, когда он «получает» пустую ячейку, но я не знаю, как это исправить, может кто-нибудь помочь мне, пожалуйста?Вот код

Dim i, g As Integer

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    g = 12

    For i = 3 To 5000

        If Worksheets("Registo_EPI´s").Cells(i, 1).Value = Cells(4, 20).Value Then
            Cells(g, 21).Value = Worksheets("Registo_EPI´s").Cells(i, 5).Value
            g = g + 1
        End If

    Next i

End Sub

Всякий раз, когда ячейка в диапазоне ячеек (i, 5) пуста, код падает.Например, если в ячейке (3,5) у меня есть номер или дата и если в ячейке (4,5) у меня ничего нет, происходит сбой.Надеюсь, ребята, вы можете мне помочь.Спасибо

1 Ответ

0 голосов
/ 30 марта 2011

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

Например, если показанный обработчик событий Worksheet_Change относится к Sheet1 (и, следовательно, неквалифицированные ссылки, такие как Cells(4, 20).Value, также относятся к Sheet1), затем при изменении значения Cells(g, 21) вызывается обработчик события Worksheet_Change для Sheet1 и т. Д.* Вы должны использовать параметр Target обработчика событий, чтобы защититься от этого.Если, например, вас интересуют только изменения Cells(4, 20), вы можете получить:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If (Target.Address(ReferenceStyle:=xlR1C1) = "R4C20") Then
        g = 12

        For i = 3 To 5000

            If Worksheets("Registo_EPI´s").Cells(i, 1).Value = Cells(4, 20).Value Then
                Cells(g, 21).Value = Worksheets("Registo_EPI´s").Cells(i, 5).Value
                g = g + 1
            End If

        Next i
    End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...