Page 1 of 1

ต้องการใช้เช็คว่ามีค่าซ้ำไหม ก่อนนำข้อมูลไปบันทึก VBA

Posted: Sun Jul 21, 2019 11:09 pm
by ch.jew10
สวัสดีครับ ผมสร้างฟอร์มให้ 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

Re: ต้องการใช้เช็คว่ามีค่าซ้ำไหม ก่อนนำข้อมูลไปบันทึก VBA

Posted: Mon Jul 22, 2019 12:57 pm
by puriwutpokin
ครั้งหน้าโพสโค้ดในเป็นโค้ดแบบผมนี้ด้วยครับ
ตัวอย่างโค้ดครับ นำไปไว้ในชีท SCAN

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("b5")) Is Nothing Then
If Range("Double").Value > 0 Then
MsgBox "  !!!!!!SCAN AWB «éÓ !!!!!!!!"
End If
End If
End Sub
ที่ Module1 ปรับเป็น

Code: Select all

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

Re: ต้องการใช้เช็คว่ามีค่าซ้ำไหม ก่อนนำข้อมูลไปบันทึก VBA

Posted: Wed Jul 24, 2019 9:54 pm
by ch.jew10
ขอบคุณมากครับ ได้ตามที่ต้องการแล้วครับ