将宏复制到新工作簿时,Excel VBA运行时错误91

将宏复制到新工作簿时,Excel VBA运行时错误91,excel,vba,Excel,Vba,下面的代码导致了一个错误 运行时错误“91”:未设置对象变量或带块变量 这段代码在我创建它的Excel工作簿中运行良好,但当我将其复制并粘贴到另一个Excel工作簿时,会出现错误 错误在第行 LastRow = Cells.Find(What:="*", _ 有人知道为什么吗 我试图在声明变量后将其设置为一个值,但这无法解决问题 Sub mileStoneDatePivot() Dim r As Long, pasteRowIndex As Long, v() As Long, i A

下面的代码导致了一个错误

运行时错误“91”:未设置对象变量或带块变量

这段代码在我创建它的Excel工作簿中运行良好,但当我将其复制并粘贴到另一个Excel工作簿时,会出现错误

错误在第行

LastRow = Cells.Find(What:="*", _
有人知道为什么吗

我试图在声明变量后将其设置为一个值,但这无法解决问题

 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
在找不到您请求的内容时返回
Nothing

当您要求它在空白页上查找
*
(任何内容)时,它不返回任何内容-它找不到任何内容。
当您要求它返回空的行号时,它会给出您收到的错误消息

要避免此错误,请将
Find
的结果传递给范围变量:

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
我建议看一篇关于找到最后一个单元格的帖子,然后将整个内容拉到一个单独的功能中。

编辑:此外,您的
查找只查看活动表。

LastRow=thiswook.worksheet(“数据表”).Cells.Find….
将始终查看工作簿中包含代码的数据表。

Find
在找不到您请求的内容时,将返回
Nothing

当您要求它在空白页上查找
*
(任何内容)时,它不返回任何内容-它找不到任何内容。
当您要求它返回空的行号时,它会给出您收到的错误消息

要避免此错误,请将
Find
的结果传递给范围变量:

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
我建议看一篇关于找到最后一个单元格的帖子,然后将整个内容拉到一个单独的功能中。

编辑:此外,您的
查找只查看活动表。

LastRow=thiswook.Worksheets(“数据表”).Cells.Find….
将始终查看包含代码的工作簿中的数据表。

错误在哪一行?很抱歉,它位于第
LastRow=Cells.Find行(内容:=“*”,
代码运行时工作表是否为空?错误在哪一行?很抱歉,它位于第
LastRow=Cells行。查找(What:=“*”,
代码运行时工作表是否为空?