自动填充时出现错误 80010108

Posted

技术标签:

【中文标题】自动填充时出现错误 80010108【英文标题】:Error 80010108 with autofill 【发布时间】:2011-03-29 10:34:57 【问题描述】:

我正在编写代码,但收到 -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

只要 Cells(i,5) 范围内的单元格为空白,代码就会崩溃。例如,如果在单元格(3,5)中我有一个数字或日期,如果在单元格(4,5)中我没有任何东西,它会崩溃。希望你们能帮助我。谢谢

【问题讨论】:

只是说我已经设法通过“On Error Resume Next”绕过错误,但我不想使用它。 【参考方案1】:

我认为您的 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

【讨论】:

以上是关于自动填充时出现错误 80010108的主要内容,如果未能解决你的问题,请参考以下文章

尝试填充占位符时出现Tensorflow错误

Swift:填充二维数组时出现索引超出范围错误

使用自动填充 (Excel) 时保持单元格的颜色

解密时出现填充错误,但仍然有效

从 CSV 填充 postgres 表列时出现非空约束错误

访问填充了从管道读取的数据的结构时出现分段错误