我很新的VBA。我正在嘗試開發一個宏來讀取Excel文件並將數據填充到項目文件中。 Excel文件大約有800行。我正在調試代碼。在填充項目文件時,在For循環中,多次執行循環後,出現「運行時錯誤'1101':參數值無效。」 你能幫我理解這個問題嗎?請在代碼下方找到。 問候 科亞運行時錯誤1101,同時填充項目文件
Sub upload_excel_to_mpp()
'Declaration
Dim wbBook As Workbook
Dim wsSheet As Worksheet
Dim vaWorkorder As Variant
Dim vaTaskname As Variant
Dim vaHours As Variant
Dim vaArea As Variant
Dim vaSkill As Variant
Dim vaStatus As Variant
Dim lnStart As Long
Dim lnLastrow As Long
Dim lnCounter As Long
Set wbBook = ThisWorkbook
Set wsSheet = wbBook.Worksheets(1)
'Populate the variables with values from Worksheet
With wsSheet
lnStart = .Range("D65536").End(xlUp).Row
vaWorkorder = .Range("A2:A" & lnStart).Value
vaTaskname = .Range("E2:E" & lnStart).Value
vaHours = .Range("F2:F" & lnStart).Value
vaArea = .Range("G2:G" & lnStart).Value
vaSkill = .Range("H2:H" & lnStart).Value
End With
'Instantiate and open MS Project and the project
'Need to add MS project libraries by going to tools->references
Dim prApp As MSProject.Application
Dim prProject As MSProject.Project
Set prApp = New MSProject.Application
prApp.FileOpen "C:\Users\manub\Desktop\work\Quantas\Qantaslink template.mpp"
Set prProject = prApp.ActiveProject
'Add task and other wanted information to the project.
With prProject
For lnCounter = 1 To UBound(vaTaskname)
.Tasks.Add vaTaskname(lnCounter, 1)
With .Tasks(vaTaskname(lnCounter, 1))
.Text2 = vaWorkorder(lnCounter, 1)
.Work = vaHours(lnCounter, 1)
.Text8 = vaSkill(lnCounter, 1)
.Text6 = vaArea(lnCounter, 1)
End With
Next lnCounter
End With
'Save the project and close MS Project.
With prApp
.FileSave
.Quit
End With
MsgBox "Done!", vbInformation
'Release objects from memory.
Set prProject = Nothing
Set prApp = Nothing
End Sub
你的循環不應該運行,因爲'vaTaskName'不是一個數組,因爲它不是一個數組,它也沒有UBound.which是你的循環的限制。但是,這並不能解釋您引用的錯誤消息。這可以通過調試器將添加到導致錯誤的代碼行中的高亮來解釋。哪一個? – Variatus
感謝您的回覆。當線lnCounter = 497時,我得到錯誤.Work = vaHours(lnCounter,1) – Keya
在該行之前添加一行代碼:'如果InCounter = 497 Then Debug.Print vaHours(497,1)'。看看即時窗口中的值。它應該有什麼問題,使它與列中的所有其他人不同,可能是文本而不是數字。當然,您也可以在工作表中找到該值。將它移動到工作表中的其他位置,以防錯誤與數字497相關。請記住,您可以通過懸停光標或將它們打印到立即窗口來檢查變量值,同時在崩潰後暫停代碼執行。 – Variatus