尝试在单独的工作表中复制粘贴单元格时出现VBA运行时错误1004

我目前在我的VBA Excel 2007年代码中出现以下错误:运行时错误“1004”:对象'_Worksheet'的方法'范围'失败。 在标题中出现了这个错误的不less问题之后,我还没有find类似的情况或解决scheme来解决我的问题。 也就是说,没有声明我的variables是公开的,我不想这样做,因为我在不同的子程序中多次使用相同的variables。

错误在线提出:

AccDnn.Range(Cells(2, 71), Cells(RangéeFinAcc - 1, 87)).Copy 

我的代码:

 Private Sub SaveRedButton_Click() Dim SaveRedMssg As String, SaveRedTitre As String, SaveRedButtons As Integer, SaveRedAns As Integer Dim RangéeFinRed As Long, DrpRed As Worksheet Dim RangéeFinAcc As Long, AccDnn As Worksheet Application.ScreenUpdating = False Set DrpRed = ThisWorkbook.Worksheets("Drapeaux Rouges") Set AccDnn = ThisWorkbook.Worksheets("Acc. données") RangéeFinRed = DrpRed.Cells(Rows.Count, 1).End(xlUp).Row RangéeFinAcc = AccDnn.Cells(Rows.Count, 75).End(xlUp).Row DrpRed.Cells(8, 2) = RangéeFinRed DrpRed.Cells(9, 2) = RangéeFinAcc SaveRedTitre = "Enregistrement des données" SaveRedMssg = "Voulez-vous enregistrer les données du formulaire" & vbNewLine & "«Drapeaux Rouges - Bobineuse»?" SaveRedButtons = vbYesNo + vbQuestion + vbDefaultButton1 + vbApplicationModal SaveRedAns = MsgBox(SaveRedMssg, SaveRedButtons, SaveRedTitre) If SaveRedAns = 6 Then AccDnn.Range(Cells(2, 71), Cells(RangéeFinAcc - 1, 87)).Copy AccDnn.Cells(RangéeFinRed - 18, 71).PasteSpecial (xlPasteValues) DrpRed.Range(Cells(19, 1), Cells(RangéeFinRed, 16)).Copy AccDnn.Cells(2, 75).PasteSpecial (xlPasteValues) Else: SaveRedAns = 7 Application.ScreenUpdating = True Exit Sub End If Application.ScreenUpdating = True End Sub 

此代码的目的是将数据从一张纸上的input页面传输到数据存储页,所有这些都在同一个工作簿中。 数据从上到下被编译到数据表中。 因此,代码必须读取多less行数据才能被添加到数据存储表,然后移动数据存储表中的数据以为input数据腾出空间。

更新本节:

 If SaveRedAns = 6 Then With AccDnn .Range(.Cells(2, 71), .Cells(RangéeFinAcc - 1, 87)).Copy .Cells(RangéeFinRed - 18, 71).PasteSpecial (xlPasteValues) End With With DrpRed .Range(.Cells(19, 1), .Cells(RangéeFinRed, 16)).Copy End With AccDnn.Cells(2, 75).PasteSpecial (xlPasteValues) Else: SaveRedAns = 7 Application.ScreenUpdating = True Exit Sub End If 

或者不使用With语句:

 If SaveRedAns = 6 Then AccDnn.Range(AccDnn.Cells(2, 71), AccDnn.Cells(RangéeFinAcc - 1, 87)).Copy AccDnn.Cells(RangéeFinRed - 18, 71).PasteSpecial (xlPasteValues) DrpRed.Range(DrpRed.Cells(19, 1), DrpRed.Cells(RangéeFinRed, 16)).Copy AccDnn.Cells(2, 75).PasteSpecial (xlPasteValues) Else: SaveRedAns = 7 Application.ScreenUpdating = True Exit Sub End If