2016-07-15 154 views
0

我有一個數據表,根據我創建的高級過濾器填充文件中的其他工作表。我只需要複製高級過濾器中的某些列而不是整個過濾器,具體取決於所需的報告。當高級過濾器沒有帶回任何東西(意味着當月沒有匹配)時,腳本正在複製並粘貼標題,而不是複製和粘貼任何內容。有關如何避免在高級過濾器無法返回結果時複製並粘貼標題的建議?這裏是被複制的第一個工作表的腳本:使用動態範圍的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

回答

0

對於那些誰可能有類似的問題,並希望看到我是如何解決我的問題,我會寄我編輯得益於上述斯科特的答案。我不是專家,所以我可能錯位了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