VBA:获取运行时间1004:使用单元格时,对象“_Worksheet”的方法“范围”失败

我有2个工作表:资产和概述。

这些function都放在一个模块中。

Public Function GetLastNonEmptyCellOnWorkSheet(Ws As Worksheet, Optional sName As String = "A1") As Range Dim lLastRow As Long Dim lLastCol As Long Dim rngStartCell As Range Set rngStartCell = Ws.Range(sName) lLastRow = Ws.Cells.Find(What:="*", After:=Ws.Range(rngStartCell), LookIn:=xlFormulas, _ Lookat:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, _ MatchCase:=False).Row lLastCol = Ws.Cells.Find(What:="*", After:=Ws.Range(rngStartCell), LookIn:=xlFormulas, _ Lookat:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, _ MatchCase:=False).Column Set GetLastNonEmptyCellOnWorkSheet = Ws.Range(Ws.Cells(lLastRow, lLastCol)) End Function 

从工作表概览我打电话:

  Set RngAssets = GetLastNonEmptyCellOnWorkSheet(Worksheets("Assets"), "A1") 

但是我总是得到这个错误:

VBA:获取运行时间1004:对象'_Worksheet'的方法'范围'失败

在线上:

  Set GetLastNonEmptyCellOnWorkSheet = Ws.Range(Ws.Cells(lLastRow, lLastCol)) 

工作表资产上有数据。 最后使用的单元格是W9(lLastRow = 9和lLastCol = 23)。

任何想法,为什么这是行不通的?

这是你的问题陈述:

 Set GetLastNonEmptyCellOnWorkSheet = Ws.Range(Ws.Cells(lLastRow, lLastCol)) 

评估最里面的括号:

 ws.Cells(lLastRow, lLastCol) 

一个范围,但范围的默认属性是.Value 。 除非有与此值相对应的命名范围,否则预期会出现此错误。

相反,请尝试:

 Set GetLastNonEmptyCellOnWorkSheet = Ws.Range(Ws.Cells(lLastRow, lLastCol).Address) 

或者你可以稍微简化一下:

 Set GetLastNonEmptyCellOnWorkSheet = Ws.Cells(lLastRow, lLastCol) 

我发现当我想使用的范围不在活动工作表中时,发生错误。 在你想使用范围方法之前激活表单,解决了我的问题。

这里是我的代码:我想给一个数组分配一个范围。 keyDataSheet.Activate LANGKeywords = keyDataSheet.Range(Cells(2,1),Cells(LANGKWCount,1))COLKeywords = keyDataSheet.Range(Cells(3,2),Cells(COLKWCount,2))currentWB.Activate