对象在vba中需要用于分配值的错误

时间:2013-10-25 04:42:39

标签: excel-vba vba excel

Sub NewNightLetter()
Dim NewFile As String
WorkBookPath = Application.ActiveWorkbook.Path
ProgramSelected = DataPuller.Home.Range("F4").Value
Set mySource = MyObject.GetFolder(WorkBookPath & "\" & ProgramSelected)
NewFile = ProgramSelected & "_PT Metrics_" & Format(Date, YYYYMMDD) & "xlsm"
ActiveWorkbook.SaveAs (mySource & " \ " & NewFile)
End Sub

这里第4行我收到一条错误,上面写着“需要对象”。当我编码时,

ProgramSelected=Workbooks(datapuller).Sheets(Home).Range("F4").Value

“下标超出范围”错误发生......你可以帮忙吗?

3 个答案:

答案 0 :(得分:0)

当您按名称引用工作簿或工作表时,请用双引号将其括起来

ProgramSelected=Workbooks("datapuller").Sheets("Home").Range("F4").Value

答案 1 :(得分:0)

假设datapullerHome为字符串,其中datapuller表示工作簿名称,home表示工作表名称。下面的语法将起作用。

Dim datapuller As String
    datapuller = "Book2"

    Dim Home As String
    Home = "sheet1"

    ProgramSelected = Workbooks(datapuller).Sheets(Home).Range("F4").Value

答案 2 :(得分:0)

试试这个:

替换代码的这一部分

ProgramSelected = DataPuller.Home.Range("F4").Value

有了这个:

ProgramSelected = Workbooks("DataPuller").Sheets("Home").Range("F4").Value

或者这样可以提高灵活性。

Dim ws as Worksheet

Set ws = Workbooks("DataPuller").Sheets("Home")
ProgramSelected = ws.Range("F4").Value

另请注意,DataPuller工作簿应该是开放的 否则你会收到Subscript Out of Range错误。