모든 행에 특정 기준 (열 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), 셀 (r, 20)). 시트 ("SummaryAccrual"). 범위 ("A"& lr2 + 1)' –