2011-08-09 21 views
0

我是新手,不知道爲什麼我的工作表沒有複製到新工作表中?我在我的VBA中找不到這個錯誤。爲什麼我的VBA excel表單不能複製?

Private Sub Adminminreport_Click() 

Application.ScreenUpdating = False 

Dim i&, LR&, count& 

LR = Worksheets("Parts").Range("J" & Rows.count).End(xlUp).Row 
Set newWS = Worksheets.Add 

Worksheets("Parts").Range(Worksheets("Parts").Cells(1, 1), Worksheets("Parts").Cells(1, 13)).Copy newWS.Range("A1") 
count = 2 

For i = 2 To LR 
    If Range("J" & i).Value < Range("L" & i).Value Then 
     Worksheets("Parts").Range(Worksheets("Parts").Cells(i, 1), Worksheets("Parts").Cells(i, 13)).Copy newWS.Range("A" & count) 
     count = count + 1 
    End If 
Next i 

Application.ScreenUpdating = True 

Unload Me 

newWS.Activate 

End Sub 
+0

我假設它與'for'循環或'IF範圍'語句有關。 – TheRealDK

回答

2

這是很好的做法,始終資格 Range對象與其父的工作表。否則,當你的代碼運行時,你正在依靠某張工作表激活...

Private Sub Adminminreport_Click() 

    Dim i As Long, LR As Long, count As Long 
    Dim newWS As Worksheet, partsWS As Worksheet 

    Set newWS = Worksheets.Add() 
    Set partsWS = Worksheets("Parts") 

    Application.ScreenUpdating = False 

    LR = partsWS.Range("J" & Rows.count).End(xlUp).Row 
    Range(partsWS.Cells(1, 1), partsWS.Cells(1, 13)).Copy _ 
            newWS.Range("A1") 
    count = 2 

    For i = 2 To LR 
    If partsWS.Range("J" & i).Value < partsWS.Range("L" & i).Value Then 
     Range(partsWS.Cells(i, 1), partsWS.Cells(i, 13)).Copy _ 
            newWS.Range("A" & count) 
     count = count + 1 
    End If 
    Next i 

    Application.ScreenUpdating = True 

    newWS.Activate 
    Unload Me 

End Sub 
+0

你太棒了!非常感謝。 – TheRealDK

相關問題