如何将range变量用于在运行时生成的工作簿

时间:2014-03-19 09:38:29

标签: excel vba

我正在尝试访问在运行时生成的excel工作簿

我正在使用此代码 “

Dim w2 As Workbook

Dim r as range

Set w2 = Workbooks.Add

Set w2 = ActiveWorkbook

Set r = w2.Sheets("Sheet1").Range(Cells(5, 4), Cells(5, 4))

r.PasteSpecial Paste:=xlPasteValues'

行号图5显示了此错误“应用程序定义或对象定义的错误”

有人可以帮我解决这个问题......

1 个答案:

答案 0 :(得分:1)

1)此行不需要:

Set w2 = ActiveWorkbook 

因为下一行已经返回了新的工作簿对象:

Set w2 = Workbooks.Add

2)您应该完全限定Cells个对象,即您应该指定哪个工作簿/表单元格属于:

Set r = w2.Sheets("Sheet1").Range(w2.Sheets("Sheet1").Cells(5, 4), w2.Sheets("Sheet1").Cells(5, 4))

或更短:

With w2.Sheets("Sheet1")
    Set r = .Range(.Cells(5, 4), .Cells(5, 4))
End With

但由于您的Range对象仅包含单个单元格,因此您只需使用:

Set r = w2.Sheets("Sheet1").Cells(5, 4)