我已经尝试了两个星期来编写一个能够执行以下操作的代码: 将前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
它似乎不起作用,我永远无法选择包含日期的单元格,也无法清除验证。
答案 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