Page 1 of 1

VBA_Delete Rows [Not Entire Rows]

Posted: Tue May 28, 2019 2:55 pm
by imomo17
รบกวนขอสอบถามค่ะ พอดีมีข้อมูลที่ต้องการให้ Delete row ที่มียอดใน Column L เป็น 0
โดยสามารถลบได้แล้วตามเงื่อนไข แต่ต้องการเพิ่มโค้ด โดยให้ลบเพียง Column G ถึง U เท่านั้น ไม่ใช่ลบทั้งแถว
เนื่องจากต้องการคงข้อมูลหลังจาก Column W ไว้ค่ะ รบกวนแนะนำด้วยค่ะ

ไฟล์ตัวอย่างตามเอกสารแนบค่ะ

ขอบคุณค่ะ
Test1.xlsm
(349.36 KiB) Downloaded 7 times

Re: VBA_Delete Rows [Not Entire Rows]

Posted: Tue May 28, 2019 3:22 pm
by niwat2811
ลองตามนี้ดูครับว่าได้ตามต้องการไหม

Code: Select all

Sub test()
Dim i As Integer, lr As Long
Application.ScreenUpdating = False
lr = Range("G" & Rows.Count).End(xlUp).Row
For i = lr To 5 Step -1
    If Range("L" & i).Value = 0 Then
        Range("G" & i).Resize(1, 15).Delete Shift:=xlUp
    End If
Next i
Application.ScreenUpdating = True
End Sub

Re: VBA_Delete Rows [Not Entire Rows]

Posted: Tue May 28, 2019 4:34 pm
by imomo17
ใช้ได้เลยค่ะ ขอบคุณมากค่ะ
รบกวนอธิบายโค้ด 2 บรรทัดนี้เพิ่มเติมให้หน่อยค่ะ ว่าหมายถึงการทำงานอย่างไรคะ

Code: Select all

Application.ScreenUpdating = False

Code: Select all

Range("G" & i).Resize(1, 15).Delete Shift:=xlUp
ขอบคุณค่ะ

Re: VBA_Delete Rows [Not Entire Rows]

Posted: Tue May 28, 2019 6:40 pm
by snasui
imomo17 wrote: Tue May 28, 2019 4:34 pm Application.ScreenUpdating = False
:D หมายถึงให้หน้าจอหยุดวูบวาบเมื่อ Code กำลังทำงานครับ
imomo17 wrote: Tue May 28, 2019 4:34 pm Range("G" & i).Resize(1, 15).Delete Shift:=xlUp
หมายถึงให้ขยายเซลล์ในคอลัมน์ G บรรทัดที่ i โดยไปทางขวา 15 คอลัมน์แล้วลบทิ้งโดยให้ขยับเซลล์ด้านล่างขึ้นด้านบน

Re: VBA_Delete Rows [Not Entire Rows]

Posted: Wed May 29, 2019 8:15 am
by imomo17
เข้าใจแล้วค่ะ ขอบคุณมากๆค่ะ :D