自动填充时出现错误 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的主要内容,如果未能解决你的问题,请参考以下文章