带有Object所需的VBA代码错误

时间:2017-07-09 22:18:07

标签: excel-vba vba excel

代码有错误。当我调试时,它显示最后一行的错误。

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

1 个答案:

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

相关问题