[英]VBA code with Object required error
Code has error. 代码有错误。 When I debug, it shows the error of last line. 当我调试时,它显示最后一行的错误。
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
You can't Set
a Value
- you should only use the Set
keyword when assigning an object reference. 您无法Set
Value
-您仅应在分配对象引用时使用Set
关键字。 (Eg your Set ra = Range("c2")
is assigning a reference to Range("c2")
to your object ra
.) (例如,您Set ra = Range("c2")
被分配一个参考Range("c2")
到对象ra
)。
So change 所以改变
Set Range("k2").Value = ra.Value
to 至
Range("k2").Value = ra.Value
Because you are also closing the workbook that contains the range referred to by your ra
variable before you use it, you will also have problems. 因为在使用前还要关闭包含ra
变量引用的范围的工作簿,所以您也会遇到问题。 I have refactored your code to get around that issue: 我已经重构了您的代码来解决该问题:
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
(Note: I changed your WB_Source
and WB_Master
variables from being Variant/String
to being Workbook
.) (注意:我将WB_Source
和WB_Master
变量从Variant/String
更改为Workbook
。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.