搜索后Excel Excel VBA复制粘贴

时间:2017-04-16 21:13:35

标签: excel vba excel-vba copy-paste

我的宏应该只复制粘贴一个数据块。

我的问题是,它只将数据复制到一列,我不知道如何解决这个问题。

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天。问题是它只在一列中粘贴日期。

我怎么能解决这个问题?

2 个答案:

答案 0 :(得分:1)

试试这个

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

答案 1 :(得分:0)

重要提示:您正在尝试粘贴到13行Range(Cells(86, S), Cells(98, S)) = 98 - 86 + 1 = 13行。虽然Daten = Range("L4:R17")实际上是 14行。因此,您收到了错误,因为RangeDaten数组的大小不匹配。

同样适用于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