Page 1 of 1
การ del ข้อมูลใน Listbox ติดบัค ครับ
Posted: Tue May 19, 2020 1:50 pm
by yodpao.b
การ del ข้อมูลใน Listbox ติดบัค ครับ
Code: Select all
Private Sub cmdDelete_Click()
Dim iRow As Long
If Selected_List = 0 Then
MsgBox "No row is selected.", vbOKOnly + vbInformation, "Delete"
Exit Sub
End If
Dim i As VbMsgBoxResult
i = MsgBox("Do you want to delete the selected record?", vbYesNo + vbQuestion, "Confirmation")
If i = vbNo Then Exit Sub
iRow = Application.WorksheetFunction.Match(Me.ListBox2.List(Me.ListBox2.ListIndex, 0), _
ThisWorkbook.Sheets("Addrequisition1").Range("A:A"), 0)
ThisWorkbook.Sheets("Addrequisition1").Rows(iRow).Delete
'Call ResetReturntool3
MsgBox "Selected record has been deleted.", vbOKOnly + vbInformation, "Deleted"
End Sub
ติดบัคที่บรรทัด นี้ครับ
iRow = Application.WorksheetFunction.Match(Me.ListBox2.List(Me.ListBox2.ListIndex, 0), _
ThisWorkbook.Sheets("Addrequisition1").Range("A:A"), 0)
code Function ที่เกียวข้องด้วยด้านล่างครับ
Code: Select all
Function Selected_List() As Long
Dim i As Long
Selected_List = 0
For i = 0 To frmReturntool.ListBox2.ListCount - 1
If frmReturntool.ListBox2.Selected(i) = True Then
Selected_List = i + 1
Exit For
End If
Next i
End Function
อาจารย์พอดูออกไหมครับว่าอะไรผิด
Re: การ del ข้อมูลใน Listbox ติดบัค ครับ
Posted: Tue May 19, 2020 2:25 pm
by yodpao.b
ขั้นตอนการทำงาน
0.JPG
1.JPG
2.JPG
ความต้องการ ลบบรรทัดใน Listbox
จากการทำ
ข้อมูลใน Listbox นั้นมาจากการเชื่อมโยงไปยัง Sheet ชื่อ Addrequisition1
ในการสั่งลบ
code สั่งลบใน Sheet ชื่อ Addrequisition1 แล้วจึงแสดงใน Listbox
จะแนบไฟล์ในโพสต์ต่อไป
Re: การ del ข้อมูลใน Listbox ติดบัค ครับ
Posted: Tue May 19, 2020 2:28 pm
by yodpao.b
เรียนอาจารย์ครับ อาจารย์เคยบอกว่าให้ลบที่ไม่เกี่ยวข้องกับคำถามออก
แต่ไฟล์นี้ผมกับไม่ปฎิบัติตาม ข้อให้อาจารย์ อนุโลมหน่อยครับ
เพราะขนาดที่ผมทำ ฟอร์มแรกเสร็จ ทำงานได้ครับ ร่วมถึงปุ่ม del
แต่พอมาทำ ฟอร์ม 2 ทำไปทำมา ฟอร์มแรกกับใช้ไม่ได้
ก็เลยไม่กล้าลบ code อื่นเพราะกลัวว่า ฟอร์ม 2 จะทำงานไม่ได้อีก
ขอให้อาจารย์เข้าใจด้วยครับ
ขอขอบคุณมานะที่นี้
ไฟล์แนบ
Re: การ del ข้อมูลใน Listbox ติดบัค ครับ
Posted: Tue May 19, 2020 8:15 pm
by snasui

จาก Code
iRow = Application.WorksheetFunction.Match(Me.ListBox2.List(Me.ListBox2.ListIndex, 0), _
ThisWorkbook.Sheets("Addrequisition1").Range("A:A"), 0)
ค่าที่ได้จาก
Me.ListBox2.List(Me.ListBox2.ListIndex, 0) คือคำว่า "ใบยืม"
หมายถึงให้ไปค้นหาคำว่า "ใบยืม" ในชีต Addrequisition1 คอลัมน์ A และเนื่องจากไม่มีค่านี้จึงหาไม่พบ ส่งผลให้เกิด Debug
คำว่า "ใบยืม" มีอยู่ในคอลัมน์ B จึงควรเปลี่ยน Code ใหม่เป็น
iRow = Application.WorksheetFunction.Match(Me.ListBox2.List(Me.ListBox2.ListIndex, 0), _
ThisWorkbook.Sheets("Addrequisition1").Range("b:b"), 0) ครับ
Re: การ del ข้อมูลใน Listbox ติดบัค ครับ
Posted: Tue May 19, 2020 11:45 pm
by yodpao.b
แก้ตามที่อาจารย์ได้บอกแล้วครับ
ขอบคุณมากครับ
Re: การ del ข้อมูลใน Listbox ติดบัค ครับ
Posted: Sun May 24, 2020 3:39 pm
by yodpao.b
พอมาดูปุ่ม del อีกรอบพบว่าลบผิดบรรทัดครับ
ขั้นตอนทำงาน
0.JPG
คลิกปุ่มนี้
1.JPG
add 4 ตัวอย่างดังรูปด้านล่าง
4.JPG
ให้เลือกบรรทัดสุดท้าย สั่งลบ
หลังจากลบจะสังเกตุเห็นว่า บรรทัดล่างยังอยู่ แต่บรรทัดบนหายไปครับ
code ที่ใช้งาน
ที่อยู่ code อยู่ ใน ฟอร์ม frmBorrow
Code: Select all
Private Sub cmdDelete_Click()
Dim iRow As Long
If Selected_ListfrmBo = 0 Then
MsgBox "·èÒ¹äÁèä´éàÅ×Í¡ÃÒ¡ÒÃã¹ List box.", vbOKOnly + vbInformation, "Delete"
Exit Sub
End If
Dim i As VbMsgBoxResult
i = MsgBox("·èÒ¹µéͧ¡Òà ź ÃÒ¡Ò÷Õè·èÒ¹àÅ×Í¡ ãªèËÃ×ÍäÁè ?", vbYesNo + vbQuestion, "Confirmation")
If i = vbNo Then Exit Sub
iRow = Application.WorksheetFunction.Match(Me.ListBox2.List(Me.ListBox2.ListIndex, 0), _
ThisWorkbook.Sheets("Addrequisition1").Range("B:B"), 0)
ThisWorkbook.Sheets("Addrequisition1").Rows(iRow).Delete
Call ResetFormBorrow3
Me.ListBox2.ListIndex = -1 'äÁèâªÇìᶺÊÕ¹éÓà§Ô¹
MsgBox "·Ó¡Òà ź record ·Õè·èÒ¹àÅ×Í¡áÅéÇ", vbOKOnly + vbInformation, "Deleted"
txtADDNumber.Text = ListBox2.ListCount
End Sub
code ที่น่าจะเกี่ยวข้อง คือ Function Selected_ListfrmBo() As Long
อยู่ใน Module1_Function
Code: Select all
Function Selected_ListfrmBo() As Long
Dim i As Long
Selected_ListfrmBo = 0
For i = 0 To frmBorrow.ListBox2.ListCount - 1
If frmBorrow.ListBox2.Selected(i) = True Then
Selected_ListfrmBo = i + 1
Exit For
End If
Next i
End Function
มีต่อ
Re: การ del ข้อมูลใน Listbox ติดบัค ครับ
Posted: Sun May 24, 2020 3:42 pm
by yodpao.b
ไฟล์แนบ
Re: การ del ข้อมูลใน Listbox ติดบัค ครับ
Posted: Mon May 25, 2020 1:33 am
by yodpao.b
ได้แล้วครับ ไป copy ผิดขั้นตอนไม่นึกว่าจะเป็นปัญหา
ใน ยูทูป เขาแบ่งสอน 4 สเตป ผมดันไปเอา สเตป 3 มาใช้
code ดั้งเดิม ในยูทูป
Code: Select all
Private Sub cmdDelete_Click()
If Selected_List = 0 Then
MsgBox "No row is selected.", vbOKOnly + vbInformation, "Delete"
Exit Sub
End If
Dim i As VbMsgBoxResult
i = MsgBox("Do you want to delete the selected record?", vbYesNo + vbQuestion, "Confirmation")
If i = vbNo Then Exit Sub
ThisWorkbook.Sheets("Database").Rows(Selected_List + 1).Delete
Call Reset
MsgBox "Selected record has been deleted.", vbOKOnly + vbInformation, "Deleted"
End Sub
ผมปรับมาใช้ของผมดังนี้
Code: Select all
Private Sub cmdDelete_Click()
Dim iRow As Long
If Selected_ListfrmBo = 0 Then
MsgBox "ท่านไม่ได้เลือกรายการใน List box.", vbOKOnly + vbInformation, "Delete"
Exit Sub
End If
Dim i As VbMsgBoxResult
i = MsgBox("ท่านต้องการ ลบ รายการที่ท่านเลือก ใช่หรือไม่ ?", vbYesNo + vbQuestion, "Confirmation")
If i = vbNo Then Exit Sub
ThisWorkbook.Sheets("Addrequisition1").Rows(Selected_ListfrmBo + 1).Delete
' iRow = Application.WorksheetFunction.Match(Me.ListBox2.List(Me.ListBox2.ListIndex, 0), _
' ThisWorkbook.Sheets("Addrequisition1").Range("B:B"), 0)
'
' ThisWorkbook.Sheets("Addrequisition1").Rows(iRow).Delete
Call ResetFormBorrow3
Me.ListBox2.ListIndex = -1 'ไม่โชว์แถบสีน้ำเงิน
MsgBox "ทำการ ลบ record ที่ท่านเลือกแล้ว", vbOKOnly + vbInformation, "Deleted"
txtADDNumber.Text = ListBox2.ListCount
End Sub
เรียนอาจารย์ครับ
' iRow = Application.WorksheetFunction.Match(Me.ListBox2.List(Me.ListBox2.ListIndex, 0), _
' ThisWorkbook.Sheets("Addrequisition1").Range("B:B"), 0)
'
' ThisWorkbook.Sheets("Addrequisition1").Rows(iRow).Delete
ที่อาจารย์บอกความหมายไว้ก่อนหน้านี้ ดูเหมือนจะเกี่ยวกับการ del คือ
เมื่อลบข้อมูลใน listbox แล้วให้ลบบรรทัดใน sheet ที่เกียวข้องกัน listbox
code ด้านบน น่าจะหมายถึงแบบนี้
คำถาม
สรุปว่าถ้าไม่มี code 3 บรรทัดบน นี้ การ เกี่ยวกับการ add หรือ del ไหมครับ
ขอบคุณมากครับ
Re: การ del ข้อมูลใน Listbox ติดบัค ครับ
Posted: Mon May 25, 2020 9:52 pm
by snasui
yodpao.b wrote: Mon May 25, 2020 1:33 am
สรุปว่าถ้าไม่มี code 3 บรรทัดบน นี้ การ เกี่ยวกับการ add หรือ del ไหมครับ
ขอบคุณมากครับ

เมื่อมันเอาไว้ใช้ลบค่าใน Worksheet ถ้าไม่มีก็ลบไม่ได้ มันเป็นเหตุเป็นผลในตัวของมันอยู่แล้วครับ
