VBA错误消息:对象变量或未设置块变量。看不见

时间:2017-06-30 19:25:10

标签: excel vba excel-vba

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

这段代码应循环遍历工作簿中的每个工作表,并在循环时打开与当前循环迭代相关的另一个工作簿,然后对一列进行求和,然后将该SUM放入原始工作簿中。我得到并反对错误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

1 个答案:

答案 0 :(得分:3)

我必须Set ws对象来解决运行时91错误。请在评论部分查看Mat's Mug的其他错误修复。

Private Sub PopulateData_Click()

    Application.ScreenUpdating = False

    Dim ws As Worksheet
    Set ws = ThisWorkbook.Activesheet

    '...