VBA错误消息:未设置对象变量或带块变量。Can';我看不出来
第22行抛出错误(设置wbPath2) 这段代码应该在工作簿中的每个工作表中循环,并在循环时打开与当前循环迭代相关的另一个工作簿,然后对一列求和,然后将该和放入原始工作簿中。我得到了目标错误91。我挠头已经有一段时间了。有人知道为什么会出现此错误消息吗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
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
在行中。