如題
有幾個問題想請教各位大大
Windows("Source.xls").Activate
ActiveSheet.Range("I:I").Find("1").EntireRow.Select
Selection.Copy
Windows("Reprot.xlsx").Activate
I = ActiveCell.SpecialCells(xlLastCell).Row + 1
Cells(I, 1).PasteSpecial xlPasteAll
因程式方面比較生疏,故懇請大大們賜教
該認真一點
學個迴圈寫法了...
(程式沒有測過,請先使用測試資料測試)
Sub main()
Windows("Reprot.xlsx").Activate
Range("A1").Select
Windows("Source.xls").Activate
Range("A1").Select
For Each r In Range("I1:I15")
If ActiveCell.Value = "1" Then
Range(ActiveCell.Offset(0, -8), ActiveCell.Offset(0, -4)).Select
Selection.Copy
Windows("Reprot.xlsx").Activate
ActiveSheet.Paste
ActiveCell.Offset(1, 0).Select
Windows("Source.xls").Activate
End If
ActiveCell.Offset(1, 0).Select
Next
End Sub
海綿大抱歉那麼晚回~
我看得懂大致上的意思是從I1~I15之前尋找"1"的值
並且複製該儲存格左邊隔壁4~8格並在"Report"內貼上
然後向下一格重複尋找
測試的結果是甚麼都沒有貼過去,我有用逐步執行去看結果如下
ActiveCell是回覆是"A"欄而並非是I欄,故沒有執行下面的複製貼上
但我不確定是哪個部分可能需要修改
(因為我覺得For Each r In Range("I1:I15")
這段就是指I1~I15列的尋找)
再懇請大大協助
沒想到你還會回來看
我只好測了一下並修正錯誤
Sub main()
Windows("Report.xlsx").Activate
Range("A1").Select
Windows("Source.xlsx").Activate
Range("A1").Select
For Each r In Range("I1:I15")
If r.Value = "1" Then
Range(r.Offset(0, -8), r.Offset(0, -4)).Select
Selection.Copy
Windows("Report.xlsx").Activate
ActiveSheet.Paste
ActiveCell.Offset(1, 0).Select
Windows("Source.xlsx").Activate
End If
Next
End Sub