2016-03-29 10 views
0

2つのワークブックがあり、どちらのレイアウトも同じです。 VBAコードが入っているワークブックはオリジナルで、2番目のワークブックはいくつかのオーバーレイ情報を持っています。私がしようとしているのは、2番目のワークブックのすべての行が元のものを見つけて、この行情報をコピーして見つからなければ、その行を新しい行として追加することです。私は列Gをこの列として比較しています。これはデータが一意のIDであることを決して変えません。あるワークシートの行を検索して別のワークシートに置き換える

私はライン上.Findに(メソッドまたはデータメンバが見つかりません)コンパイルエラーを取得しています: -

Set rngFound = .Find(What:=cell.Value, LookIn:=wbol.Worksheets("DLT Formatted").Range("G:G"), _ 
         SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) 

これは私がこれまで持っているVBAコードである: -

Set wbol = Workbooks.Open("C:Documents\Overlay.xls")  
Set sht2 = Workbooks("Overlay").Worksheets("Overlay Template") 
      With sht2 
       For Each Row In Range("G:G") 
        Set rngFound = .Find(What:=cell.Value, LookIn:=wbol.Worksheets("Overlay Template").Range("G:G"), _ 
          SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) 
        If Not rngFound Is Nothing Then 
         rngFound.Select 
         Selection.Copy 
         Workbooks("Original Template").Worksheets("original").Range(rngFound).PasteSpecial 
        End If 
        Next 
      End With 

私は自分のコードを修正しましたが、現在は同じ行にObject required errorが表示されています。私はなぜこれが起こっている私は理解してそうかわからないVBAに新しいです: -

With sht2 
     For Each Row In Range("G:G") 
      Set rngFound = wbol.Worksheets("Overlay Template").Range("G:G").Find(What:=cell.Value, LookIn:=xlValues, _ 
       SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) 
      If Not rngFound Is Nothing Then 
       rngFound.Copy 
       Workbooks("Original Template").Worksheets("original").Range(rngFound).PasteSpecial 
      End If 
     Next 
    End With 

答えて

0

「ルッキン」パラメータのみ、以下XlFindLookInの定数のいずれかになります。xlFormulas、xlValues、またはxlNotes。検索する範囲については

、あなたは

Set rngFound = wbol.Worksheets("Overlay Template").Range("G:G").Find(What:=.cell.Value, LookIn:=xlValues, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True) 

に、先行するだろう。 ".cell.Value"の中で重要です。 Findメソッドの詳細については、Microsoft website

コード内で直接実行することもできます。最初に選択する必要はありません。

終了コードが

With sht2 
     For Each r In .Range("G:G") 
      Set rngFound = wbol.Worksheets("Overlay Template").Range("G:G").Find(What:=r.Value, LookIn:=xlValues, _ 
         SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) 
      If Not rngFound Is Nothing Then 
        rngFound.Copy 
        Workbooks("Original Template").Worksheets("original").Range(rngFound).PasteSpecial 
      End If 
     Next 
    End With 
+0

のようになります。私は、VBAに新たなんだので、ウェブサイトなどによりを通じて自分の道を混乱しようとしている私は、私はあなたが何を意味するか理解すればわかりません。 .find行をこれに変更しました。rngFound = RangeToSearch.Find(What:= cell.Value、LookIn:= xlValues、_ SearchOrder:= xlByRows、SearchDirection:= xlNext、MatchCase:= True)オブジェクトにエラーが発生しました。 – user3088476

+0

申し訳ありませんが、RangeToSearchは文字通りあなたが探している範囲を意味します。あなたのケースでは、最初に "LookIn"に配置されたものです:wbol.Worksheets( "Overlay Template")。Range( "G:G")。わかりやすく答えを編集します。 – Verity

+0

まだオブジェクトエラーが発生しています。変更されたコードで質問を更新します。 – user3088476

関連する問題