Page 1 of 1

Macro | ลบรายการ (Row) ที่มีเงื่อนไขตามที่กำหนดด้วย Script

Posted: Mon Apr 12, 2010 6:45 pm
by SaturdayAugust™
เรียน คุณคนควน

รบกวนขอสอบถามครับ ผมมีข้อมูลชุดหนึ่งแล้วต้องการใช้ Script ให้ Delete row ตามที่กำหนดไว้ใน Cell ดังเอกสารแนบครับผม

ขอบคุณครับ

Re: Macro | ลบรายการ (Row) ที่มีเงื่อนไขตามที่กำหนดด้วย Scri

Posted: Mon Apr 12, 2010 7:45 pm
by snasui
:D ลองใช้ Code นี้ Run ดูครับ

Code: Select all

Option Explicit

Sub DelRow()
Dim r As Range
Dim i As Integer
With Worksheets("Sheet1")
    Set r = .Range(.Range("D2"), .Range("D65536").End(xlUp))
End With
For i = r.Rows.Count To 1 Step -1
    If r(i) = "H7" Then
        r(i).EntireRow.Delete
    End If
Next i
End Sub

Re: Macro | ลบรายการ (Row) ที่มีเงื่อนไขตามที่กำหนดด้วย Scri

Posted: Sat Aug 13, 2011 1:03 am
by su019
เราต้องสร้างปุ่ม แล้ว Assign Macro ตามสูตรของคุณ หรือว่าเอา Code ไปวางที่ View code เลยค่ะ
แล้วถ้าเกิดลบได้ บรรทัดถัดไปจะร่นขึ้นมาแทนเลยหรือเปล่าค่ะ

พอดีลองทำตามมแล้ว ไม่ประสบความสำเร็จค่ะ

Re: Macro | ลบรายการ (Row) ที่มีเงื่อนไขตามที่กำหนดด้วย Scri

Posted: Sat Aug 13, 2011 1:09 am
by snasui
:D จะทำปุ่มแล้ว Assign Macro หรือไม่ก็ได้ ถ้าทำปุ่มแล้ว Assign Macro การจะให้ Code ทำงานก็คลิกที่ปุ่ม หากไม่ได้ Assign Macro ก็ต้อง Manual Run

การ Manual Run คือกดแป้น Alt+F8 > เลือก Macro ที่ต้องการ Run > คลิก Run

สำหรับ Code ด้านบนหากบรรทัดถูกลบไปก็จะขยับบรรทัดขึ้นด้านบนเพราะเป็นการลบบรรทัด ไม่ใช่การ Clear Data ในบรรทัดนั้น กรณีที่ลองทำเองแล้ว Code ไม่ทำงานหรือทำงานไม่ถูกต้อง ลองแนบไฟล์มากับกระทู้ จะช่วยดูให้ครับ

Re: Macro | ลบรายการ (Row) ที่มีเงื่อนไขตามที่กำหนดด้วย Scri

Posted: Sat Aug 13, 2011 1:59 pm
by su019
ตอนนี้ทำตามได้แล้วค่ะ

ถามเพิ่มเติมนะค่ะ ถ้าเราต้องการ key ที่ช่อง G1 แล้วให้ code ทำงาน ต้องเพิ่มเติมตรงไหนค่ะ ตอนนี้ต้องเขามาแก้ไข code ที่ต้องการลบใน code ของ macro ค่ะ ถึงจะลบขอมูลได้ค่ะ

ขอบคุณค่ะ

Re: Macro | ลบรายการ (Row) ที่มีเงื่อนไขตามที่กำหนดด้วย Scri

Posted: Sat Aug 13, 2011 2:12 pm
by snasui
:D สามารถใช้ Worksheet_Change Event เพื่อดักจับการเปลี่ยนแปลงในเซลล์ G1 ได้ครับ เมื่อ G1 เป็นแปลงก็ไปเรียก Code ที่ชื่อ DelRow ให้ทำงาน

ซึ่ง Worksheet_Change ก็ให้วางใน Code ใน Sheet ที่ต้องการดักจับการเปลี่ยนแปลง (ในโปรแกรม VBE)

ตัวอย่าง Code

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$G$1" Then
    DelRow
End If
End Sub