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 在一张图纸上查找单元格并将行复制到另一张图纸_Vba_Excel_Copy Paste_Autofilter - Fatal编程技术网

Vba 在一张图纸上查找单元格并将行复制到另一张图纸

Vba 在一张图纸上查找单元格并将行复制到另一张图纸,vba,excel,copy-paste,autofilter,Vba,Excel,Copy Paste,Autofilter,我有一个名为Backlog的工作表,其中包含数据的行和列。我需要的代码将在第二列到最后一列中逐行搜索#N/A。当它找到#N/A时,需要检查最后一列是否包含C。如果它包含一个C,那么整行应该附加到一个名为Logoff的表中。如果最后一列不包含C,则应将整行追加到名为Denied的工作表中。一旦移动到注销或拒绝,该行应从原始积压工作表中删除。我下面的代码不起作用。在第一个For语句之后,它转到End Sub,但没有任何编译错误 Private Sub CommandButton2_Click()

我有一个名为Backlog的工作表,其中包含数据的行和列。我需要的代码将在第二列到最后一列中逐行搜索#N/A。当它找到#N/A时,需要检查最后一列是否包含C。如果它包含一个C,那么整行应该附加到一个名为Logoff的表中。如果最后一列不包含C,则应将整行追加到名为Denied的工作表中。一旦移动到注销或拒绝,该行应从原始积压工作表中删除。我下面的代码不起作用。在第一个For语句之后,它转到End Sub,但没有任何编译错误

Private Sub CommandButton2_Click()
    Dim IMBacklogSh As Worksheet
    Set IMBacklogSh = ThisWorkbook.Worksheets("Backlog")
    Dim logoffSh As Worksheet
    Set logoffSh = ThisWorkbook.Worksheets("Claims Logged off")
    Dim deniedsh As Worksheet
    Set deniedsh = ThisWorkbook.Worksheets("Claims Denied")

    IMBacklogSh.Select
    Dim i As Long
    For i = 3 To Cells(Rows.Count, 13).End(xlUp).Row
        If Cells(i, 13).Value = "#N/A" Then
            If Cells(i, 14).Value = "C" Then
            IMBacklogSh.Rows(i).EntireRow.Copy Destination:=logoffSh.Range("A" & logoffsh.Cells(Rows.Count, "A").End(xlUp).Row + 1)
            Else
            IMBacklogSh.Rows(i).EntireRow.Copy Destination:=deniedsh.Range("A" & deniedsh.Cells(Rows.Count, "A").End(xlUp).Row + 1)
            End If
        End If
    Next i
End Sub
将其作为
如果单元格(i,13)进行尝试。Text=“#N/A”然后
<代码>#N/A
是错误代码,不是值;但是,可以检查或用于检查单元格内容是否存在任何错误

    If Cells(i, 13).Text = "#N/A" Then
    'Alternate with IsError
    'If IsError(Cells(i, 13)) Then
        If Cells(i, 14).Value = "C" Then
            IMBacklogSh.Rows(i).EntireRow.Copy _
                Destination:=logoffSh.Range("A" & logoffsh.Cells(Rows.Count, "A").End(xlUp).Row + 1)
        Else
            IMBacklogSh.Rows(i).EntireRow.Copy _
                Destination:=deniedsh.Range("A" & deniedsh.Cells(Rows.Count, "A").End(xlUp).Row + 1)
        End If
    End If
然而,单个细胞检查是不必要和耗时的。可用于将
#N/A
C
隔离,将
#N/A
C
隔离

Private Sub CommandButton2_Click()
    Dim IMBacklogSh As Worksheet, logoffSh As Worksheet, deniedsh As Worksheet

    Set IMBacklogSh = ThisWorkbook.Worksheets("Backlog")
    Set logoffSh = ThisWorkbook.Worksheets("Claims Logged off")
    Set deniedsh = ThisWorkbook.Worksheets("Claims Denied")

    With IMBacklogSh
        If .AutoFilterMode Then .AutoFilterMode = False
        With .Cells(1, 1).CurrentRegion
            .AutoFilter field:=13, Criteria1:="#N/A"
            .AutoFilter field:=14, Criteria1:="C"
            With .Resize(.Rows.Count - 1, Columns.Count).Offset(1, 0)
                If CBool(Application.Subtotal(103, .Cells)) Then
                    .Copy Destination:= _
                        logoffSh.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
                    'optionally delete the originals
                    .EntireRow.Delete
                End If
            End With
            .AutoFilter field:=14, Criteria1:="<>C"
            With .Resize(.Rows.Count - 1, Columns.Count).Offset(1, 0)
                If CBool(Application.Subtotal(103, .Cells)) Then
                    .Copy Destination:= _
                        deniedsh.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
                    'optionally delete the originals
                    .EntireRow.Delete
                End If
            End With
        End With
        If .AutoFilterMode Then .AutoFilterMode = False
    End With
End Sub
Private子命令按钮2\u单击()
Dim IMBacklogSh作为工作表,logoffSh作为工作表,deniedsh作为工作表
设置IMBacklogSh=ThisWorkbook.Worksheets(“积压工作”)
设置logoffSh=ThisWorkbook.Worksheets(“索赔注销”)
Set-deniedsh=ThisWorkbook.Worksheets(“索赔被拒绝”)
带着IMBacklogSh
如果.AutoFilterMode,则.AutoFilterMode=False
带.Cells(1,1).CurrentRegion
.自动筛选字段:=13,标准1:=“#不适用”
.自动筛选字段:=14,标准1:=“C”
使用.Resize(.Rows.Count-1,Columns.Count).Offset(1,0)
如果是CBool(Application.Subtotal(103.Cells)),则
.复制目的地:=_
logoffSh.Cells(Rows.Count,“A”).End(xlUp).偏移量(1,0)
'可以选择删除原件
.EntireRow.Delete
如果结束
以
.自动筛选字段:=14,标准1:=“C”
使用.Resize(.Rows.Count-1,Columns.Count).Offset(1,0)
如果是CBool(Application.Subtotal(103.Cells)),则
.复制目的地:=_
deniedsh.单元格(Rows.Count,“A”).结束(xlUp).偏移量(1,0)
'可以选择删除原件
.EntireRow.Delete
如果结束
以
以
如果.AutoFilterMode,则.AutoFilterMode=False
以
端接头
尝试将其作为
如果单元格(i,13)。Text=“#N/A”然后
<代码>#N/A
是错误代码,不是值;但是,可以检查或用于检查单元格内容是否存在任何错误

    If Cells(i, 13).Text = "#N/A" Then
    'Alternate with IsError
    'If IsError(Cells(i, 13)) Then
        If Cells(i, 14).Value = "C" Then
            IMBacklogSh.Rows(i).EntireRow.Copy _
                Destination:=logoffSh.Range("A" & logoffsh.Cells(Rows.Count, "A").End(xlUp).Row + 1)
        Else
            IMBacklogSh.Rows(i).EntireRow.Copy _
                Destination:=deniedsh.Range("A" & deniedsh.Cells(Rows.Count, "A").End(xlUp).Row + 1)
        End If
    End If
然而,单个细胞检查是不必要和耗时的。可用于将
#N/A
C
隔离,将
#N/A
C
隔离

Private Sub CommandButton2_Click()
    Dim IMBacklogSh As Worksheet, logoffSh As Worksheet, deniedsh As Worksheet

    Set IMBacklogSh = ThisWorkbook.Worksheets("Backlog")
    Set logoffSh = ThisWorkbook.Worksheets("Claims Logged off")
    Set deniedsh = ThisWorkbook.Worksheets("Claims Denied")

    With IMBacklogSh
        If .AutoFilterMode Then .AutoFilterMode = False
        With .Cells(1, 1).CurrentRegion
            .AutoFilter field:=13, Criteria1:="#N/A"
            .AutoFilter field:=14, Criteria1:="C"
            With .Resize(.Rows.Count - 1, Columns.Count).Offset(1, 0)
                If CBool(Application.Subtotal(103, .Cells)) Then
                    .Copy Destination:= _
                        logoffSh.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
                    'optionally delete the originals
                    .EntireRow.Delete
                End If
            End With
            .AutoFilter field:=14, Criteria1:="<>C"
            With .Resize(.Rows.Count - 1, Columns.Count).Offset(1, 0)
                If CBool(Application.Subtotal(103, .Cells)) Then
                    .Copy Destination:= _
                        deniedsh.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
                    'optionally delete the originals
                    .EntireRow.Delete
                End If
            End With
        End With
        If .AutoFilterMode Then .AutoFilterMode = False
    End With
End Sub
Private子命令按钮2\u单击()
Dim IMBacklogSh作为工作表,logoffSh作为工作表,deniedsh作为工作表
设置IMBacklogSh=ThisWorkbook.Worksheets(“积压工作”)
设置logoffSh=ThisWorkbook.Worksheets(“索赔注销”)
Set-deniedsh=ThisWorkbook.Worksheets(“索赔被拒绝”)
带着IMBacklogSh
如果.AutoFilterMode,则.AutoFilterMode=False
带.Cells(1,1).CurrentRegion
.自动筛选字段:=13,标准1:=“#不适用”
.自动筛选字段:=14,标准1:=“C”
使用.Resize(.Rows.Count-1,Columns.Count).Offset(1,0)
如果是CBool(Application.Subtotal(103.Cells)),则
.复制目的地:=_
logoffSh.Cells(Rows.Count,“A”).End(xlUp).偏移量(1,0)
'可以选择删除原件
.EntireRow.Delete
如果结束
以
.自动筛选字段:=14,标准1:=“C”
使用.Resize(.Rows.Count-1,Columns.Count).Offset(1,0)
如果是CBool(Application.Subtotal(103.Cells)),则
.复制目的地:=_
deniedsh.单元格(Rows.Count,“A”).结束(xlUp).偏移量(1,0)
'可以选择删除原件
.EntireRow.Delete
如果结束
以
以
如果.AutoFilterMode,则.AutoFilterMode=False
以
端接头

链接的副本显示了如何在列中查找错误。复制到另一个工作表是一件简单的事情。如果您在复制行时遇到困难,请返回并编辑您的问题,以包括您自己的努力。我添加了我的代码。我不明白为什么在For声明之后它不起作用。当我调试时,它会在For I=3语句之后立即跳到末尾,并且不会对任何行进行求值。链接的副本显示了如何在列中查找错误。复制到另一个工作表是一件简单的事情。如果您在复制行时遇到困难,请返回并编辑您的问题,以包括您自己的努力。我添加了我的代码。我不明白为什么在For声明之后它不起作用。当我调试时,它会在For I=3语句之后立即跳到末尾,并且不会对任何行求值。谢谢。自动筛选代码工作得很好。谢谢。自动筛选代码工作得很好。