我已经写入/散列过一个程序,用于复制一行数据,当行符合某个标准(列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)' –