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
:D เป็นการกำหนดค่าให้ 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 ตามลำดับใช่ไหมครับ คือว่ายังงง ๆ อยู่ครับ ไม่ค่อยเข้าใจเลยต้องถามเพิ่มครับ
รบกวนด้วยครับ :mrgreen:

Re: รบกวนผู้รู้ช่วยอธิบาย Code VBA ให้ด้วยครับ

Posted: Wed Oct 24, 2012 6:50 am
by snasui
:D ไม่ใช่ทุกข้อที่กล่าวมาครับ

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
เข้าใจชัดแจ้งแล้วครับ ขอบคุณท่านอาจารย์มากครับ