2014-01-19 141 views
1

我試圖從3到7連接(合併)每個工作表的動態範圍到使用範圍的單獨工作表,所以我不會亂用剪貼板。我能夠檢測我想要複製的範圍,但將其分配給另一個範圍存在問題。指定Excel範圍值到另一個範圍

這條線有什麼問題:?

Sheets("Consolidar Datos").Range(ConsolidaArea).Value = Sheets(I).Range(NEW_area).Value 

這兩個範圍是完全相同的大小,但我仍然得到「應用程序定義或對象定義的錯誤」。範圍的

實施例在片材#3: B8:O16

接收器範圍被複制在片材範圍的"Consolidar Datos": B6:O14

實施例在片材#4: B8:O12

接收器範圍被複制在片"Consolidar Datos": B15:O19

謝謝!

For I = 3 To 7 
    Set sh = Sheets(I) 
     With ActiveSheet 
      Set area = .Range("C8:O33") 
      LastRow = Last(1, area) 
      If LastRow <> 0 Then 
       CopyRange = "B8:" & "O" & LastRow 
       Set NEW_area = .Range(CopyRange) 

       If FirstTime = 0 Then 
        CountRows = CountRows - 1 + NEW_area.Rows.Count 
        FirstTime = FirstTime + 1 
       Else 
        CountRows = CountRows + NEW_area.Rows.Count 
       End If 
       ConsolidaCopyRange = StartCell & ":O" & CountRows 
       Set ConsolidaArea = .Range(ConsolidaCopyRange) 

       Sheets("Consolidar Datos").Range(ConsolidaArea).Value = _ 
        Sheets(I).Range(NEW_area).Value 

       StartCell = "B" & CountRows + 1 

      End If     
     End With 
    Next I 
+0

什麼是'StartCell'對於第一次迭代? –

+0

StartCell是B6的第一次。然後根據選定的範圍累加。 – Mikerich6

回答

0

嘗試使用下面的代碼:

For I = 3 To 7 
    With Sheets(I) 
     Set area = .Range("C8:O33") 
     LastRow = Last(1, area) 
     If LastRow <> 0 Then 
      CopyRange = "B8:" & "O" & LastRow 
      Set NEW_area = .Range(CopyRange) 

      If FirstTime = 0 Then 
       CountRows = CountRows - 1 + NEW_area.Rows.Count 
       FirstTime = FirstTime + 1 
      Else 
       CountRows = CountRows + NEW_area.Rows.Count 
      End If 
      ConsolidaCopyRange = StartCell & ":O" & CountRows 
      Set ConsolidaArea = Sheets("Consolidar Datos").Range(ConsolidaCopyRange) 

      ConsolidaArea.Value = NEW_area.Value 

      StartCell = "B" & CountRows + 1 

     End If 
    End With 
Next I 
+0

它的工作非常感謝你。但是另一條線的問題是什麼?我以前使用它的結果相同,但在代碼的和平中,它不起作用。 – Mikerich6

+0

您的'ConsolidaArea'和'NEW_area'區域範圍在'ActiveSheet'上定義(並且基本上來自您的代碼'ActiveSheet'不等於'Sheets(I)')。在'Sheets(「Consolidar Datos」)。Range(ConsolidaArea).Value = Sheets(I).Range(NEW_area).Value'這一行中,您試圖從另一張表中的「ActiveSheet」中找到範圍,這是觸發了一個錯誤。 –

+1

我明白了。再次感謝您的幫助,我真的很感激。 – Mikerich6