【问题标题】:Why is my VBA excel sheet not copying over?为什么我的 VBA excel 工作表没有复制过来?
【发布时间】:2011-08-10 05:53:42
【问题描述】:

我是新手,不知道为什么我的工作表没有复制到新工作表上?我在 VBA 中找不到错误。

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

【问题讨论】:

  • 我认为它与“for”循环或“IF Range”语句有关。

标签: excel vba


【解决方案1】:

总是用其父工作表限定 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

【讨论】:

  • 你太棒了!非常感谢。
猜你喜欢
  • 1970-01-01
  • 2014-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多