2016-03-03 253 views
1

我想从一个工作表复制两个范围与公式从另一个工作表。随着“计划”范围的内容更改,它们被复制到“Data_Design”工作表上的不同范围。我有间歇性的代码,但我无法确定它为什么不稳定和可重复。我尝试了几种不同的代码,但无济于事。当我得到运行时错误(1004)时,它在代码的第一行代码范围。任何想法为什么1004?VBA Excel将公式从一个工作表复制到另一个工作表

Sub Design_Save() 
Dim A, i, D, Ans As Integer 

Redo: 
D = Application.InputBox("Enter Design Number" & vbNewLine & vbNewLine & "Note: Default value = current stage number", "Design Number Assignment", Worksheets("Job").Cells(10, 3).Value, Type:=1) 

    For i = 2 To 101 ' Revise the 500 to include all of your values 
     A = Worksheets("Data_Design").Cells(i, 1).Value 
     If A = D Then 
      Ans = MsgBox("Design Number " & D & " already exists." & vbNewLine & vbNewLine & "Overwrite exiting design?", vbYesNo + vbQuestion, "Overwrite Design") 
      If Ans = vbYes Then 
       Save_Design (D) 
      Else 
       GoTo Redo 
      End If 
     Else 
      Exit Sub 
     End If 
    Next i 
End Sub 

Sub Save_Design(A As Integer) 
Dim r1, r2 As Integer 
Dim dd1, dd2, dd3, dd4, dd101, dd102, dd103, dd104 As Range 

If A = 0 Then 
    r1 = 1 
    Else 
    r1 = A * 100 
End If 
r2 = r1 + 49 

Worksheets("Data_Design").Range(Cells(r1, 2), Cells(r2, 6)).Formula = Worksheets("Schedule").Range("C5:G54").Formula 
Worksheets("Data_Design").Range(Cells(r1, 7), Cells(r2, 8)).Formula = Worksheets("Schedule").Range("I5:J54").Formula 
Worksheets("Data_Design").Range(Cells(r1, 9), Cells(r2, 23)).Formula = Worksheets("Schedule").Range("L5:Z54").Formula 
Worksheets("Data_Design").Range(Cells(r1, 24), Cells(r1, 38)).Formula = Worksheets("Schedule").Range("L3:Z3").Formula 

End Sub 
+0

试过资格'细胞'? – findwindow

回答

1

您需要为Cells()范围对象指定适当的家谱。试试这个

With Worksheets("Data_Design") 
    .Range(.Cells(r1, 2), .Cells(r2, 6)).Formula = Worksheets("Schedule").Range("C5:G54").Formula 
    .Range(.Cells(r1, 7), .Cells(r2, 8)).Formula = Worksheets("Schedule").Range("I5:J54").Formula 
    .Range(.Cells(r1, 9), .Cells(r2, 23)).Formula = Worksheets("Schedule").Range("L5:Z54").Formula 
    .Range(.Cells(r1, 24), .Cells(r1, 38)).Formula = Worksheets("Schedule").Range("L3:Z3").Formula 
End With 

使用与块使它所以任何一个.开始被分配到与块血统。

+1

'适当的亲子关系'+1 – findwindow

+0

Scott,谢谢。不知道我会想出这一个。 – Will

+0

@请通过点击答案上的灰色/绿色复选标记标记为正确。它将回答这个问题。只有你能做到这一点。 –

相关问题