11 มี.ค. 2023 เวลา 04:31 • การศึกษา

การเติมข้อมูลลงในตารางสุดท้ายผ่านคุณสมบัติของตาราง? ด้วยVBA

ปกติแล้วการทำงานกับตารางexcel เรามักต้องการใส่ข้อมูลไว้ที่ท้ายสุดของตาราง แต่ในบางครั้งตารางของเราอาจจะมีจำนวนมาก หรือ ตารางของเราเป็นแบบฟันหลอ หรือ มีบางcell ที่ไม่มีข้อมูลเป็นcell เปล่า เป็นต้น ทำให้การใช้คำสั่ง currentregion หรือ count.row ไม่ได้ผล
แต่เราอาจมองหาคุณสมบัติอื่น อย่างเช่น รูปแบบของตาราง หรือก็คือเส้นขอบของ ตารางในการกำหนด การค้นหา last row ได้ เพื่อใส่ข้อมูลลงไป
ในโค้ดนี้ เราจะประกาศตัวแปรสองตัวLastRowและ กำหนดเป็นรูปแบบเส้นขอบที่คุณต้องการใช้เพื่อค้นหาแถวสุดท้ายBorderValue
จากนั้นเราใช้UsedRangeคุณสมบัติของแผ่นงานที่ใช้งานอยู่เพื่อรับช่วงของเซลล์ที่ใช้งานอยู่ เราตั้งLastRowค่าตัวแปรเป็นหมายเลขแถวของเซลล์แรกใน บวก ด้วยUsedRangeจำนวนแถวในUsedRangeลบ 1 ซึ่งทำให้เราทราบหมายเลขแถวของเซลล์สุดท้ายในUsedRange
Dim LastRow As Long
Dim BorderValue As Long
 
BorderValue = xlEdgeBottom 'change this value to the desired border style
จากนั้นเราจะใช้Do Whileการวนซ้ำเพื่อวนซ้ำผ่านแถวของUsedRange เริ่มจากแถวสุดท้ายและเลื่อนขึ้นไป สำหรับแต่ละแถว เราจะตรวจสอบรูปแบบเส้นขอบของเซลล์แรกในแถวนั้นโดยใช้BordersคุณสมบัติและBorderStyleการแจงนับ ถ้ารูปแบบเส้นขอบของเซลล์แรกในแถวคือxlNoneเราจะลดLastRowตัวแปรลง 1 และดำเนินการต่อไปยังแถวถัดไป
เมื่อเราพบแถวที่มีลักษณะเส้นขอบของเซลล์แรกตรงกับBorderValueตัวแปร เราจะออกจากลูปและแสดงกล่องข้อความที่มีหมายเลขแถวของแถวสุดท้ายที่มีรูปแบบเส้นขอบที่ต้องการ
CODE สรุป ด้านล่าง——————
Sub GetLastRowByBorder()
Dim LastRow As Long
Dim BorderValue As Long
 
BorderValue = xlEdgeBottom 'ตรงนี้สามารถแก้ไขได้ จะเอาขอบข้าง ขอบล่าง ขอบบนแล้วแต่ความสะดวก
 
With ActiveSheet.UsedRange
LastRow = .Row + .Rows.Count - 1
Do While .Cells(LastRow, 1).Borders(BorderValue).LineStyle = xlNone And LastRow > 1
LastRow = LastRow - 1
Loop
End With
 
MsgBox "Last row with border style " & BorderValue & " is " & LastRow
End Sub
ปล. เกือบลืมบอกไปว่าคุณสมบัติ จากการคืนค่าของ line style จะเป็นค่าตัวเลข (integer)เช่น xlNone คือค่า 0 เป็นต้น

ดูเพิ่มเติมในซีรีส์

โฆษณา