运行时错误“ 91”,用于将行复制到另一张工作表

唐sa
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我还没有知道如何解决它,可有人请让我知道在哪里我犯了一个错误?

维塔塔

该错误主要是由于SelectActivate字样。这些确实不是编程友好的,应该谨慎对待它们。因此,最好的方法是完全避免使用它们-如何避免在Excel VBA中使用Select

关于任务“如何在某些情况下将行复制到另一个工作表”,这是一个小示例,没有Selectand 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是硬编码的,也可以称为变量;
  • 该代码检查ycolumn中的单词A,但可以通过将Ain更改为If wksSource.Cells(r, "A")相应的内容来进行更改

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章