我已經寫入/散列過一個程序,用於複製一行數據,當行符合某個標準(列A =「1」)工作簿位於桌面上的測試文件夾中;該計劃最初的工作,但現在在這裏拉了一個錯誤:在VBA上覆制和粘貼動態範圍,錯誤:object_worksheet的範圍,
ws.Range(ws.Cells(r, 1), Cells(r, 20)).Copy Destination:=ThisWorkbook.Sheets("SummaryAccrual").Range("A" & lr2 + 1)
一旦進行排序,我也擔心,複製和粘貼此方法將粘貼公式,而不是值,有一個簡單的方法來粘貼值?
感謝您的幫助,我非常感謝!
我的代碼
Option Explicit
Sub AccrualCombiner()
Dim Path As String
Dim FileName As String
Dim Wkb As Workbook
Dim cWkb As Workbook
Dim ws As Worksheet
Dim answer As Integer
Dim lr As Long, lr2 As Long, r As Long
Dim rc As Object
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.AskToUpdateLinks = False
answer = MsgBox("Would you like to combine Accruals for current period?", vbYesNo + vbQuestion, "Confirmation")
If answer = vbYes Then
Set cWkb = Application.ActiveWorkbook
lr2 = ThisWorkbook.Sheets("SummaryAccrual").Cells(Rows.Count, "A").End(xlUp).Row
Path = "C:\Users\alexander.neale\Desktop\Test"
FileName = Dir(Path & "\*.xls", vbNormal)
Do Until FileName = ""
Set Wkb = Workbooks.Open(FileName:=Path & "\" & FileName)
For Each ws In Wkb.Worksheets
For r = 14 To 60 Step 1
If ws.Range("A" & r).Value = "1" Then
ws.Range(ws.Cells(r, 1), Cells(r, 20)).Copy Destination:=ThisWorkbook.Sheets("SummaryAccrual").Range("A" & lr2 + 1)
lr2 = ThisWorkbook.Sheets("SummaryAccrual").Cells(Rows.Count, "A").End(xlUp).Row
End If
Next r
Next ws
Wkb.Close False
FileName = Dir()
Loop
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.AskToUpdateLinks = True
End If
End Sub
嘗試改變'ws.Range(ws.Cells(R,1),電池(R,20))複製。目的地:= ThisWorkbook.Sheets(「SummaryAccrual」)。範圍(「A」&lr2 + 1)':ws.Range(ws.Cells(r,1),Cells(r,20))複製ThisWorkbook。表格(「SummaryAccrual」)。範圍(「A」和lr2 + 1)' –