Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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
Excel 如何更改此VBA以在删除行时不返回错误?_Excel_Vba - Fatal编程技术网

Excel 如何更改此VBA以在删除行时不返回错误?

Excel 如何更改此VBA以在删除行时不返回错误?,excel,vba,Excel,Vba,我试图找到一个VBA代码,可以将行从一个工作表移动到另一个工作表,并找到了这段代码。除了删除整行之外,它工作得非常好。当我删除整行时,会出现此错误 这是我正在使用的VBA代码。我怎样才能改变它,使它不会给我这个错误 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Intersect(Target, Range("A:A,Y:Y")) Is Nothing Then

我试图找到一个VBA代码,可以将行从一个工作表移动到另一个工作表,并找到了这段代码。除了删除整行之外,它工作得非常好。当我删除整行时,会出现此错误

这是我正在使用的VBA代码。我怎样才能改变它,使它不会给我这个错误

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Intersect(Target, Range("A:A,Y:Y")) Is Nothing Then Exit Sub
Application.EnableEvents = False
Dim bottomB As Long
Select Case Target.Column
    Case Is = 1
        bottomB = Sheets(Target.Value).Range("A:A").Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 1
        Range("A" & Target.Row).Resize(, 25).Copy Sheets(Target.Value).Cells(bottomB, 1)
        Target.EntireRow.Delete
End Select
Application.EnableEvents = True

End Sub

如果同时更改多个单元格,它将抛出此错误,因此当
更改事件
代码触发时,您可以检查多个单元格是否已更改,然后退出代码

请尝试此代码,看看这是否解决了您遇到的问题

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.CountLarge > 1 Then Exit Sub
If Intersect(Target, Range("A:A,Y:Y")) Is Nothing Then Exit Sub
Application.EnableEvents = False
Dim bottomB As Long
Select Case Target.Column
    Case Is = 1
        bottomB = Sheets(Target.Value).Range("A:A").Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 1
        Range("A" & Target.Row).Resize(, 25).Copy Sheets(Target.Value).Cells(bottomB, 1)
        Target.EntireRow.Delete
End Select
Application.EnableEvents = True
End Sub 

Sheets(Target.Value)
指活动工作簿中的工作表,其名称包含为
Target
的值。这就是你想要的吗?如果目标是多单元格范围,则此操作可能会以多种方式失败,
Sheets(Target.Value)
将导致类型不匹配错误。尝试
Sheets(Target(1).Value)
指向目标范围内的一个(第一个)单元格