使用row()。EntireRow.insert在表的末尾插入一系列行

时间:2018-07-22 03:58:36

标签: excel database excel-vba

我有两张纸,一张是输入数据的主纸,另一张是存储数据的副纸。在主表中,当我将数据放在表中时,我想将其复制并以正确的表格式将其发送到从表。为了做到这一点,我创建了一个变量,该变量将随着表的增长在从表中找到最后一行。我按下的按钮会复制表中的数据(此部分有效),并且应该将其复制到新范围。

Sub button_click1()
    Dim lRow As Long
    Dim lCol As Long
    Dim ERow As Long
    Dim c As Range
    Dim Mws As Worksheet
    Dim DSws As Worksheet

    Set Mws = Sheets("Master")
    Set DSws = Sheets("DayShift")

    'Find the last non-blank cell in column A(1)
    lRow = DSws.Cells(Rows.Count, 1).End(xlUp).Row
    'Find the last non-blank cell in row 1
    lCol = DSws.Cells(1, Columns.Count).End(xlToLeft).Column
    'Create range'
    lRow = lRow + 1
    ERow = lRow + 3
    'Message Box'
     MsgBox "Last Row: " & lRow & vbNewLine & _
            "Last Column: " & lCol & vbNewLine & _
            "Range: " & lRow & ":" & ERow
    'Copy data from table'
     Mws.Range("A2:I5").Copy DSws.Range("AlRow:IERow")

    'Inserting 3 Rows from 3
    'ActiveSheet.Rows("lRow:ERow").EntireRow.Insert'

End Sub

我得到的错误是在EntireRow.insert函数中。在网上找不到任何有关如何创建自己的动态范围的信息。预先感谢。

1 个答案:

答案 0 :(得分:0)

无需重塑复制和粘贴的目标区域。您只需要目的地的左上角单元格即可。

...
Mws.Range("A2:I5").Copy DSws.Range("A" & lRow)

但是,如果您要直接通过数组传输值(即不使用剪贴板),则需要重新调整目标区域的形状以匹配数组的尺寸。

dim arr as variant

arr = Mws.Range("A2:I5").value
DSws.Range("A" & lRow).resize(ubound(arr, 1), ubound(arr, 2)) = arr