简体   繁体   English

带有对象所需的VBA代码错误

[英]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_SourceWB_Master变量从Variant/String更改为Workbook 。)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM