Excel VBA复制搜索后粘贴
问题描述:
我的宏应该简单地复制粘贴一块数据。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天。问题在于它只在一列中粘贴日期。
我该如何解决这个问题?
答
试试这个
Range(Cells(86, S), Cells(98, S+6)) = Daten
答
重要提示:您要粘贴到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
不同的工作表。只需使用完全合格的Range
和Cells
,如下面的代码:
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