ต้องการใช้เช็คว่ามีค่าซ้ำไหม ก่อนนำข้อมูลไปบันทึก VBA
Posted: Sun Jul 21, 2019 11:09 pm
สวัสดีครับ ผมสร้างฟอร์มให้ user กรอกข้อมูล ข้อมูลแรกที่ต้องกรอกคือ หมายเลข AWB ที่ cell B5
โดยผมใช้สูตรตัดอักษรหน้าหลัง เอาเฉพาะตัวเลขที่ C5 ไปใช้วางในฐานข้อมูล ตอนนี้ที่ได้คือ ต้องกดปุ่ม Save ก่อน
ถึงจะแสดงว่า หมายเลข AWB ซ้ำ แต่ที่ต้องการคือเมื่อ user scan barcode AWB แล้ว ให้แสดงข้อความว่าซ้ำ
ซ้ำเลย และต้อง scan ใหม่ไม่ให้ซ้ำจึงจะกรอรกข้อมูลต่อไปได้ แต่ยังทำไม่ได้ครับ รบกวนขอคำแนะนำหน่อยครับ
Sub Macro1()
'
' Macro1 Macro
Dim iRow As Long
Dim ws As Worksheet
Set ws = Worksheets("SCAN")
'find first empty row in database
iRow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
'check Double
If Range("Double").Value > 0 Then
MsgBox " !!!!!!SCAN AWB «éÓ !!!!!!!!"
Sheets("SCAN").Range("AWB").Select
ElseIf Range("Double").Value = 0 Then
'check complete form
If Trim(Range("CATEGORY").Value) = "" Then
MsgBox "¡ÃسҡÃÍ¡ CATEGORY"
Exit Sub
End If
If Trim(Range("Box").Value) = "" Then
MsgBox "¡ÃسҡÃÍ¡ ¨Ó¹Ç¹¡Åèͧ"
Exit Sub
End If
If Trim(Range("Weigth").Value) = "" Then
MsgBox "¡ÃسҡÃÍ¡ ¹éÓ˹ѡ"
Exit Sub
End If
If Trim(Range("Pallet").Value) = "" Then
MsgBox "¡ÃسҡÃÍ¡Pallet ID"
Exit Sub
End If
'copy the data to the database
ws.Cells(iRow, 1).Value = Sheets("SCAN").Range("No.").Value
ws.Cells(iRow, 2).Value = Sheets("SCAN").Range("AWB_NO").Value
ws.Cells(iRow, 3).Value = Sheets("SCAN").Range("CATEGORY").Value
ws.Cells(iRow, 4).Value = Sheets("SCAN").Range("Remark").Value
ws.Cells(iRow, 5).Value = Sheets("SCAN").Range("Weigth").Value
ws.Cells(iRow, 6).Value = Sheets("SCAN").Range("Date").Value
ws.Cells(iRow, 7).Value = Sheets("SCAN").Range("Box").Value
ws.Cells(iRow, 8).Value = Sheets("SCAN").Range("Statusdata").Value
ws.Cells(iRow, 10).Value = Sheets("SCAN").Range("Pallet").Value
ws.Cells(iRow, 12).Value = Sheets("SCAN").Range("BOX").Value
ws.Cells(iRow, 14).Value = Sheets("SCAN").Range("month").Value
ws.Cells(iRow, 15).Value = Sheets("SCAN").Range("Vendorselect").Value
ws.Cells(iRow, 16).Value = Sheets("SCAN").Range("Day").Value
ws.Cells(iRow, 17).Value = Sheets("SCAN").Range("shopcode").Value
ws.Cells(iRow, 18).Value = Sheets("SCAN").Range("shopname").Value
ws.Cells(iRow, 19).Value = Sheets("SCAN").Range("Time").Value
Sheets("SCAN").Range("AWB").ClearContents
Sheets("SCAN").Range("CATEGORY").ClearContents
Sheets("SCAN").Range("Shopcodeinput").ClearContents
Sheets("SCAN").Range("Weigth").ClearContents
Sheets("SCAN").Range("BOX").ClearContents
Sheets("SCAN").Range("Pallet").ClearContents
Sheets("SCAN").Range("Remark").ClearContents
Sheets("SCAN").Range("AWB").Select
End If
End Sub
โดยผมใช้สูตรตัดอักษรหน้าหลัง เอาเฉพาะตัวเลขที่ C5 ไปใช้วางในฐานข้อมูล ตอนนี้ที่ได้คือ ต้องกดปุ่ม Save ก่อน
ถึงจะแสดงว่า หมายเลข AWB ซ้ำ แต่ที่ต้องการคือเมื่อ user scan barcode AWB แล้ว ให้แสดงข้อความว่าซ้ำ
ซ้ำเลย และต้อง scan ใหม่ไม่ให้ซ้ำจึงจะกรอรกข้อมูลต่อไปได้ แต่ยังทำไม่ได้ครับ รบกวนขอคำแนะนำหน่อยครับ
Sub Macro1()
'
' Macro1 Macro
Dim iRow As Long
Dim ws As Worksheet
Set ws = Worksheets("SCAN")
'find first empty row in database
iRow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
'check Double
If Range("Double").Value > 0 Then
MsgBox " !!!!!!SCAN AWB «éÓ !!!!!!!!"
Sheets("SCAN").Range("AWB").Select
ElseIf Range("Double").Value = 0 Then
'check complete form
If Trim(Range("CATEGORY").Value) = "" Then
MsgBox "¡ÃسҡÃÍ¡ CATEGORY"
Exit Sub
End If
If Trim(Range("Box").Value) = "" Then
MsgBox "¡ÃسҡÃÍ¡ ¨Ó¹Ç¹¡Åèͧ"
Exit Sub
End If
If Trim(Range("Weigth").Value) = "" Then
MsgBox "¡ÃسҡÃÍ¡ ¹éÓ˹ѡ"
Exit Sub
End If
If Trim(Range("Pallet").Value) = "" Then
MsgBox "¡ÃسҡÃÍ¡Pallet ID"
Exit Sub
End If
'copy the data to the database
ws.Cells(iRow, 1).Value = Sheets("SCAN").Range("No.").Value
ws.Cells(iRow, 2).Value = Sheets("SCAN").Range("AWB_NO").Value
ws.Cells(iRow, 3).Value = Sheets("SCAN").Range("CATEGORY").Value
ws.Cells(iRow, 4).Value = Sheets("SCAN").Range("Remark").Value
ws.Cells(iRow, 5).Value = Sheets("SCAN").Range("Weigth").Value
ws.Cells(iRow, 6).Value = Sheets("SCAN").Range("Date").Value
ws.Cells(iRow, 7).Value = Sheets("SCAN").Range("Box").Value
ws.Cells(iRow, 8).Value = Sheets("SCAN").Range("Statusdata").Value
ws.Cells(iRow, 10).Value = Sheets("SCAN").Range("Pallet").Value
ws.Cells(iRow, 12).Value = Sheets("SCAN").Range("BOX").Value
ws.Cells(iRow, 14).Value = Sheets("SCAN").Range("month").Value
ws.Cells(iRow, 15).Value = Sheets("SCAN").Range("Vendorselect").Value
ws.Cells(iRow, 16).Value = Sheets("SCAN").Range("Day").Value
ws.Cells(iRow, 17).Value = Sheets("SCAN").Range("shopcode").Value
ws.Cells(iRow, 18).Value = Sheets("SCAN").Range("shopname").Value
ws.Cells(iRow, 19).Value = Sheets("SCAN").Range("Time").Value
Sheets("SCAN").Range("AWB").ClearContents
Sheets("SCAN").Range("CATEGORY").ClearContents
Sheets("SCAN").Range("Shopcodeinput").ClearContents
Sheets("SCAN").Range("Weigth").ClearContents
Sheets("SCAN").Range("BOX").ClearContents
Sheets("SCAN").Range("Pallet").ClearContents
Sheets("SCAN").Range("Remark").ClearContents
Sheets("SCAN").Range("AWB").Select
End If
End Sub