使用动态范围的Excel VBA复制和粘贴脚本

问题描述:

我有一个数据表,根据我创建的高级过滤器填充文件中的其他工作表。我只需要复制高级过滤器中的某些列而不是整个过滤器,具体取决于所需的报告。当高级过滤器没有带回任何东西(意味着当月没有匹配)时,脚本正在复制并粘贴标题,而不是复制和粘贴任何内容。有关如何避免在高级过滤器无法返回结果时复制并粘贴标题的建议?这里是被复制的第一个工作表的脚本:使用动态范围的Excel VBA复制和粘贴脚本

Sub Populate() 

Dim sht As Worksheet 
Dim LastRow As Long 
Dim LastColumn As Long 
Dim StartCell As Range 

Set sht = Worksheets("Data") 


sht.Range("A1:S400").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _ 
    Sheets("Sheet1").Range("A1:S12"), Unique:=False 


Set StartCell = sht.Range("G2") 
LastRow = sht.Cells(sht.Rows.Count, StartCell.Column).End(xlUp).Row 
LastColumn = sht.Cells(StartCell.Row, sht.Columns.Count).End(xlToLeft).Column 

    sht.Range(StartCell, sht.Cells(LastRow, "M")).Copy 
    Worksheets("OC 2016 - Post-65").Range("A18").PasteSpecial Paste:=xlPasteValues 


Sheet3.Columns().AutoFit 
Application.CutCopyMode = False 
+2

'If LastRow> 2 then' and do you stuff。不要忘记'如果' –

+0

谢谢斯科特,那是缺少的环节。我得到了它的工作。 – workswoop

对于那些谁可能有类似的问题,并希望看到我是如何解决我的问题,我会寄我编辑得益于上述斯科特的答案。我不是专家,所以我可能错位了If语句,但它正在处理我正在做的事情。

Sub Populate() 

Dim sht As Worksheet 
Dim LastRow As Long 
Dim LastColumn As Long 
Dim StartCell As Range 

Set sht = Worksheets("Data") 


sht.Range("A1:S400").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _ 
Sheets("Sheet1").Range("A1:S12"), Unique:=False 


Set StartCell = sht.Range("G2") 
LastRow = sht.Cells(sht.Rows.Count, StartCell.Column).End(xlUp).Row 
LastColumn = sht.Cells(StartCell.Row, sht.Columns.Count).End(xlToLeft).Column 

If LastRow > 2 Then 

sht.Range(StartCell, sht.Cells(LastRow, "M")).Copy 
Worksheets("OC 2016 - Post-65").Range("A18").PasteSpecial Paste:=xlPasteValues 

End If 

Sheet3.Columns().AutoFit 
Application.CutCopyMode = False