Sub retrieve()
Dim r As Long, endrow As Long, pasterowindex As Long, Cells() As String, Columns As Range
Sheets("Raw Trade Log").Range("A4").Select
Selection.End(xlDown).Select: endrow = ActiveCell.Row
pasterowindex = 1
For r = 4 To endrow
If Cells(r, Columns(17).Value = "Y") Then
Rows(r).Select
Selection.Copy
Sheets("Completed Trade log").Select
Rows(pasterowindex).Select
ActiveSheet.Paste
pasterowindex = pasterowindex + 1
Sheets("Raw Trade Log").Select
End If
Next r
End Sub
我试图告诉vba当列中的值变为“ Y”时自动将整行复制到另一张表,但是我不断
运行时错误“ 91”
从If Cells(r, Columns(17).Value = "Y") Then
我还没有知道如何解决它,可有人请让我知道在哪里我犯了一个错误?
该错误主要是由于Select
和Activate
字样。这些确实不是编程友好的,应该谨慎对待它们。因此,最好的方法是完全避免使用它们-如何避免在Excel VBA中使用Select。
关于任务“如何在某些情况下将行复制到另一个工作表”,这是一个小示例,没有Select
and Activate
:
Sub TestMe()
Dim wksTarget As Worksheet: Set wksTarget = Worksheets(1)
Dim wksSource As Worksheet: Set wksSource = Worksheets(2)
Dim r As Long
For r = 4 To 50
If wksSource.Cells(r, "A") = "y" Then
wksSource.Rows(r).Copy Destination:=wksTarget.Rows(r)
End If
Next r
End Sub
50
是硬编码的,也可以称为变量;y
column中的单词A
,但可以通过将A
in更改为If wksSource.Cells(r, "A")
相应的内容来进行更改。本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句