Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如何基于if-then将行复制到另一张图纸_Vba_Excel - Fatal编程技术网

Vba 如何基于if-then将行复制到另一张图纸

Vba 如何基于if-then将行复制到另一张图纸,vba,excel,Vba,Excel,我正在尝试编写一个宏,如果满足某些值,它会将一行复制到另一个工作表。有多个可能的目的地。这是我拼凑的东西,但我肯定它很乱。基本上,如果第14列中有“不适用”,第8列中有“应用”,则将其复制到应用选项卡。安琪、凯西等的故事 Dim ws1 As Worksheet: Set ws1 = ThisWorkbook.Sheets("Reconciliation") Dim ws2 As Worksheet: Set ws2 = ThisWorkbook.Sheets("APP") Dim ws3 As

我正在尝试编写一个宏,如果满足某些值,它会将一行复制到另一个工作表。有多个可能的目的地。这是我拼凑的东西,但我肯定它很乱。基本上,如果第14列中有“不适用”,第8列中有“应用”,则将其复制到应用选项卡。安琪、凯西等的故事

Dim ws1 As Worksheet: Set ws1 = ThisWorkbook.Sheets("Reconciliation")
Dim ws2 As Worksheet: Set ws2 = ThisWorkbook.Sheets("APP")
Dim ws3 As Worksheet: Set ws3 = ThisWorkbook.Sheets("Angie")
Dim ws4 As Worksheet: Set ws4 = ThisWorkbook.Sheets("Cathy")
Dim ws5 As Worksheet: Set ws5 = ThisWorkbook.Sheets("Cory")
Dim ws6 As Worksheet: Set ws6 = ThisWorkbook.Sheets("Curt")

For Each i In ws1.Range("A1:A1000")
    If ws1.Cells(i, 14) = "#N/A" Then
        If ws1.Cells(i, 8) = "APP" Then
            ws1.Rows(i).Copy ws2.Rows(ws2.Cells(ws2.Rows.Count, 2).End(xlUp).Row + 1)
        End If
    End If
Next i

如果有具有匹配名称的工作表,这将复制该行:

Dim ws1 As Worksheet: Set ws1 = ThisWorkbook.Sheets("Reconciliation")
Dim ws

For Each i In ws1.Range("A1:A1000").Cells
    If ws1.Cells(i.Row, 14).Value = cverr(2042) Then
            Set ws = Nothing
            On Error Resume Next
            Set ws = ThisWorkbook.Sheets(ws1.Cells(i.Row, 8).Value)
            on error goto 0
            If Not ws Is Nothing Then            
                i.EntireRow.Copy ws.Rows(ws.Cells(ws.Rows.Count, 2).End(xlUp).Row + 1)
            End If
        on error goto 0
    End If
Next i

为什么不打圈?谢谢蒂姆。我对这一点非常陌生。你能解释一下你的代码中发生了什么吗?其他的床单呢?如何为其他工作表添加下一行?这就是全部代码。它从第8列获取单元格值,并尝试将
ws
设置为具有该名称的工作表(如果工作表不存在,则忽略任何错误)。如果工作表确实存在,则
ws
不是=
Nothing
,并将该行复制到该工作表。基本上,它会将任何一行复制到工作簿中与第8列中的值同名的工作表中。还修复了对#N/A的检查(除非您的单元格中实际有文本“#N/A”,在这种情况下,您可以切换回您的版本);-)谢谢你,蒂姆。它实际上是一个单元格,其“N/a”作为公式的输出。我将Value=cverr(2042)更改为Value=“N/A”,得到了一个类型不匹配错误。有什么建议吗?如果#N/A来自一个公式,那么就让它保持原样。添加
Debug.Print ws1.Cells(I.Row,14)。在
If
行之前添加值。您看到了什么(在VB编辑器的即时窗格中)?