2017-04-16 188 views
0

我的宏應該簡單地複製粘貼一塊數據。Excel VBA複製搜索後粘貼

我的問題是,它只將數據複製到一列,我不知道如何解決這個問題。

Sheets("Auswertung").Select 
Daten = Range("L4:R17") 
Sheets("Übersicht").Select 

With Application 
    .DisplayAlerts = True 
    .ScreenUpdating = True 
    .EnableEvents = True 
    .Calculation = xlCalculationAutomatic 
End With 

For S = 2 To Range("nz85").End(xlToLeft).Column 
    If Cells(85, S) = Sheets("Auswertung").Range("L3") Then 
     Range(Cells(86, S), Cells(98, S)) = Daten 
     Exit For 
    End If 

行85包含日期。我想在某個日期複製數據。 Daten包含日期的信息,如果「L3」和接下來的6天。所以一週的數據。 我以爲我可以簡單地將一週的數據放入Daten,並在一週的第一天粘貼它,希望它能粘貼下一個6天。問題在於它只在一列中粘貼日期。

我該如何解決這個問題?

回答

1

試試這個

Range(Cells(86, S), Cells(98, S+6)) = Daten 
0

重要提示:您要粘貼到13行Range(Cells(86, S), Cells(98, S))是= 98 - 86 + 1 = 13 。而Daten = Range("L4:R17")實際上是14行。因此,您收到錯誤信息,因爲Range和您的Daten陣列的大小不匹配。

這同樣適用於你的Column的大小,你可以複製6列到1(如也被@ H2SO4提到)

因此,無論您Daten需要進行修改,或者也許是Range(Cells(86, S), Cells(99, S))

此外,你可以實現你正在嘗試,而不用所有不必要的Select不同的工作表。只需使用完全合格的RangeCells,如下面的代碼:

Daten = Sheets("Auswertung").Range("L4:R17").Value 

With Worksheets("Übersicht") 
    For s = 2 To .Range("NZ85").End(xlToLeft).Column 
     If .Cells(85, s) = Sheets("Auswertung").Range("L3").Value Then 
      ' ******* MODIFY ONE OF THE PARAMETERS AT THE LINE BELOW ******* 
      .Range(.Cells(86, s), .Cells(98, s)).Value = Daten 
      Exit For 
     End If 
    Next s 
End With