Page 1 of 1
รบกวนผู้รู้ช่วยอธิบาย Code VBA ให้ด้วยครับ
Posted: Tue Oct 23, 2012 4:14 pm
by niwat2811
Code: Select all
Dim r As Long, lr As Long, i
Application.ScreenUpdating = False
i = Array("", "OBSERVATIONS", "VIOLATIONS", "TOTAL", "")
lr = Cells(Rows.Count, 1).End(xlUp).Row + 1
For r = lr To 3 Step -1
If Cells(r, 1) <> Cells(r - 1, 1) Then
Rows(r).Resize(5).Insert
Cells(r, 1).Resize(5).Value = Application.Transpose(i)
Cells(r, 1).Resize(, 2).Interior.ColorIndex = 15
Cells(r + 1, 1).Resize(3).Font.Bold = True
Cells(r + 4, 1).Resize(, 2).Interior.ColorIndex = 15
End If
Next r
Columns(1).AutoFit
Application.ScreenUpdating = True
จาก Code ด้านบน สงสัยตรงที่ว่า For r = lr To 3 step -1 หมายความว่าอย่างไรครับ
Re: รบกวนผู้รู้ช่วยอธิบาย Code VBA ให้ด้วยครับ
Posted: Tue Oct 23, 2012 6:42 pm
by snasui

เป็นการกำหนดค่าให้ r มีค่าตั้งแต่ค่า lr จนถึง 3 และให้ลดลงครั้งละ 1 ครับ
Re: รบกวนผู้รู้ช่วยอธิบาย Code VBA ให้ด้วยครับ
Posted: Wed Oct 24, 2012 6:23 am
by niwat2811

เพื่อความกระจ่างอีกนิดครับ ยกตัวอย่างเช่น lr = แถวที่ 100 ดังนั้น นับขึ้นมา 3 แถว คือ เริ่มที่แถว 98 ใช่ไหมครับ แล้วก็ลดลงไป 1 คือแถวที่ 99 แล้วก็แถวที่ 100 ใช่ไหมครับ
หรือว่า lr = แถวที่ 100 แล้วเริ่มนับตั้งแต่ แถวที่ 3 แล้วก็ลดลงไป 1 คือแถวที่ 4 แล้วก็แถวที่ 5 ตามลำดับใช่ไหมครับ คือว่ายังงง ๆ อยู่ครับ ไม่ค่อยเข้าใจเลยต้องถามเพิ่มครับ
รบกวนด้วยครับ

Re: รบกวนผู้รู้ช่วยอธิบาย Code VBA ให้ด้วยครับ
Posted: Wed Oct 24, 2012 6:50 am
by snasui

ไม่ใช่ทุกข้อที่กล่าวมาครับ
Code นั้นหมายความว่า ให้หาค่าลำดับของแถวสุดท้ายที่มีข้อมูลในคอลัมน์ A แล้วบวกเพิ่มด้วย 1 มาเป็นค่าของ lr จากนั้นก็เป็นการ Loop เพื่อ
ลดค่า lr ลงทีละ 1 จนถึง 3 ครับ
ตัวอย่างคือ 100, 99, 98,...,5, 4, 3
Re: รบกวนผู้รู้ช่วยอธิบาย Code VBA ให้ด้วยครับ
Posted: Wed Oct 24, 2012 12:13 pm
by niwat2811
เข้าใจชัดแจ้งแล้วครับ ขอบคุณท่านอาจารย์มากครับ