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
ลองใช้ 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
จะทำปุ่มแล้ว 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
สามารถใช้ 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