|
▼n さん:
ご返信ありがとうございます。
>>Worksheets("Sheet1").Cells(Lastrow, 1) = FR.Valueで、
>>インデックスが有効範囲ではありませんというエラーがでます。
>Worksheets("Sheet1")の親Bookを明示していないからでしょう。
>そのままだとActiveWorkbookのWorksheets("Sheet1")を指定しています。
>つまり
>>FL2 = "C:・・・\Desktop\新.xlsx"
>これがActiveWorkbookになっています。
>>Lastrow = ThisWorkbook.Worksheets("Sheet1").Cells(65536, 1).End(xlUp).Row + 1
>ここで明示しているのと同じようにしてみてください。
その通りでした。
thisworkbook.Worksheets("Sheet1").Cells(Lastrow, 1) = FR.Value
に書き換えるとできました。
>
>ただ、
>>For i = 1 To Lastrow
>> Worksheets("Sheet1").Cells(Lastrow, 1) = FR.Value
>> Worksheets("Sheet1").Cells(Lastrow, 2) = FR.Offset(, 1).Value
>> Worksheets("Sheet1").Cells(Lastrow, 3) = "変更なし"
>>Next
>ここでどういう動作をしているか理解されてますか?
>>For i = 1 To Lastrow
>>Next
>これは不要ですよね?
確かに不要です・・・
>
>
>そもそも、Findメソッドを使ってLoopしなくても良いと思います。
>新.xlsx から まとめ.xlsx へ全データをコピーして、
>作業列にMatch関数を使って 旧.xlsx を参照して、
>あれば"変更なし"、無ければ"追加"で良くないですか?
ここではC列だけで書かせて頂きましたが、
実際はあと3列の文字列が同じかを条件にしています。
If Not FR Is Nothing Thenのあとに
If FR.Offset(, 1).Value = CL1.Offset(, 1).Value Then
のような条件が3つ続いています。
(旧fileから新fileに変更され、担当者が同じかどうかの確認のためなど)
なのでFindを使って書いていました。
説明不足で申し訳ありませんでした。
|
|