
ต้องค่อย ๆ ทำความเข้าใจนะครับ
จาก
Code: Select all
With Worksheets("Update_Delete_Item")
Set rsAll = .Range("G6", .Range("G" & Rows.Count).End(xlUp))
End With
เป็นการกำหนดค่าให้กับตัวแปร rsAll โดยให้มีค่าเท่ากับช่วงข้อมูลเริ่มจาก G6 จนถึงเซลล์สุดท้ายในคอลัมน์ G
จาก
Code: Select all
Set rtAll = .Range("G2", .Range("G" & Rows.Count).End(xlUp))
เป็นการกำหนดค่าให้ตัวแปร rtAll โดยให้มีค่าเท่ากับช่วงข้อมูลเริ่มจาก G2 จนถึงเซลล์สุดท้ายในคอลัมน์ G
จาก
Code: Select all
For Each rs In rsAll
For i = rtAll.Count To 1 Step -1
If rs = rtAll(i) And rs.Offset(0, -4) = rtAll(i).Offset(0, -4) _
And rs.Offset(0, 6) = "Update" Then
rs.Offset(0, -5).Resize(1, 10).Copy
rtAll(i).Offset(0, -5).PasteSpecial xlPasteValues
End If
Next i
Next rs
ความหมายคือ จากแต่ละค่าใน rsAll ให้ทำการ Run Statement
Code: Select all
For i = rtAll.Count To 1 Step -1
If rs = rtAll(i) And rs.Offset(0, -4) = rtAll(i).Offset(0, -4) _
And rs.Offset(0, 6) = "Update" Then
rs.Offset(0, -5).Resize(1, 10).Copy
rtAll(i).Offset(0, -5).PasteSpecial xlPasteValues
End If
Next i
จาก Statement ด้านบนความหมายถือ กำหนดให้ i เป็นค่าที่ได้จากการนับจำนวนค่าใน rtAll จนถึงค่า 1 และให้ทำการลดค่าลงครั้งละ 1 ในแต่ละค่าของ i ให้ทำการ Run Statement
Code: Select all
If rs = rtAll(i) And rs.Offset(0, -4) = rtAll(i).Offset(0, -4) _
And rs.Offset(0, 6) = "Update" Then
rs.Offset(0, -5).Resize(1, 10).Copy
rtAll(i).Offset(0, -5).PasteSpecial xlPasteValues
End If
ความหมายของ Statement ด้านบนคือ หากตัวแปร rs มีค่าเท่ากับ rtAll ลำดับที่ i และ ค่าที่ถัดจากตัวแปร rs ไปทางซ้าย 4 คอลัมน์มีค่าเท่ากับค่าทีถัดไปจาก rtAll ลำดับที่ i ไปด้านซ้าย 4 คอลัมน์ และ ค่าที่ถัดไปจากตัวแปร rs ไปด้านขวา 6 คอลัมน์มีค่าเท่ากับ Update แล้ว ให้ทำการปรับขนาดค่าที่ถัดจากตัวแปร rs ไปด้านซ้าย 5 คอลัมน์โดยให้มีความสูงเพียง 1 บรรทัดและมีความกว้างขยายไปทางขวา 10 คอลัมน์แล้วทำการ Copy ข้อมูลชุดนี้ไปวางเฉพาะค่าที่ค่าที่ถัดจากตัวแปร rtAll ลำดับที่ i ไปทางด้านซ้าย 5 คอลัมน์