簡體   English   中英

VBA Excel將公式范圍從一個工作表復制到另一個工作表

[英]VBA Excel copying range of formulas from one worksheet to another

我正在嘗試將兩個范圍的公式從一個工作表復制到另一個工作表。 隨着“計划”范圍的內容更改,它們將被復制到“ Data_Design”工作表上的不同范圍。 我擁有的代碼會間歇性地工作,但是我無法確定為什么它不穩定和可重復。 我嘗試了幾種不同的代碼變體,但無濟於事。 當我收到運行時錯誤(1004)時,它在代碼的第一行等於范圍。 知道為什么1004嗎?

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

您需要為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

使用with塊可以使其以.開頭. 被分配給with塊父項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM