Page 1 of 1
ต้องการใช้ปุ่ม vba หรือ ปุ่มมาโคร ในการลบข้อมูลแบบมีเงื่อนไข
Posted: Tue Sep 27, 2011 12:27 am
by moogati
ผมมีตารางกรอก id ที่ไม่ซ้ำกันอยู่ใน sheet 1 ครับ และมีตารางที่เก็บข้อมูล id ที่ไม่ซ้ำกันใน sheet2 ครับ แล้วผมต้องการสร้างปุ่ม VBA หรือ ปุ่ม มาโคร ในการกำหนดว่า id ใน sheet1 ตรงกับ sheet2 ในแถวไหนบ้าง และต้องการให้ลบทั้งแถวนั้นใน sheet2 ทิ้งครับ จำมีวิธีการเขียนโค้ด VBA หรือ ทำมาโครยังไง แนะนำด้วยครับ
มีไฟล์แนบตัวอย่างมาด้วยครับ
Re: ต้องการใช้ปุ่ม vba หรือ ปุ่มมาโคร ในการลบข้อมูลแบบมีเงื่
Posted: Tue Sep 27, 2011 6:59 am
by snasui

ลองบันทึก Macro ตามนี้ครับ
1. ที่ Sheet2 เซลล์ C4 คีย์คำว่า Filter
2. ที่ Sheet2 เซลล์ C5 คีย์สูตร
=COUNTIF(Sheet1!$B$8:$B$14,A5)>0
Enter > Copy ลงด้านล่าง
3. ทำการ Filter เลือกเฉพาะ True
4. คลุมข้อมูลที่ได้จากการ Filter > กดแป้น F5 > Special > เลือก Visible cells only
5. ลบทิ้งโดยคลิกขวา > Delete row > OK
6. ลบคอลัมน์ C ทิ้งไป
Re: ต้องการใช้ปุ่ม vba หรือ ปุ่มมาโคร ในการลบข้อมูลแบบมีเงื่
Posted: Tue Sep 27, 2011 10:01 am
by moogati
ขอบคุณมากครับ
เนื่องจากงานของผมสามารถเพิ่มข้อมูลได้เรื่อยๆ sheet2 มันเลยไม่มีขอบเขตครับ ถ้าผมก๊อปปี้สูตรลงมาสมมุตสัก 500 แถว พอเวลารันมาโครแล้วมันเกิด runtime error 1004 ครับ จะมีวิธีแก้ หรือมีวิธีอื่น ยังไงบ้างครับ
Re: ต้องการใช้ปุ่ม vba หรือ ปุ่มมาโคร ในการลบข้อมูลแบบมีเงื่
Posted: Tue Sep 27, 2011 10:50 am
by logic
ผมคิดว่าแนบโค้ดมาด้วยน่าจะดีกว่า ผู้รู้จะได้แนะนำได้ถูกครับ

Re: ต้องการใช้ปุ่ม vba หรือ ปุ่มมาโคร ในการลบข้อมูลแบบมีเงื่
Posted: Tue Sep 27, 2011 11:11 am
by moogati
ผมรู้แล้วครับ เพราะว่า ผมเรียกใช้ มาโครใน sheet 1 มันเลยเกิด error ครับ แต่ถ้าไปเรียกใช้ใน sheet 2 ไม่มีปัญหาอะไร
แต่ปัญหาของผมคือ ต้องการคลิกปุ่มจาก sheet 1 ครับ แต่มันเกิด error 1004 ขึ้นครับ มีวิธีแก้ยังไงครับ
Re: ต้องการใช้ปุ่ม vba หรือ ปุ่มมาโคร ในการลบข้อมูลแบบมีเงื่
Posted: Tue Sep 27, 2011 11:29 am
by moogati
ไฟล์แนบพร้อมโค้ดครับ ช่วยดูปัญหาที่เกิดขึ้นด้วยครับ
Re: ต้องการใช้ปุ่ม vba หรือ ปุ่มมาโคร ในการลบข้อมูลแบบมีเงื่
Posted: Tue Sep 27, 2011 4:13 pm
by snasui

ลองดู Code ตามด้านล่างครับ
Code: Select all
Sub Macro1()
'
' Macro1 แมโคร
'
'
Sheets("Sheet2").Select
Range("C4").FormulaR1C1 = "filter"
Range("C5").Select
ActiveCell.FormulaR1C1 = "=COUNTIF(Sheet1!R8C2:R14C2,Sheet2!RC[-2])>0"
Range("C5").Select
Selection.AutoFill Destination:=Range("C5:C425"), Type:=xlFillDefault
Range("C4").Select
Selection.AutoFilter
ActiveSheet.Range("$A$4:$C$425").AutoFilter Field:=3, Criteria1:="TRUE"
Range("C5:C7").Select
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.EntireRow.Delete
Columns("C:C").Select
Selection.Delete Shift:=xlToLeft
Range("B4").Select
Selection.AutoFilter
End Sub
มีการเพิ่ม Code
เพื่อให้โปรแกรมรู้ว่าจะทำงานกับ Sheet2 ครับ