在工作簿打开时自动将工作表之间的行复制到最后一行

时间:2012-08-09 16:24:36

标签: excel vba excel-vba

我已经尝试了两个星期来编写一个能够执行以下操作的代码: 将前21行工作表“时间卡”复制并插入同一张“时间卡”底部的第一个空白行。复制行后,我还希望包含刚刚复制的选择日期(位于工作表底部)的单元格,以便用户不必向下滚动6500行。 / p>

代码必须选择工作表(“时间卡”),复制选择C3:N23,并将选择粘贴到工作表底部的最后一个空白行(“时间卡”)。然后必须自动选择容纳“日期”的单元格(在刚刚粘贴的选择中)(编写代码以搜索“日期”的范围?)。完成所有操作后,我想要一个链接到宏按钮的代码,用户可以单击该代码来清除数据验证,以便只有公式保留在新粘贴的单元格中,并且所有VLOOKUPS和DATA VALIDATIONS都有已被清除。

拜托,请有人请,请帮我写一个代码。我做了很多研究,尝试了几种不同的方法,并且无法做任何事情。我不是很精通VBA,所以任何帮助都会非常感激。

这是我的第一次尝试:

Sub CopyInfo()

On Error GoTo Err_Execute

    Sheets("Time Cards").Select
    Cells(Rows.Count, ActiveCell.Column).End(xlUp).Offset(1, 0).Select


    Sheets("TC-Start Here").Select
    Range("C5:N25").Select
    Selection.Copy

    Sheets("Time Cards").Select
    'Range("C5:N25").Select
    Selection.Insert

Err_Execute:
    MsgBox "The Data has been successfully Copied"

End Sub

然后我尝试选择最后一行并粘贴(第二次尝试):

Sub CopyInfo()

On Error GoTo Err_Execute

    Sheets("Time Cards").Select
    Cells(Rows.Count, ActiveCell.Column).End(xlUp).Offset(1, 0).Select


    Sheets("TC-Start Here").Select
    Range("C5:N25").Select
    Selection.Copy


    Sheets("Time Cards").Select
    Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0).Select
    Selection.Insert Shift:=xlDown

    Sheets("Time Cards").Select
    'Range("C5:N25").Select
    Selection.Insert

Err_Execute:
    MsgBox "The Data has been successfully Copied"

End Sub

它似乎不起作用,我永远无法选择包含日期的单元格,也无法清除验证。

2 个答案:

答案 0 :(得分:1)

我认为这就是你想要的,如果没有,请进一步澄清你的问题

    Dim lrow as long
    lrow = sheets("time cards").range("C5").end(xlup).row + 1
    sheets("TC-Start Here").range("C5:N25").copy
    sheets("time cards").range("C" & lrow).pastespecial paste:=xlpastevalues, _
                                                        operation:=xlnone, _
                                                        skipblanks:=False, _
                                                        Transpose:=false
    sheets("time cards").range("C5").end(xlup).select

答案 1 :(得分:1)

Sub CopyInfo()

    With Sheets("Time Cards")
         .Range("C5:N25").Copy .Cells(Rows.Count,3).End(xlUp).Offset(1, 0)
         .Cells(Rows.Count,3).End(xlUp).Select
    End With
    'need some info on exactly what should be cleared from the copied range...
    MsgBox "The Data has been successfully Copied"

End Sub