2017-05-19 5 views
1

VBAランタイムエラー1004「アプリケーション定義またはオブジェクト定義エラー」ワークシート(N).Rangeは....ランタイムエラーを返し、私はこのコードを実行すると、1004

が返されます。私はGoogle/Stack Overflowを検索しましたが、それらはすべて範囲を指定するように指示しましたが面白いのは、指定した範囲の後にエラーが発生したことです。

Worksheets(2).Range(Cells(finderA.Row, rng2.Column), Cells(finderA.Row, rng2.Columns.Count + rng2.Column - 1)).Copy finalWS.Cells(rowCounter, rng1.Columns.Count + 2)

(修正前に、それは仕事をしましたが、間違った結果が返さ) - >これはエラーを返す行です。

コード全体は、特定の共通の値を比較することによって、2つのデータ間の省略をチェックする長い行の一部です。

私は基本的にこのコードでしようとしているもう一方の範囲をループし、順番に一致する行をコピー貼り付けることです(つまり、私はシート1,2からシート3を作っています)。

Dim rowCounter As Integer 
rowCounter = 1 

Dim eachCellA As Range, eachCellB As Range 
Dim eachCellAa As Range, eachCellBb As Range 
Dim StrFirstAdd As String, StrAdd As String 
Dim finderA As Range, finderB As Range 

For Each eachCellA In addCellRngA 
    With addCellRngB 
     Set finderA = .Find(eachCellA.Value, LookIn:=xlValues, Lookat:=xlWhole) 
    End With 

     If Not finderA Is Nothing Then 

      eachCellA.EntireRow.Copy finalWS.Cells(rowCounter, 1) 

      StrFirstAdd = finderA.Address 
      StrAdd = finderA.Address 

      Do 
       Worksheets(2).Range(Cells(finderA.Row, rng2.Column), Cells(finderA.Row, rng2.Columns.Count + rng2.Column - 1)).Copy finalWS.Cells(rowCounter, rng1.Columns.Count + 2) **##--> Debugger stops here, returns error.** 
       Set finderA = addCellRngB.FindNext(finderA) 
       StrAdd = finderA.Address 
       rowCounter = rowCounter + 1 
      Loop While Not finderA Is Nothing And StrAdd <> StrFirstAdd 

     Else 

      eachCellA.EntireRow.Copy finalWS.Cells(rowCounter, 1) 
      rowCounter = rowCounter + 1 

     End If 

Next 

これはコードであり、すべての値(finderA.Row、rng2.Column、rng2.Columns.countなど)は空ではなく、正しい値を持ちます。

私はすべての行を貼り付ける必要はないと思っていましたが、理由がコード内にないように感じる場合は、コード全体を提供するだけでなく、

答えて

3

、あなたは細胞を含むすべての範囲の参照を修飾する必要があり

With Worksheets(2) 
    .Range(.Cells(finderA.Row, rng2.Column), .Cells(finderA.Row, rng2.Columns.Count + rng2.Column - 1)).Copy finalWS.Cells(rowCounter, rng1.Columns.Count + 2) ' **##--> Debugger stops here, returns error.** 
End With 

Worksheets(2).Range(Cells(finderA.Row, rng2.Column), Cells(finderA.Row, rng2.Columns.Count + rng2.Column - 1)).Copy finalWS.Cells(rowCounter, rng1.Columns.Count + 2) 

を交換し、さもなければ後者は(あなたがコードを実行するときにアクティブである方)が異なるシートを参照することができます。

また、あなたはどちらの場合でそれを行うようであればから

eachCellA.EntireRow.Copy finalWS.Cells(rowCounter, 1) 

をこの行を削除し、関連

Loop While StrAdd <> StrFirstAdd 
+0

にあなたのループ条件を変更することができます:[です。 .Cellsで定義されているときに必要な範囲。](http://stackoverflow.com/questions/36368220/is-the-in-range-necessary-when-defined-by-cells) – Jeeped

+0

だから私は安全な側にいるとどこでもドットを使用して、間違って行くことはできません。私はここで、行の前に点を持たないためにここでピックアップしました。カウント。ほとんどあなたはそれを必要としませんが、安全な側にいる... – SJR

+1

あなたは私の苦しみを終わらせました。 私はこの日に4日間働いていましたが、あなたのコードで私の最終的な修正が終わった後は、それは今ではありません。 私はあなたにもっと感謝する方法がわかりません。おそらく私はこれについて懸命に勉強して、うまくいけばいつかこのコミュニティの誰かのトラブルを解決するべきです。ありがとうございますSJRと神はあなたを祝福します。 – zebralamy

関連する問題