2017-04-16 167 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