Page 1 of 1

สอบถามเกี่ยวกับการลบข้อมูลซึ่งอยู่คนละ Sheet

Posted: Mon Feb 20, 2012 12:05 am
by niwat2811
สอบถามเกี่ยวกับการลบข้อมูลซึ่งอยู่คนละ Sheet โดยเลือกข้อมูลจาก ComboBox กดปุ่ม Delete แล้วให้ไปลบข้อมูลที่อยู่อีก Sheet โดยลบทั้งแถวเลยครับ

Re: สอบถามเกี่ยวกับการลบข้อมูลซึ่งอยู่คนละ Sheet

Posted: Mon Feb 20, 2012 12:25 am
by snasui
:D ลองดู Code ตามด้านล่างครับ

Code: Select all

Private Sub CommandButton1_Click()
    On Error Resume Next
    With Sheets("Database")
        .Range("A" & Application.Match(CDbl(ComboBox1.Text), _
            .Range("A:A"), 0)).EntireRow.Delete
    End With
End Sub

Re: สอบถามเกี่ยวกับการลบข้อมูลซึ่งอยู่คนละ Sheet

Posted: Mon Feb 20, 2012 7:30 am
by niwat2811
ครับ ขอบคุณท่านอาจารย์มากครับ Code ใช้ได้ผลเป็นอย่างดีเลยครับ รบกวนสอบถามท่านอาจารย์ด้วยว่า มีข้อสังเกตุตรงไหนหรือต้องดูอย่างไรหรือเมื่อไรว่าเราควรจะใช้ CDbl หรือ CLng ตอนแรกผมลองใช้ CLng แล้วมันขึ้น Error
.Range("A" & Application.Match(CLng(ComboBox1.Text), _
.Range("A:A"), 0)).EntireRow.Delete
ครับ

Re: สอบถามเกี่ยวกับการลบข้อมูลซึ่งอยู่คนละ Sheet

Posted: Mon Feb 20, 2012 9:35 am
by snasui
:D สามารถดู Data Type ได้จากที่นี่ครับ :arrow: Data type summary ซึ่งสามารถดูได้ว่าข้อมูลเราอยู่ในช่วงไหนถึงไหนและควรประกาศตัวแปรเป็นอะไร

Re: สอบถามเกี่ยวกับการลบข้อมูลซึ่งอยู่คนละ Sheet

Posted: Mon Feb 20, 2012 9:53 am
by niwat2811
ตัวอย่างเดิมครับท่านอาจารย์ ผมได้ลองนำ Code ของท่านอาจารย์มาลองแก้ไข คือต้องการให้เลือกค ComboBox กดปุ่ม Delete Column แล้วไปลบข้อมูลที่ Sheet Report ครับ แต่ว่า Code ไม่ทำงานรบกวนท่านอาจารย์ช่วยชี้แนะด้วยครับ Code อยู่ใน Module1 ครับ

Re: สอบถามเกี่ยวกับการลบข้อมูลซึ่งอยู่คนละ Sheet

Posted: Mon Feb 20, 2012 10:51 am
by snasui
:D ลองดูตัวอย่างการปรับ Code เป็นตามด้านล่าง สำหรับ Code ที่แนบมานั้นอ้างชื่อ Sheet เป็น Database ซึ่งไม่ถูกต้องครับ

Code: Select all

Sub DeleteColumn()
    Dim cb As Object
    Set cb = Sheets("Find").OLEObjects("ComboBox1")
    With Sheets("Report")
        .Range("I" & Application.Match(CDbl(cb.Object.Value), _
        .Range("I:I"), 0)).Offset(0, -8).Resize(, 11) _
        .EntireColumn.Delete
    End With
End Sub

Re: สอบถามเกี่ยวกับการลบข้อมูลซึ่งอยู่คนละ Sheet

Posted: Mon Feb 20, 2012 11:12 am
by niwat2811
ครับ ก่อนอื่นต้องขออภัยท่านอาจารย์ด้วยครับคือผมอาจจะสื่อข้อความหรือคำถามไม่เข้าใจ คือว่า ต้องการให้เลือกเลขที่บัญชีใน ComboBox ที่ Sheet "Find" แล้วให้ไปลบข้อมูลที่ Sheet "Report" ครับ เช่น ข้อมูลใน ComboBox ที่เลือกตรงกับ I8 ใน Sheet "Report" ก็ให้ลบ Column "A:K" แต่ถ้าข้อมูลที่เลือกใน ComboBox ตรงกับ T8 ใน Sheet"Report" ก็ให้ลบ Column "L:V" น่ะครับ คือว่าหน้ารายงานจะเรียงไปทางขวาประมาณ 300 หน้าครับ

Re: สอบถามเกี่ยวกับการลบข้อมูลซึ่งอยู่คนละ Sheet

Posted: Mon Feb 20, 2012 11:24 am
by snasui
:D ลองปรับ Code เป็นด้านล่างครับ

Code: Select all

Sub DeleteColumn()
    Dim cb As Object
    On Error Resume Next
    Set cb = Sheets("Find").OLEObjects("ComboBox1")
    With Sheets("Report")
        .Range("A8").Offset(0, Application.Match(CDbl(cb.Object.Value), _
        .Range("8:8"), 0) - 1).Offset(0, -8).Resize(, 11) _
        .EntireColumn.Delete
    End With
End Sub

Re: สอบถามเกี่ยวกับการลบข้อมูลซึ่งอยู่คนละ Sheet

Posted: Mon Feb 20, 2012 11:38 am
by niwat2811
ครับผมตรงตามความต้องการแล้วครับท่านอาจารย์ แต่ติดปัญหาอีกนิดนึงคือถ้าเราเลือกเลขที่ บัญชี 800000000001-800000000012 ข้อมูลใน ComboBox ถูกต้อง แต่ถ้าเราเลือกเลขที่บัญชีตั้งแต่ 800000000013 เลขที่บัญชีใน ComboBox จะเป็น 800000000013.333 ถ้าเลือกเลขที่บัญชี 800000000014 เลขที่บัญชีใน ComboBox จะเปลี่ยนเป็น 800000000014.372 ทำให้ไม่สามารถลบข้อมูลได้ไม่ทราบว่าเป็นเพราะเหตุใดครับ

Re: สอบถามเกี่ยวกับการลบข้อมูลซึ่งอยู่คนละ Sheet

Posted: Mon Feb 20, 2012 11:48 am
by snasui
:lol: ตัวเลขใน ComboBox มาจากไหนก็ให้ตรวจสอบต้นแหล่งครับว่าเหตุใดจึงมีจุดทศนิยม ถ้าไม่ใช้ก็ให้ลบออกไปครับ

Re: สอบถามเกี่ยวกับการลบข้อมูลซึ่งอยู่คนละ Sheet

Posted: Mon Feb 20, 2012 11:58 am
by niwat2811
ครับผมแก้ไขได้เรียบร้อยแล้วตามคำแนะนำ ขอบพระคุณท่านอาจารย์มากเลยครับ สามารถนำไปประยุกต์ใช้ในงานได้เป็นอย่างดี