代码有错误。当我调试时,它显示最后一行的错误。
Sub test()
WB_Master = ActiveWorkbook.Name
Dim ra As Range
open file
Workbooks.Open FileName:="X:\Projects\RPOC\Comparison\book1.xlsx"
WB_Source = ActiveWorkbook.Name
Workbooks(WB_Source).Activate
Worksheets("sheet1").Activate
' set value to ra. Is it correct?
Set ra = Range("c2")
Workbooks(WB_Source).Close SaveChanges:=False
Workbooks(WB_Master).Activate
Worksheets("sheet1").Activate
Set Range("k2").Value = ra.Value
End Sub
答案 0 :(得分:1)
您不能Set
Value
- 在分配对象引用时,您应该只使用Set
关键字。 (例如,您的Set ra = Range("c2")
正在为您的对象Range("c2")
分配ra
的引用。)
所以改变
Set Range("k2").Value = ra.Value
到
Range("k2").Value = ra.Value
因为您在使用之前也关闭了包含ra
变量引用范围的工作簿,所以您也会遇到问题。我已经重构了你的代码以解决这个问题:
Sub test()
Dim WB_Source As Workbook
Dim WB_Master As Workbook
Set WB_Master = ActiveWorkbook
Set WB_Source = Workbooks.Open(FileName:="X:\Projects\RPOC\Comparison\book1.xlsx")
WB_Master.Worksheets("sheet1").Range("k2").Value = _
WB_Source.Worksheets("sheet1").Range("c2").Value
WB_Source.Close SaveChanges:=False
End Sub
(注意:我将WB_Source
和WB_Master
变量从Variant/String
更改为Workbook
。)