Excel VBA运行时错误91,将macros复制到新的工作簿时
下面的代码是造成一个
运行时错误“91”:对象variables或块variables未设置
此代码在我创build它的Excel工作簿中正常工作,但是当我将其复制并粘贴到另一个Excel工作簿时,出现错误。
错误在线
LastRow = Cells.Find(What:="*", _
有人知道为什么吗?
我已经尝试在声明后将该variables设置为一个值,但是这并没有解决。
Sub mileStoneDatePivot() Dim r As Long, pasteRowIndex As Long, v() As Long, i As Long Dim LastRow As Long Dim lCol As Long 'Insert a New Blank Worksheet On Error Resume Next Application.DisplayAlerts = False Worksheets("PivotTable").Delete Sheets.Add Before:=ActiveSheet ActiveSheet.Name = "DataSheet" Application.DisplayAlerts = True 'Switch off error masking On Error GoTo 0 'This sheet is where data should originate Sheets("DCC_AGGREGATOR_FLATFILE").Rows("1").Copy Sheets("DataSheet").Range("A1") LastRow = Cells.Find(What:="*", _ After:=Range("A1"), _ LookAt:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row
Find
无法find您所请求的时候返回Nothing
。
当你要求它在一张空白纸上find*
(任何东西)时,它什么也不会返回 – 它找不到任何东西。
当你要求它返回没有的行号时,它会给出你所得到的错误信息。
为了避免这个错误,将Find
的结果传递给范围variables:
Dim rLastRow as Range Set rLastRow = Cells.Find(What:="*", _ After:=Range("A1"), _ LookAt:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False)
在获取行号之前,您可以检查范围是否为空:
If Not rLastRow Is Nothing Then LastRow = rLastRow.Row End If
我build议看看其中一个post,find最后一个单元格,并把所有的东西都拉出来,以一个单独的function。
https://stackoverflow.com/search?q=find+last+cell+vba
编辑:另外,你的Find
只是看activesheet。
LastRow = Thisworkbook.Worksheets("Datasheet").Cells.Find....
将始终在工作簿中查看数据表中的代码。