#1
by Jarupong » Fri Jul 21, 2017 7:52 pm
สวัสดีครับทุกๆท่าน
ผมสนใจเริ่มหัดเขียน VBA เพื่อ Copy ค่าจาก Sheets("BZ_RTD") ตามเวลาที่ตั้งใว้ (เวลาในชีท Master) และวางในชีทใหม่ 3 ชีทตามตำแหน่งอ้างอิง (อ้างตำแหน่งที่จะวางจาก ชีท Master) ผมใช้วิธีเขียนที่ละขั้นตอนซึง code ยาวมาก อยากปรึกษาท่านสมาชิกพอจะมี
แนวทางที่จะเขียนแบบสั้น แต่ทำงานได้เหมือนกันหรือเปล่าครับ ขอบคุณครับ
1.เริ่ม Copy ครั้งแรกตอนเวลา 9:55 โดยเลือข้อมูลจาก column A,C,F,G จาก ชีท BZ_RTD
2.คัดลอกข้อมูลจาก column A,C,F,G ชีท BZ_RTD วางในตำแหน่ง col A1 ในชีท DataPaste
3.คัดลอกข้อมูลจาก column A,C ชีท BZ_RTD วางในตำแหน่ง col A1 ในชีท Deal
4.คัดลอกข้อมูลจาก column A,F ชีท BZ_RTD วางในตำแหน่ง col A1 ในชีท Vbuy
5.คัดลอกข้อมูลจาก column A,G ชีท BZ_RTD วางในตำแหน่ง col A1 ในชีท VSell
6.ถัดมาอีก 5 นาที 10:00 ทำการคัดลอกข้อมูลอีกครัง แต่ครั้งนี้ไม่คัดลอกแถว A โดยเลือข้อมูลจาก column C,F,G จาก ชีท BZ_RTD
7.คัดลอกข้อมูลจาก column C,F,G ชีท BZ_RTD วางในตำแหน่ง col E1 ในชีท DataPaste
8.คัดลอกข้อมูลจาก column C ชีท BZ_RTD วางในตำแหน่ง col C1 ในชีท Deal
9.คัดลอกข้อมูลจาก column F ชีท BZ_RTD วางในตำแหน่ง col C1 ในชีท Vbuy
10.คัดลอกข้อมูลจาก column G ชีท BZ_RTD วางในตำแหน่ง col C1 ในชีท Vsell
11.ถัดมาอีก 5 นาที 10:05 ทำการคัดลอกข้อมูลอีกครัง โดยเลือข้อมูลจาก column C,F,G จาก ชีท BZ_RTD
12.คัดลอกข้อมูลจาก column C,F,G ชีท BZ_RTD วางในตำแหน่ง col H1 ในชีท DataPaste
13.คัดลอกข้อมูลจาก column C ชีท BZ_RTD วางในตำแหน่ง col D1 ในชีท Deal
14.คัดลอกข้อมูลจาก column F ชีท BZ_RTD วางในตำแหน่ง col D1 ในชีท Vbuy
15.คัดลอกข้อมูลจาก column G ชีท BZ_RTD วางในตำแหน่ง col D1 ในชีท Vsell
16.ถัดมาอีก 5 นาที 10:10 ทำการคัดลอกข้อมูลอีกครัง โดยเลือข้อมูลจาก column C,F,G จาก ชีท BZ_RTD
17.คัดลอกข้อมูลจาก column C,F,G ชีท BZ_RTD วางในตำแหน่ง col K1 ในชีท DataPaste
18.คัดลอกข้อมูลจาก column C ชีท BZ_RTD วางในตำแหน่ง col E1 ในชีท Deal
19.คัดลอกข้อมูลจาก column F ชีท BZ_RTD วางในตำแหน่ง col E1 ในชีท Vbuy
20.คัดลอกข้อมูลจาก column G ชีท BZ_RTD วางในตำแหน่ง col E1 ในชีท Vsell
21.ซ้ำขั้นตอน 16-20 จนกระทั้งเวลา 16:40
'***********************
Sample excel VBA beginner
'***********************
Sub CopyByTime()
'
' CopyByTime Macro
'
'
If Sheets("Master").Range("d2").Value > Sheets("Master").Range("a1").Value And Sheets("Master").Range("a1").Value >= Sheets("Master").Range("c2").Value Then
Sheets("DataPaste").Select
Range("A1").Select
Sheets("BZ_RTD").Select
Range("A1:A51,C1:C51,F1:G51").Select
Selection.Copy
Sheets("DataPaste").Select
Range("A1").Select
ActiveSheet.Paste
Range("A1").Select
Sheets("BZ_RTD").Select
Range("A1:A51,C1:C51").Select
Selection.Copy
Sheets("Deal").Select
Range("A1").Select
ActiveSheet.Paste
Range("A1").Select
Sheets("BZ_RTD").Select
Range("A1:A51,F1:F51").Select
Selection.Copy
Sheets("Vbuy").Select
Range("A1").Select
ActiveSheet.Paste
Range("A1").Select
Sheets("BZ_RTD").Select
Range("A1:A51,G1:G51").Select
Selection.Copy
Sheets("Vsell").Select
Range("A1").Select
ActiveSheet.Paste
Range("A1").Select
End If
If Sheets("Master").Range("d3").Value > Sheets("Master").Range("a1").Value And Sheets("Master").Range("a1").Value >= Sheets("Master").Range("c3").Value Then
Sheets("BZ_RTD").Select
Range("C1:C51,F1:G51").Select
Selection.Copy
Sheets("DataPaste").Select
Range("E1").Select
ActiveSheet.Paste
Range("E1").Select
Sheets("BZ_RTD").Select
Range("C1:C51").Select
Selection.Copy
Sheets("Deal").Select
Range("C1").Select
ActiveSheet.Paste
Range("C1").Select
Sheets("BZ_RTD").Select
Range("F1:F51").Select
Selection.Copy
Sheets("Vbuy").Select
Range("C1").Select
ActiveSheet.Paste
Range("C1").Select
Sheets("BZ_RTD").Select
Range("G1:G51").Select
Selection.Copy
Sheets("Vsell").Select
Range("C1").Select
ActiveSheet.Paste
Range("C1").Select
End If
If Sheets("Master").Range("d4").Value > Sheets("Master").Range("a1").Value And Sheets("Master").Range("a1").Value >= Sheets("Master").Range("c4").Value Then
Sheets("BZ_RTD").Select
Range("C1:C51,F1:G51").Select
Selection.Copy
Sheets("DataPaste").Select
Range("h1").Select
ActiveSheet.Paste
Range("h1").Select
Sheets("BZ_RTD").Select
Range("C1:C51").Select
Selection.Copy
Sheets("Deal").Select
Range("D1").Select
ActiveSheet.Paste
Range("D1").Select
Sheets("BZ_RTD").Select
Range("F1:F51").Select
Selection.Copy
Sheets("Vbuy").Select
Range("D1").Select
ActiveSheet.Paste
Range("D1").Select
Sheets("BZ_RTD").Select
Range("G1:G51").Select
Selection.Copy
Sheets("Vsell").Select
Range("D1").Select
ActiveSheet.Paste
Range("D1").Select
End If
If Sheets("Master").Range("d5").Value > Sheets("Master").Range("a1").Value And Sheets("Master").Range("a1").Value >= Sheets("Master").Range("c5").Value Then
Sheets("BZ_RTD").Select
Range("C1:C51,F1:G51").Select
Selection.Copy
Sheets("DataPaste").Select
Range("k1").Select
ActiveSheet.Paste
Range("k1").Select
Sheets("BZ_RTD").Select
Range("C1:C51").Select
Selection.Copy
Sheets("Deal").Select
Range("e1").Select
ActiveSheet.Paste
Range("e1").Select
Sheets("BZ_RTD").Select
Range("F1:F51").Select
Selection.Copy
Sheets("Vbuy").Select
Range("e1").Select
ActiveSheet.Paste
Range("e1").Select
Sheets("BZ_RTD").Select
Range("G1:G51").Select
Selection.Copy
Sheets("Vsell").Select
Range("e1").Select
ActiveSheet.Paste
Range("e1").Select
End If
If Sheets("Master").Range("d6").Value > Sheets("Master").Range("a1").Value And Sheets("Master").Range("a1").Value >= Sheets("Master").Range("c6").Value Then
Sheets("BZ_RTD").Select
Range("C1:C51,F1:G51").Select
Selection.Copy
Sheets("DataPaste").Select
Range("n1").Select
ActiveSheet.Paste
Range("n1").Select
Sheets("BZ_RTD").Select
Range("C1:C51").Select
Selection.Copy
Sheets("Deal").Select
Range("f1").Select
ActiveSheet.Paste
Range("f1").Select
Sheets("BZ_RTD").Select
Range("F1:F51").Select
Selection.Copy
Sheets("Vbuy").Select
Range("f1").Select
ActiveSheet.Paste
Range("f1").Select
Sheets("BZ_RTD").Select
Range("G1:G51").Select
Selection.Copy
Sheets("Vsell").Select
Range("f1").Select
ActiveSheet.Paste
Range("f1").Select
End If
If Sheets("Master").Range("d7").Value > Sheets("Master").Range("a1").Value And Sheets("Master").Range("a1").Value >= Sheets("Master").Range("c7").Value Then
Sheets("BZ_RTD").Select
Range("C1:C51,F1:G51").Select
Selection.Copy
Sheets("DataPaste").Select
Range("q1").Select
ActiveSheet.Paste
Range("q1").Select
Sheets("BZ_RTD").Select
Range("C1:C51").Select
Selection.Copy
Sheets("Deal").Select
Range("g1").Select
ActiveSheet.Paste
Range("g1").Select
Sheets("BZ_RTD").Select
Range("F1:F51").Select
Selection.Copy
Sheets("Vbuy").Select
Range("g1").Select
ActiveSheet.Paste
Range("g1").Select
Sheets("BZ_RTD").Select
Range("G1:G51").Select
Selection.Copy
Sheets("Vsell").Select
Range("g1").Select
ActiveSheet.Paste
Range("g1").Select
End If
'***** TBD
If Sheets("Master").Range("d8").Value > Sheets("Master").Range("a1").Value And Sheets("Master").Range("a1").Value >= Sheets("Master").Range("c8").Value Then
Sheets("BZ_RTD").Select
Range("C1:C51,F1:G51").Select
Selection.Copy
Sheets("DataPaste").Select
Range("t1").Select
ActiveSheet.Paste
Range("t1").Select
Sheets("BZ_RTD").Select
Range("C1:C51").Select
Selection.Copy
Sheets("Deal").Select
Range("t1").Select
ActiveSheet.Paste
Range("t1").Select
Sheets("BZ_RTD").Select
Range("F1:F51").Select
Selection.Copy
Sheets("Vbuy").Select
Range("t1").Select
ActiveSheet.Paste
Range("t1").Select
Sheets("BZ_RTD").Select
Range("G1:G51").Select
Selection.Copy
Sheets("Vsell").Select
Range("t1").Select
ActiveSheet.Paste
Range("t1").Select
สวัสดีครับทุกๆท่าน
ผมสนใจเริ่มหัดเขียน VBA เพื่อ Copy ค่าจาก Sheets("BZ_RTD") ตามเวลาที่ตั้งใว้ (เวลาในชีท Master) และวางในชีทใหม่ 3 ชีทตามตำแหน่งอ้างอิง (อ้างตำแหน่งที่จะวางจาก ชีท Master) ผมใช้วิธีเขียนที่ละขั้นตอนซึง code ยาวมาก อยากปรึกษาท่านสมาชิกพอจะมี
แนวทางที่จะเขียนแบบสั้น แต่ทำงานได้เหมือนกันหรือเปล่าครับ ขอบคุณครับ
1.เริ่ม Copy ครั้งแรกตอนเวลา 9:55 โดยเลือข้อมูลจาก column A,C,F,G จาก ชีท BZ_RTD
2.คัดลอกข้อมูลจาก column A,C,F,G ชีท BZ_RTD วางในตำแหน่ง col A1 ในชีท DataPaste
3.คัดลอกข้อมูลจาก column A,C ชีท BZ_RTD วางในตำแหน่ง col A1 ในชีท Deal
4.คัดลอกข้อมูลจาก column A,F ชีท BZ_RTD วางในตำแหน่ง col A1 ในชีท Vbuy
5.คัดลอกข้อมูลจาก column A,G ชีท BZ_RTD วางในตำแหน่ง col A1 ในชีท VSell
6.ถัดมาอีก 5 นาที 10:00 ทำการคัดลอกข้อมูลอีกครัง แต่ครั้งนี้ไม่คัดลอกแถว A โดยเลือข้อมูลจาก column C,F,G จาก ชีท BZ_RTD
7.คัดลอกข้อมูลจาก column C,F,G ชีท BZ_RTD วางในตำแหน่ง col E1 ในชีท DataPaste
8.คัดลอกข้อมูลจาก column C ชีท BZ_RTD วางในตำแหน่ง col C1 ในชีท Deal
9.คัดลอกข้อมูลจาก column F ชีท BZ_RTD วางในตำแหน่ง col C1 ในชีท Vbuy
10.คัดลอกข้อมูลจาก column G ชีท BZ_RTD วางในตำแหน่ง col C1 ในชีท Vsell
11.ถัดมาอีก 5 นาที 10:05 ทำการคัดลอกข้อมูลอีกครัง โดยเลือข้อมูลจาก column C,F,G จาก ชีท BZ_RTD
12.คัดลอกข้อมูลจาก column C,F,G ชีท BZ_RTD วางในตำแหน่ง col H1 ในชีท DataPaste
13.คัดลอกข้อมูลจาก column C ชีท BZ_RTD วางในตำแหน่ง col D1 ในชีท Deal
14.คัดลอกข้อมูลจาก column F ชีท BZ_RTD วางในตำแหน่ง col D1 ในชีท Vbuy
15.คัดลอกข้อมูลจาก column G ชีท BZ_RTD วางในตำแหน่ง col D1 ในชีท Vsell
16.ถัดมาอีก 5 นาที 10:10 ทำการคัดลอกข้อมูลอีกครัง โดยเลือข้อมูลจาก column C,F,G จาก ชีท BZ_RTD
17.คัดลอกข้อมูลจาก column C,F,G ชีท BZ_RTD วางในตำแหน่ง col K1 ในชีท DataPaste
18.คัดลอกข้อมูลจาก column C ชีท BZ_RTD วางในตำแหน่ง col E1 ในชีท Deal
19.คัดลอกข้อมูลจาก column F ชีท BZ_RTD วางในตำแหน่ง col E1 ในชีท Vbuy
20.คัดลอกข้อมูลจาก column G ชีท BZ_RTD วางในตำแหน่ง col E1 ในชีท Vsell
21.ซ้ำขั้นตอน 16-20 จนกระทั้งเวลา 16:40
'***********************
Sample excel VBA beginner
'***********************
Sub CopyByTime()
'
' CopyByTime Macro
'
'
If Sheets("Master").Range("d2").Value > Sheets("Master").Range("a1").Value And Sheets("Master").Range("a1").Value >= Sheets("Master").Range("c2").Value Then
Sheets("DataPaste").Select
Range("A1").Select
Sheets("BZ_RTD").Select
Range("A1:A51,C1:C51,F1:G51").Select
Selection.Copy
Sheets("DataPaste").Select
Range("A1").Select
ActiveSheet.Paste
Range("A1").Select
Sheets("BZ_RTD").Select
Range("A1:A51,C1:C51").Select
Selection.Copy
Sheets("Deal").Select
Range("A1").Select
ActiveSheet.Paste
Range("A1").Select
Sheets("BZ_RTD").Select
Range("A1:A51,F1:F51").Select
Selection.Copy
Sheets("Vbuy").Select
Range("A1").Select
ActiveSheet.Paste
Range("A1").Select
Sheets("BZ_RTD").Select
Range("A1:A51,G1:G51").Select
Selection.Copy
Sheets("Vsell").Select
Range("A1").Select
ActiveSheet.Paste
Range("A1").Select
End If
If Sheets("Master").Range("d3").Value > Sheets("Master").Range("a1").Value And Sheets("Master").Range("a1").Value >= Sheets("Master").Range("c3").Value Then
Sheets("BZ_RTD").Select
Range("C1:C51,F1:G51").Select
Selection.Copy
Sheets("DataPaste").Select
Range("E1").Select
ActiveSheet.Paste
Range("E1").Select
Sheets("BZ_RTD").Select
Range("C1:C51").Select
Selection.Copy
Sheets("Deal").Select
Range("C1").Select
ActiveSheet.Paste
Range("C1").Select
Sheets("BZ_RTD").Select
Range("F1:F51").Select
Selection.Copy
Sheets("Vbuy").Select
Range("C1").Select
ActiveSheet.Paste
Range("C1").Select
Sheets("BZ_RTD").Select
Range("G1:G51").Select
Selection.Copy
Sheets("Vsell").Select
Range("C1").Select
ActiveSheet.Paste
Range("C1").Select
End If
If Sheets("Master").Range("d4").Value > Sheets("Master").Range("a1").Value And Sheets("Master").Range("a1").Value >= Sheets("Master").Range("c4").Value Then
Sheets("BZ_RTD").Select
Range("C1:C51,F1:G51").Select
Selection.Copy
Sheets("DataPaste").Select
Range("h1").Select
ActiveSheet.Paste
Range("h1").Select
Sheets("BZ_RTD").Select
Range("C1:C51").Select
Selection.Copy
Sheets("Deal").Select
Range("D1").Select
ActiveSheet.Paste
Range("D1").Select
Sheets("BZ_RTD").Select
Range("F1:F51").Select
Selection.Copy
Sheets("Vbuy").Select
Range("D1").Select
ActiveSheet.Paste
Range("D1").Select
Sheets("BZ_RTD").Select
Range("G1:G51").Select
Selection.Copy
Sheets("Vsell").Select
Range("D1").Select
ActiveSheet.Paste
Range("D1").Select
End If
If Sheets("Master").Range("d5").Value > Sheets("Master").Range("a1").Value And Sheets("Master").Range("a1").Value >= Sheets("Master").Range("c5").Value Then
Sheets("BZ_RTD").Select
Range("C1:C51,F1:G51").Select
Selection.Copy
Sheets("DataPaste").Select
Range("k1").Select
ActiveSheet.Paste
Range("k1").Select
Sheets("BZ_RTD").Select
Range("C1:C51").Select
Selection.Copy
Sheets("Deal").Select
Range("e1").Select
ActiveSheet.Paste
Range("e1").Select
Sheets("BZ_RTD").Select
Range("F1:F51").Select
Selection.Copy
Sheets("Vbuy").Select
Range("e1").Select
ActiveSheet.Paste
Range("e1").Select
Sheets("BZ_RTD").Select
Range("G1:G51").Select
Selection.Copy
Sheets("Vsell").Select
Range("e1").Select
ActiveSheet.Paste
Range("e1").Select
End If
If Sheets("Master").Range("d6").Value > Sheets("Master").Range("a1").Value And Sheets("Master").Range("a1").Value >= Sheets("Master").Range("c6").Value Then
Sheets("BZ_RTD").Select
Range("C1:C51,F1:G51").Select
Selection.Copy
Sheets("DataPaste").Select
Range("n1").Select
ActiveSheet.Paste
Range("n1").Select
Sheets("BZ_RTD").Select
Range("C1:C51").Select
Selection.Copy
Sheets("Deal").Select
Range("f1").Select
ActiveSheet.Paste
Range("f1").Select
Sheets("BZ_RTD").Select
Range("F1:F51").Select
Selection.Copy
Sheets("Vbuy").Select
Range("f1").Select
ActiveSheet.Paste
Range("f1").Select
Sheets("BZ_RTD").Select
Range("G1:G51").Select
Selection.Copy
Sheets("Vsell").Select
Range("f1").Select
ActiveSheet.Paste
Range("f1").Select
End If
If Sheets("Master").Range("d7").Value > Sheets("Master").Range("a1").Value And Sheets("Master").Range("a1").Value >= Sheets("Master").Range("c7").Value Then
Sheets("BZ_RTD").Select
Range("C1:C51,F1:G51").Select
Selection.Copy
Sheets("DataPaste").Select
Range("q1").Select
ActiveSheet.Paste
Range("q1").Select
Sheets("BZ_RTD").Select
Range("C1:C51").Select
Selection.Copy
Sheets("Deal").Select
Range("g1").Select
ActiveSheet.Paste
Range("g1").Select
Sheets("BZ_RTD").Select
Range("F1:F51").Select
Selection.Copy
Sheets("Vbuy").Select
Range("g1").Select
ActiveSheet.Paste
Range("g1").Select
Sheets("BZ_RTD").Select
Range("G1:G51").Select
Selection.Copy
Sheets("Vsell").Select
Range("g1").Select
ActiveSheet.Paste
Range("g1").Select
End If
'***** TBD
If Sheets("Master").Range("d8").Value > Sheets("Master").Range("a1").Value And Sheets("Master").Range("a1").Value >= Sheets("Master").Range("c8").Value Then
Sheets("BZ_RTD").Select
Range("C1:C51,F1:G51").Select
Selection.Copy
Sheets("DataPaste").Select
Range("t1").Select
ActiveSheet.Paste
Range("t1").Select
Sheets("BZ_RTD").Select
Range("C1:C51").Select
Selection.Copy
Sheets("Deal").Select
Range("t1").Select
ActiveSheet.Paste
Range("t1").Select
Sheets("BZ_RTD").Select
Range("F1:F51").Select
Selection.Copy
Sheets("Vbuy").Select
Range("t1").Select
ActiveSheet.Paste
Range("t1").Select
Sheets("BZ_RTD").Select
Range("G1:G51").Select
Selection.Copy
Sheets("Vsell").Select
Range("t1").Select
ActiveSheet.Paste
Range("t1").Select