0

两个星期以来,我一直在尝试编写一个能够执行以下操作的代码:将工作表的前 21 行“时间卡”复制并插入到同一张工作表底部的第一个空白行中“时间卡。” 我还希望,一旦复制了行,包含刚刚复制的选择日期(在工作表底部)的单元格将被选中,这样用户就不必向下滚动 6500 行。

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

拜托,有人可以请帮我写一个代码。我真的做了很多研究,尝试了几种不同的方法,但都没有成功。我不是很精通 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

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

4

2 回答 2

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
于 2012-08-09T17:50:29.500 回答
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
于 2012-08-09T18:23:28.330 回答