2017-07-09 2 views
0

コードに誤りがあります。私がデバッグすると、最後の行のエラーが表示されます。VBAコード(オブジェクトあり)エラー

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

することはできませんValueSet - オブジェクト参照を割り当てるときにのみSetキーワードを使用する必要があります。あなたも含むブックを閉じているので(例えば、あなたのSet ra = Range("c2")があなたのオブジェクトraからRange("c2")への参照を割り当てている。)

ので

Range("k2").Value = ra.Value 

Set 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 

(注:私はWorkbookであることにVariant/Stringあることから、あなたのWB_SourceWB_Master変数を変更)

+0

私はそれが 'レンジ(「C2」を割り当てていると思います) 'オブジェクト参照を変数範囲' ra'に追加します。 – L42

+0

それでも動作しませんでした。 – zhenhao

+1

@zhenhao Ohhh - まずブックを閉じます!私はそれに気付かなかった。ちょっと待って、答えを更新します。 – YowE3K

関連する問題