我有两张纸,一张是输入数据的主纸,另一张是存储数据的副纸。在主表中,当我将数据放在表中时,我想将其复制并以正确的表格式将其发送到从表。为了做到这一点,我创建了一个变量,该变量将随着表的增长在从表中找到最后一行。我按下的按钮会复制表中的数据(此部分有效),并且应该将其复制到新范围。
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函数中。在网上找不到任何有关如何创建自己的动态范围的信息。预先感谢。
答案 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