EXCEL 2010运行时错误'50290'对象'_Worksheet'的方法“_Evaluate”失败

然后我双击数据validation的单元格,然后尝试从下拉列表中select我得到错误运行时错误运行时错误“50290”。 对象“工作表”的方法“_Evaluate”失败

Private Sub Worksheet_Change(ByVal Target As Range) Select Case Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row Case Is < 5 LastRow = 5: CountRow = 0: R = 1 Case Is > 5 LastRow = Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row: CountRow = LastRow - 4: R = 0 Case 5 LastRow = Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row: CountRow = LastRow - 4: R = 1 End Select End Sub 

 Select Case Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row case 1 msgbox "hello" end select 

运行时错误运行时错误“50290”。 应用程序定义或对象定义的错误。

 Select Case Cells.Find(What:="*", After:=Range("A1"), SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row 

为什么会发生?

尝试使用:

 After:=Range("A1") 

而不是:

 After:=[A1] 

编辑:这些都没有在2010年修复它。然而,一个简单的error handling程序似乎解决了第一个更改事件问题(双击然后selectDV下拉菜单实际上触发两个更改事件:

 Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo err_handle Select Case Cells.Find(What:="*", after:=[A1] SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row Case Is < 5 lastrow = 5: CountRow = 0: R = 1 Case Is > 5 lastrow = Cells.Find(What:="*", after:=[a1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row: CountRow = lastrow - 4: R = 0 Case 5 lastrow = Cells.Find(What:="*", after:=[a1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row: CountRow = lastrow - 4: R = 1 End Select err_handle: End Sub 

我在电子表格中使用WinHTTP以asynchronous模式运行错误50290来检查链接/下载数据。 根据这个www.pcreview.co.uk线程 ,当Excel没有准备好时脚本试图写入工作簿时会出现这个错误。 您可以使用Application.ReadytestingExcel应用程序的就绪状态。

在写入工作簿之前使用此代码在我的脚本中工作:

 Do While Not Application.Ready DoEvents Loop