:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser
🪷 คำแสดงเจตนา
ขอผลแห่งการให้ความรู้นี้ จงกลับไปยังผู้ที่เป็นเจ้าของเดิม แม้ข้าพเจ้าจะไม่รู้จักท่านก็ตาม ขอให้แสงแห่งปัญญาที่ท่านเคยจุดไว้ ได้กลับไปเติมเต็มชีวิตของท่านอีกครั้ง และขอให้เจตนาของข้าพเจ้าเป็นการคืนความดีอย่างสงบ

การลบบรรทัดในชีทด้วยVBA

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
yodpao.b
Gold
Gold
Posts: 1608
Joined: Tue Jul 19, 2011 2:47 pm
Excel Ver: 2013,excel standard

การลบบรรทัดในชีทด้วยVBA

#1

Post by yodpao.b »

รบกวนอาจาร์ยช่วยตอบหน่อยครับผมไม่เข้าใจเรื่องโคดที่สั่งให้ลบบรรทัดที่ต้องการลบ
ยกตัวอย่าง ต้องการลบรหัสชื่อ GP-2554-00084 แต่รหัสนี้มี 3 บรรทัด
ผมได้ใช้โคดด้านล่างนี้ผลที่ได้คือมันลบบันทัดเดียว

Code: Select all

Private Sub CommandButton1_Click()
On Error Resume Next
                Sheets("DataReimbursement").Select
                Range("C11").Select
                    Do While True
                            If ActiveCell.Value = TextBox1.Text Then
                                    ActiveCell.Offset(0, 0).EntireRow.Delete
                                    'Unload Me
                                    Exit Do
                            End If
                                ActiveCell.Offset(1, 0).Select
                        Loop
End Sub
และทั้งนี้ได้นแนบไฟล์มาด้วยครับ
ขอบคุณครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: การลบบรรทัดในชีทด้วยVBA

#2

Post by snasui »

:lol: ให้ลบ Exit Do หรือ Mark Exit Do ให้เป็น Comment ครับ
yodpao.b
Gold
Gold
Posts: 1608
Joined: Tue Jul 19, 2011 2:47 pm
Excel Ver: 2013,excel standard

Re: การลบบรรทัดในชีทด้วยVBA

#3

Post by yodpao.b »

ตอนนี้ได้ทดลองทำเอา Exit Do ออกจากโคดแล้ว
ผลลัพธ์ที่ได้ ดูเหมือนจะลบออกได้แต่ยังไม่เห็นผลลัพธ์ใดเพราะเครื่องบอกสถานะว่ากำลังคำนวณเซล 100 %
และหน้าจอก็ค้างหน้าจอแบบนั้นตลอดครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: การลบบรรทัดในชีทด้วยVBA

#4

Post by snasui »

:D ลองอ่านที่ผมตอบไว้ที่นี่ครับ :arrow: viewtopic.php?p=13844#p13844
yodpao.b
Gold
Gold
Posts: 1608
Joined: Tue Jul 19, 2011 2:47 pm
Excel Ver: 2013,excel standard

Re: การลบบรรทัดในชีทด้วยVBA

#5

Post by yodpao.b »

Code: Select all

Private Sub CommandButton1_Click()
On Error Resume Next
                Sheets("DataReimbursement").Select
                Range("C11").Select
                    Do While ActiveCell <> ""            
                            If ActiveCell.Value = TextBox1.Text Then
                                    ActiveCell.Offset(0, 0).EntireRow.Delete
                            End If
                                ActiveCell.Offset(1, 0).Select
                        Loop
Unload Me
End Sub
ผมได้แก้เป็นโดดที่เห็นด้านบน
ผลที่ได้คือ
ถ้ามีรหัสที่ซ้ำกันอยู่ 3 แถว เมื่อ run แล้วจะเหลือแถว 2 อยู่
ถ้ามีรหัสที่ซ้ำกันอยู่ 4 แถว เมื่อ run แล้วจะเหลือแถว 2และ4 อยู่
ครับแล้วต้องทำอย่างไรอีกครับ
คือถ้ามี 4 แถวต้องการให้ลบทั้ง 4 แถวครับผม
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: การลบบรรทัดในชีทด้วยVBA

#6

Post by snasui »

:lol: ลองปรับ Code เป็นตามด้านล่างครับ

Code: Select all

Private Sub CommandButton1_Click()
    'On Error Resume Next
    Sheets("DataReimbursement").Select
    Range("C11").Select
    Do While ActiveCell <> ""
        If ActiveCell.Value = TextBox1.Text Then
            ActiveCell.Offset(0, 0).EntireRow.Delete
            'Unload Me
'            Exit Do
        Else
            ActiveCell.Offset(1, 0).Select
        End If
    Loop
End Sub
Last edited by snasui on Mon Feb 13, 2012 3:55 pm, edited 1 time in total.
Reason: ลบ code สำหรับทดสอบออก
yodpao.b
Gold
Gold
Posts: 1608
Joined: Tue Jul 19, 2011 2:47 pm
Excel Ver: 2013,excel standard

Re: การลบบรรทัดในชีทด้วยVBA

#7

Post by yodpao.b »

ขอบคุณมากครับใช้ได้แล้ว
yodpao.b
Gold
Gold
Posts: 1608
Joined: Tue Jul 19, 2011 2:47 pm
Excel Ver: 2013,excel standard

Re: การลบบรรทัดในชีทด้วยVBA

#8

Post by yodpao.b »

อาจาร์ยครับ จากโคดด้านล่างนี้ผมว่าผม copy มาจากอาจาร์ย

Code: Select all

Private Sub CommandButton111_Click()
    Dim i As Integer
    Sheets("DataReimbursement").Select
    Range("C11").Select
    Do While ActiveCell <> ""
        If ActiveCell.Value = TextBox1.Text Then
            ActiveCell.Offset(0, 0).EntireRow.Delete
            i = i + 1
        Else
            ActiveCell.Offset(1, 0).Select
        End If
    Loop
            Unload Me
End Sub
ไม่เข้าใจว่า โพสต์นี้หายไป
หรือว่าใช่ได้ทั้งสองแบบครับ
yodpao.b
Gold
Gold
Posts: 1608
Joined: Tue Jul 19, 2011 2:47 pm
Excel Ver: 2013,excel standard

Re: การลบบรรทัดในชีทด้วยVBA แบบลบ 2 ตาราง ใน Code เดียว

#9

Post by yodpao.b »

จากที่อาจาร์ยสอนมาการลบข้อมูลทั้งบรรทัดมีอยู่ 2 แบบ

แบบที่ 1 มีรหัสไม่ซ้ำกันดังCodeด้านล่าง

Code: Select all

Private Sub CommandButton1_Click()
    
Sheets("DataEachUse").Select
Range("C11").Select
   Do While True
        If ActiveCell.Value = TextBox1.Text Then
           ActiveCell.Offset(0, 0).EntireRow.Delete
           Exit Sub
         End If
          ActiveCell.Offset(1, 0).Select
   Loop
Unload Me
End Sub
แบบที่2 มีรหัสซ้ำกันดังCodeด้านล่าง

Code: Select all

Private Sub CommandButton1_Click()

    Sheets("DataReimbursement").Select
    Range("C11").Select
    Do While ActiveCell <> ""
        If ActiveCell.Value = TextBox1.Text Then
            ActiveCell.Offset(0, 0).EntireRow.Delete
        Else
            ActiveCell.Offset(1, 0).Select
        End If
    Loop
    Unload Me
End Sub
คำอธิบาย
เนื่องจากตารางที่ต้องการลบอยู่คนละหน้ากัน จึงต้องสั่งลบถึง 2 ครั้ง เป็นไปได้ไหมที่จะสั่งเพียง 1 ครั้ง แล้วให้
โปรแกรมทำการลบทั้ง 2 หน้า

คำถาม
ต้องการนำโคดทั้ง 2 มารวมกัน โดยใช้คำสั่งเพียง 1 ครั้ง

ขอบคุณครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: การลบบรรทัดในชีทด้วยVBA

#10

Post by snasui »

:D ไม่ได้หายแต่อย่างใดครับ ผมปรับ Code ให้เหลือเฉพาะที่จำเป็น บรรทัดอื่น ๆ ผมใส่เข้าไปเพื่อทดสอบครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: การลบบรรทัดในชีทด้วยVBA แบบลบ 2 ตาราง ใน Code เดียว

#11

Post by snasui »

:D ลองรวมกันเองดูก่อนครับ ถ้ายังไม่ได้ลองแนบ Code ที่รวมกันแล้วนั้นมาดูอีกรอบครับ :mrgreen:

เรื่องเดียวกันไม่ควรแยกโพสต์กระทู้ใหม่ครับ :twisted: สำหรับกระทู้นี้ผมรวมกลับเข้ามาให้แล้ว
yodpao.b
Gold
Gold
Posts: 1608
Joined: Tue Jul 19, 2011 2:47 pm
Excel Ver: 2013,excel standard

Re: การลบบรรทัดในชีทด้วยVBA

#12

Post by yodpao.b »

ตอนนี้นำมารวมกันแล้วใช้ได้ครับ
แต่กลัวว่าจะไม่ถูกต้องซะทีเดียว
รบกวนอาจาร์ยช่วยดูว่าถูกต้องตามหลักไหม

Code: Select all

Private Sub CommandButton1_Click()

Sheets("DataEachUse").Select
Range("C11").Select
   Do While ActiveCell <> ""
        If ActiveCell.Value = TextBox1.Text Then
           ActiveCell.Offset(0, 0).EntireRow.Delete
        Else
            ActiveCell.Offset(1, 0).Select
        End If
    Loop
    Sheets("DataReimbursement").Select
    Range("C11").Select
    Do While ActiveCell <> ""
        If ActiveCell.Value = TextBox1.Text Then
            ActiveCell.Offset(0, 0).EntireRow.Delete
        Else
            ActiveCell.Offset(1, 0).Select
        End If
    Loop
Unload Me
MsgBox "          ขั้นตอนดำเนินการลบใบพัสดุเลขที่  " & TextBox1 & "เสร็จเรียบร้้อยแล้ว      ", vbExclamation, "   โปรแกรมการจัดเก็บข้อมูล"
End Sub
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: การลบบรรทัดในชีทด้วยVBA

#13

Post by snasui »

:lol: Code ที่เขียนมาสามารถใช้ได้ครับ
yodpao.b
Gold
Gold
Posts: 1608
Joined: Tue Jul 19, 2011 2:47 pm
Excel Ver: 2013,excel standard

Re: การลบบรรทัดในชีทด้วยVBA

#14

Post by yodpao.b »

ขอบคุณมากครับอาจาร์ย
Post Reply