VBA错误消息:未设置对象变量或带块变量。Can';我看不出来

VBA错误消息:未设置对象变量或带块变量。Can';我看不出来,vba,excel,Vba,Excel,第22行抛出错误(设置wbPath2) 这段代码应该在工作簿中的每个工作表中循环,并在循环时打开与当前循环迭代相关的另一个工作簿,然后对一列求和,然后将该和放入原始工作簿中。我得到了目标错误91。我挠头已经有一段时间了。有人知道为什么会出现此错误消息吗 Private Sub PopulateData_Click() Application.ScreenUpdating = False Dim ws As Worksheet Dim lastDay As Long lastDay = Day

第22行抛出错误(设置wbPath2)

这段代码应该在工作簿中的每个工作表中循环,并在循环时打开与当前循环迭代相关的另一个工作簿,然后对一列求和,然后将该和放入原始工作簿中。我得到了目标错误91。我挠头已经有一段时间了。有人知道为什么会出现此错误消息吗

Private Sub PopulateData_Click()
Application.ScreenUpdating = False

Dim ws As Worksheet
Dim lastDay As Long

lastDay = Day(WorksheetFunction.EoMonth(ComboBox1.Value & Year(Date), 0))
monthNumber = Month(DateValue("01-" & ComboBox1.Value & "-1900")) 
Root = "C:\myDirectory\" & Year(Date) & "\" & 
        monthNumber & ". " & ComboBox1.Value & " " & Year(Date) & "\"

'TOTAL CARS PER WEEK
Dim wbPath2 As Object
sourceFile = monthNumber & ". " & ComboBox1.Value & " " & Year(Date)
sourceSheet = "\[" & ws.Name & " " & monthNumber & "." & lastDay & "." & 
               Format(Now(), "yy") & ".csv]"


For Each ws In ThisWorkbook.Sheets
    If (ws.Name <> "Master") And (ws.Name <> "Combined") Then
        Set wbPath2 = Workbooks.Open(Root & ws.Name & " " & monthNumber & 
                      "." & lastDay & "." & Format(Now(), "yy") & ".csv")
        With ws
            .Cells(Application.WorksheetFunction.Match("Total cars per 
            week", Range("A:A"), 0), 18).Formula = "=SUM('" & Root & 
            sourceFile & sourceSheet & ws.Name & " " & monthNumber & "." & 
            lastDay & "." & Format(Now(), "yy") & "'!$H:$H)"
        End With

        wbPath2.Close
        MsgBox wbPath2
    End If
Next

Application.ScreenUpdating = True
End Sub
Private Sub-PopulateData\u Click()
Application.ScreenUpdating=False
将ws设置为工作表
黯淡的最后一天
lastDay=天(WorksheetFunction.EoMonth(ComboBox1.Value&Year(Date),0))
monthNumber=Month(日期值(“01-”&ComboBox1.Value&“-1900”))
Root=“C:\myDirectory\”年(日期)&“\”和
monthNumber&“&”和ComboBox1.值&“&”年(日期)&“\”
“每周汽车总量
将wbPath2设置为对象
sourceFile=monthNumber&“&”和ComboBox1.Value&“&”年(日期)
sourceSheet=“\[”&ws.Name&“&monthNumber&”&lastDay&”&
格式(现在为(),“yy”)和“.csv]”
对于此工作簿中的每个ws.Sheets
如果(ws.Name“主控”)和(ws.Name“组合”),则
设置wbPath2=Workbooks.Open(Root&ws.Name&“”&monthNumber&
“&lastDay&”“格式(Now(),“yy”)和“.csv”)
与ws
.Cells(Application.WorksheetFunction.Match)(“每辆车的总车数
周”,范围(“A:A”),0),18)。公式=“=SUM(”&Root&
sourceFile&sourceSheet&ws.Name&&monthNumber&&
lastDay&“&”格式(Now(),“yy”)&“!$H:$H)”
以
wbPath2.关闭
MsgBox wbPath2
如果结束
下一个
Application.ScreenUpdating=True
端接头

我必须
设置
ws
对象来解决运行时错误。在评论部分查找Mat的马克杯的其他错误修复

Private Sub PopulateData_Click()

    Application.ScreenUpdating = False

    Dim ws As Worksheet
    Set ws = ThisWorkbook.Activesheet

    '...

我必须
设置
ws
对象来解决运行时错误。在评论部分查找Mat的马克杯的其他错误修复

Private Sub PopulateData_Click()

    Application.ScreenUpdating = False

    Dim ws As Worksheet
    Set ws = ThisWorkbook.Activesheet

    '...

错误发生在哪一行代码上?我希望它会发生在这之前的那一行,您在使用
ws.Name
时没有将
ws
设置为任何内容。请注意,
Sheets
集合包含
工作表
对象,但也包含
图表
对象,这将使您的代码在工作簿包含任何错误时引发另一种类型的错误。如果要迭代工作表,请迭代
工作表
集合。在
With
块的
中也有不合格的
范围
调用-这些调用隐式引用当前活动的任何工作表,这是另一个等待抛出的bug/运行时错误1004。@Seankley请不要放置”“回答“在问题中。更新问题,说明哪一行抛出错误。然后,如果您愿意,发布一个自我回答,说明什么是错误的。错误发生在哪一行代码上?我希望它会发生在这之前的那一行,您在使用
ws.Name
时没有将
ws
设置为任何内容。请注意
工作表
集合包含
工作表
对象,还有
Chart
对象,如果工作簿中包含任何错误,则代码将抛出另一种类型的错误。如果要迭代工作表,请迭代
工作表
集合。在
With
块的
中也有不合格的
范围
调用-这些调用隐式引用当前活动的任何工作表,这是另一个等待抛出的bug/运行时错误1004。@Seankley请不要放置问题中的“回答”。更新问题以说明哪一行抛出了错误。然后,如果您愿意,发布自我回答以说明错误。试一试——我们已经编写了大约一半的代码检查,以找出经常作为堆栈溢出问题弹出的常见错误。另一半只是因为我们(Rubberduck开发团队)一群学究=)我仍然看不出这将如何修复
Set wbPath2
语句中的错误,问题是在该语句中,代码崩溃了,因为当它到达该行时,
ws
已经由
为此工作簿中的每个ws.Sheets
行设置。我仍然认为您的代码一定是在使用
ws.Name
在循环开始之前。试一试-我们已经编写了大约一半的代码检查,以找出经常作为堆栈溢出问题出现的常见错误。另一半只是因为我们(Rubberduck开发团队)我仍然看不出这将如何修复
Set wbPath2
语句中的错误,问题是在该语句中代码崩溃了,因为当它到达该行时,
ws
已经由
为此工作簿中的每个ws.Sheets
行设置。我仍然认为您的代码一定是更早崩溃的,在循环开始之前使用
ws.Name
在行中。