Vba 我如何让我的代码扫描我的数据,复制某些选定的数据行并将其粘贴到不同的工作表?

Vba 我如何让我的代码扫描我的数据,复制某些选定的数据行并将其粘贴到不同的工作表?,vba,excel,copy-paste,with-statement,Vba,Excel,Copy Paste,With Statement,因此,基本上我在wksht1中有一组数据,我希望扫描这些数据,以选择符合某个if-then语句(请参见下面的代码)的所有行,然后将它们复制到pastesht。到目前为止,我有我的代码,但它在第20行给了我一个错误,我不知道我需要修复什么。请提前帮助和感谢 1 Sub Try() 2 Dim wksht1 As Worksheet, pastesht As Worksheet 3 Dim LastRowinpastesht As Long 4 5 With This

因此,基本上我在wksht1中有一组数据,我希望扫描这些数据,以选择符合某个if-then语句(请参见下面的代码)的所有行,然后将它们复制到pastesht。到目前为止,我有我的代码,但它在第20行给了我一个错误,我不知道我需要修复什么。请提前帮助和感谢

 1   Sub Try()
 2   Dim wksht1 As Worksheet, pastesht As Worksheet
 3   Dim LastRowinpastesht As Long
 4   
 5   With ThisWorkbook
 6        Set wksht1 = Sheets("AAA")
 7        Set pastesht = Sheets("PPP")
 8        LastRowinpastesht = pastesht.Cells(Rows.Count, 1).End(xlUp).Row + 1
 9    End With
10
11   With wksht1
12       Last1 = Cells(Rows.Count, "B").End(xlUp).Row
13       For p = Last1 To 1 Step -1
14       If (Cells(p, "F").Text) = "SSSS" And (Cells(p, "U").Value) <= 5 And (Cells(p, "U").Interior.ColorIndex) = xlNone Then
15       Cells(p, "A").EntireRow.Select
16       Selection.Copy
17       End If
18
19    With pastesht
20       Cells(LastRowinpastesht, 1).Paste
21       Application.CutCopyMode = False
22    End With
23       Next p
24    End With
25    End Sub
1子尝试()
2维wksht1作为工作表,粘贴SHT作为工作表
3英寸最后一行长度等于
4.
5.使用此工作簿
6套wksht1=板材(“AAA”)
7套pastesht=板材(“PPP”)
8 LastRowinpastesht=pastesht.Cells(Rows.Count,1).End(xlUp).Row+1
以…结尾
10
11与wksht1
12 Last1=单元格(Rows.Count,“B”)。结束(xlUp)。行
13表示p=Last1至1步骤-1
14如果(单元格(p,“F”).Text)=“SSSS”和(单元格(p,“U”).Value)尝试以下操作:

Sub TryMod()

    Dim WS1 As Worksheet, PasteSht As Worksheet
    Dim PShtNRow As Long, WS1LRow As Long

    With ThisWorkbook
        Set WS1 = .Sheets("AAA")
        Set PasteSht = .Sheets("PPP")
    End With

    With WS1
        WS1LRow = .Cells(Rows.Count, "B").End(xlUp).Row
        For Iter = WS1LRow to 1 Step -1
            PShtNRow = PasteSht.Cells(PasteSht.Rows.Count, 1).End(xlUp).Row + 1
            If .Cells(Iter, "F").Value = "SSSS" And .Cells(Iter, "U").Value <= 5 And .Cells(Iter, "U").Interior.ColorIndex = xlNone Then
                .Rows(Iter).Copy PasteSht.Rows(PShtNRow)
            End If
        Next Iter
    End With

    Application.CutCopyMode = False

End Sub
Sub-TryMod()
将WS1标注为工作表,粘贴为工作表
变暗PShtNRow尽可能长,WS1LRow尽可能长
使用此工作簿
设置WS1=.Sheets(“AAA”)
设置粘贴样式=.Sheets(“PPP”)
以
使用WS1
WS1LRow=.Cells(Rows.Count,“B”).End(xlUp).Row
对于Iter=WS1LRow至1步骤-1
PShtNRow=PasteSht.Cells(PasteSht.Rows.Count,1).End(xlUp).Row+1

如果.Cells(Iter,“F”).Value=“SSSS”和.Cells(Iter,“U”).Value范围对象不支持使用粘贴

单元格(LastRowinpastesht,1)替换出错的行。粘贴专用xlPasteAll


这应该会澄清这一点。另外还有其他错误需要检查,仅供参考,我认为
Last1
从未在任何地方声明过

试着限定它
.Cells(LastRowinpastesht,1)。粘贴
。还有,我看到了一些错误。让我试着编辑它。:)还可以将
Last1=Cells(Rows.Count,“B”).End(xlUp)。Row
更改为
Last1=Cells(.Rows.Count,“B”).End(xlUp)。Row
和每条语句
Cells(…)
更改为
。Cells(…)
我尝试了这两种方法,但仍然在同一位置出现错误。+1实际上range不支持粘贴属性,但是你的代码解决了这个问题:)它实际上工作得很好,非常感谢你解释你的代码,这样我才能真正理解我的错误所在。非常感谢@西莫科:我真的不明白关于射程物体的空洞部分。我的意思是,在很多事情中,真的,微软D谢谢,作品。祝你好运。:)