Page 2 of 5

Re: สอบถามครับ การกำหนดค่าหลายตัวแปร

Posted: Sat Aug 18, 2018 1:08 pm
by Leng
ได้แล้วครับขอบพระคุณมากครับ

Re: สอบถามครับ การกำหนดค่าหลายตัวแปร

Posted: Mon Sep 03, 2018 11:18 am
by Leng
อาจารย์ครับผมอยากสอบถามเพิ่มเติมครับคือผมอยากกำหนดว่า
กล่องเบอร์ 1 มี 10 ตัว (โดยการดึงข้มูลจาก DataX)
โดยบาร์โค๊ด
8 0601 68019 00 1 ต้อง มี 2 ตัว
8 0601 71019 00 5 ต้อง มี 2 ตัว
8 0601 69019 00 0 ต้อง มี 2 ตัว
8 0601 67019 00 2 ต้อง มี 2 ตัว
8 0601 70019 00 6 ต้อง มี 2 ตัว
หากบาร์โค๊ดไหนเกินข้อมูลที่กำหนดไว้ ให้มีการแจ้งเตือนครับ

Code: Select all

Private Sub TextBox5_AfterUpdate()
With Workbooks("DataX.xlsx").Worksheets("Sheet1")
Set rngVlp = .Range("a2", .Range("d" & .Rows.Count).End(xlUp))
End With

With ThisWorkbook.Worksheets("IN")
emptyrow = .Range("a" & .Rows.Count).End(xlUp).Offset(1, 0).Row
End With

If Me.TextBox5.Text = "10021" Then
    Worksheets("IN").Cells(emptyrow - 1, 1).EntireRow.Delete
     Me.TextBox11.Text = Application.WorksheetFunction.Sum(Range("H3:H1048576"))
     If MsgBox("Do you want to delete the data? ", vbYesNo + vbQuestion + vbDefaultButton2, " Close and Save ") = 6 Then
     '....
     End If
End If

If Me.TextBox5.Text = "" Then Exit Sub
If WorksheetFunction.CountIfs(Workbooks("DataX.xlsx").Worksheets("Sheet1").Range("A:A"), Me.TextBox5.Value, _
Workbooks("DataX.xlsx").Worksheets("Sheet1").Range("E:E"), Me.TextBox2.Value) = 0 Then
Call Sample2
'Me.TextBox5.Value = ""
MsgBox "Please Check Information"
    Exit Sub

End If

    Me.TextBox6.Text = Application.VLookup(CDbl(Me.TextBox5.Text), rngVlp, 2, 0)
    Me.TextBox7.Text = Application.VLookup(CDbl(Me.TextBox5.Text), rngVlp, 3, 0)
    Me.TextBox8.Text = Application.VLookup(CDbl(Me.TextBox5.Text), rngVlp, 4, 0)
With ThisWorkbook.Worksheets("IN")
    emptyrow = .Range("a" & .Rows.Count).End(xlUp).Offset(1, 0).Row
   End With
    With Worksheets("IN")
        .Cells(emptyrow, 1).Value = TextBox1.Value
        .Cells(emptyrow, 2).Value = TextBox2.Value
        .Cells(emptyrow, 3).Value = ComboBox1.Value
        .Cells(emptyrow, 4).Value = TextBox5.Value
        .Cells(emptyrow, 5).Value = TextBox6.Value
        .Cells(emptyrow, 6).Value = TextBox7.Value
        .Cells(emptyrow, 7).Value = TextBox8.Value
        .Cells(emptyrow, 8).Value = TextBox9.Value
    End With
    Me.TextBox11.Text = Application.WorksheetFunction.Sum(Range("H3:H1048576"))
    
Dim total As Long
'Me.TextBox5.Value = ""
total = WorksheetFunction.Sum(Range("H3:H1048576"))
Range("A1").Value = total
Range("C1") = TextBox10.Value
If Range("A1").Value > Range("C1") Then
Call Sample2
MsgBox "TOTAL NUMBER ERROR"
End If

        Dim lsRow As Long
    With Sheets("IN")
        lsRow = .Range("a" & .Rows.Count).End(xlUp).Row
    End With
     ListBox1.RowSource = Sheets("IN").Range("A3:H" & lsRow).Address(external:=True)
    With ListBox1
        .ListIndex = .ListCount - 1
        .Selected(.ListCount - 1) = True
    End With
End Sub

Private Sub TextBox5_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If TextBox5.Value <> "" Then
        Cancel = True
        TextBox5.Text = ""
    End If
End Sub


Re: สอบถามครับ การกำหนดค่าหลายตัวแปร

Posted: Mon Sep 03, 2018 7:35 pm
by snasui
Leng wrote: Mon Sep 03, 2018 11:18 am โดยบาร์โค๊ด
8 0601 68019 00 1 ต้อง มี 2 ตัว
8 0601 71019 00 5 ต้อง มี 2 ตัว
8 0601 69019 00 0 ต้อง มี 2 ตัว
8 0601 67019 00 2 ต้อง มี 2 ตัว
8 0601 70019 00 6 ต้อง มี 2 ตัว
:D บรรทัดใดใน Code ที่เขียนเพื่อตรวจสอบเงื่อนไขด้านบนช่วยยกมาด้วยจะได้ตอบต่อไปจากนั้นครับ

Re: สอบถามครับ การกำหนดค่าหลายตัวแปร

Posted: Mon Sep 03, 2018 7:47 pm
by Leng
อาจารย์ครับผมไม่รู้จะเขียนยังไงอาจารย์มีเว็บหรืออะไรแนะนำไหมครับ

Code: Select all

Dim total As Long
'Me.TextBox5.Value = ""
total = WorksheetFunction.Sum(Range("H3:H1048576"))
Range("A1").Value = total
Range("C1") = TextBox10.Value
If Range("A1").Value > Range("C1") Then
Call Sample2
MsgBox "TOTAL NUMBER ERROR"
End If

Re: สอบถามครับ การกำหนดค่าหลายตัวแปร

Posted: Mon Sep 03, 2018 8:07 pm
by snasui
:D ต้องการนับจากชีตไหนครับ :?:

Re: สอบถามครับ การกำหนดค่าหลายตัวแปร

Posted: Mon Sep 03, 2018 8:16 pm
by Leng
ชีทsheet1จากไฟล์dataxครับ

Re: สอบถามครับ การกำหนดค่าหลายตัวแปร

Posted: Mon Sep 03, 2018 8:28 pm
by snasui
:D ตัวอย่าง Code ครับ

Code: Select all

Private Sub TextBox5_AfterUpdate()
    Dim rngCmpr As Range
    Dim rngBrcd As Range
    With Workbooks("DataX.xlsx").Worksheets("Sheet1")
        Set rngvlp = .Range("a2", .Range("d" & .Rows.Count).End(xlUp))
        Set rngBrcd = rngvlp.Resize(, 1)
        Set rngCmpr = .Range("g2", .Range("g" & .Rows.Count).End(xlUp))
    End With
    With Application
        If .CountIf(rngCmpr, Me.TextBox5.Text) > 0 And _
            .CountIf(rngBrcd, Me.TextBox5.Text) > 2 Then
            MsgBox "<Your message>", vbInformation
            Exit Sub
        End If
    End With
'Other code

Re: สอบถามครับ การกำหนดค่าหลายตัวแปร

Posted: Tue Sep 04, 2018 8:44 am
by Leng
อาจารย์ครับผมได้ลองนำโค๊ดอาจารย์มาใส่แล้วแต่การทำงานยังคงเหมือนเดิมครับ
ยังไม่สามรถทำให้โค๊ดนึง scan ได้ 2 ครั้งครับ

การทำงานของระบบตอนนี้ครับ
การดึงข้อมูลจาก Datax มาใช้งานครับ
โดยผมสร้าง Cloum A:H ไว้ครับ
โดย A:F จะเป็น Barcode/Stlye/Size/Colors/Box/Total
และ G:H จะเป็น Box/Total
ไฟล์ Test โดยผมกำหนดว่าถ้าหาก Barcode ใน Cloum A ในไฟล์ Datax ไม่ตรงกับ Box ใน Cloum E ในไฟล์ Datax จะไม่สามารถแสกนได้

แต่สิ่งที่ต้องการครับ
ผมต้องการกำหนดจำนวนการ scan ครับ โดยกำหนดว่า
ไฟล์ Test ถ้าหาก Barcode ใน Cloum A ในไฟล์ Datax ตรงกับ Box ใน Cloum E ถึงจะ scan ได้
และ ผลรวม scan ต่อ 1 Barcode ต้องไม่เลยข้อมูลในไฟล์ Datax ใน Cloum F ที่กำหนดเท่านั้น ครับ

Re: สอบถามครับ การกำหนดค่าหลายตัวแปร

Posted: Tue Sep 04, 2018 6:33 pm
by snasui
Leng wrote: Tue Sep 04, 2018 8:44 am ไฟล์ Test ถ้าหาก Barcode ใน Cloum A ในไฟล์ Datax ตรงกับ Box ใน Cloum E ถึงจะ scan ได้
:D Barcode ในคอลัมน์ A กับ Box เป็นคนละรหัสจะไปเปรียบเทียบว่าตรงกันแบบธรรมดาคงไม่ได้ กรุณาอธิบายบรรทัดนี้มาใหม่ว่าตรงกันแบบไหน อย่างไร นำอะไรเทียบกับอะไรกันแน่ครับ

Re: สอบถามครับ การกำหนดค่าหลายตัวแปร

Posted: Tue Sep 04, 2018 6:49 pm
by Leng
สิ่งที่ต้องการตอนนี้คือ ให้ Barcode สามารถ scan ได้ โดยผลรวมต้องไม่เกิน ข้อมูลในไฟล์ datax Cloum f ครับ

Re: สอบถามครับ การกำหนดค่าหลายตัวแปร

Posted: Tue Sep 04, 2018 6:53 pm
by snasui
:D กรุณาตอบที่ผมถามในโพสต์ #29 หากอธิบายมาไม่ถูกต้องหรือคลาดเคลื่อนให้แจ้งมาใหม่ครับ

ส่วนโพสต์ #30 ผมตอบไปแล้วตามโพสต์ที่ #27 ครับ

Re: สอบถามครับ การกำหนดค่าหลายตัวแปร

Posted: Tue Sep 04, 2018 7:06 pm
by Leng
คือตอนนี้ผมกำหนดให้barcode ต้องตรงกับเบอร์กล่องที่กำหนดถึงจะscanขึ้นครับถ้าไม่ใส่เบอร์กล่องก็ไม่สามารถscanได้ครับหรือbarcode ไม่ตรงกับเบอร์กล่องก็ไม่สามารถscanได้เหมือนกันครับ
แต่ที่อาจารย์ตอบผม#27ผมได้ลองมานำมาใช้แล้วครับแต่ไม่สามารถทำได้ผมเลยตอบอาจารย์ในโพส#30ครับรบกวนอาจารย์ช่วยหน่อยครับ

Re: สอบถามครับ การกำหนดค่าหลายตัวแปร

Posted: Tue Sep 04, 2018 7:13 pm
by snasui
:D Barcode กับ เบอร์กล่องไม่สามารถตรงกันได้ เพราะเป็นคนละรหัสครับ

Re: สอบถามครับ การกำหนดค่าหลายตัวแปร

Posted: Tue Sep 04, 2018 8:05 pm
by Leng
ผมทำในdatax ครับโดยที่ว่าถ้า

บาร์โค๊ด 123 ไม่มีข้อมูลในกล่อง1ก็จะไม่สามารถscanได้ครับ แต่ผมไม่รู้ว่าผมอธิบายถูกไหมต้องขอโทษด้วยครับ
ผมอยากให้อาจารย์ช่วยปรับโค๊ดใน #30 ให้ผมหน่อยครับรบกวนอาจารย์ช่วยหน่อยครับ :flw:

Re: สอบถามครับ การกำหนดค่าหลายตัวแปร

Posted: Tue Sep 04, 2018 8:31 pm
by snasui
:D การจะปรับแก้ได้จะต้องแจ้งมาให้ชัดเจนว่าผิดพลาดอย่างไร นำข้อมูลตัวอย่างมาเพียงไม่เกิน 10 บรรทัดเฉพาะเงื่อนที่ต้องการทดสอบเท่านั้น จากนั้น Debug ดูว่าผิดพลาดตรงไหน

ผมเขียน Code นั้นให้ตรงกับเงื่อนไขที่ต้องการตรวจสอบแล้วไม่จำเป็นต้องปรับเป็นอย่างอื่นเพียงแต่เอาไปวางแล้วทดสอบ เบื้องต้นทำเท่านี้แล้วแจ้งมาว่าผิดพลาดตรงไหนครับ

ควรจะทำความเข้าใจ Code นั้นว่ามีความหมายว่าอย่างไร จะได้ปรับเองได้บ้าง หากไม่เข้าใจจะปรับเองไม่ได้เลยครับ

Re: สอบถามครับ การกำหนดค่าหลายตัวแปร

Posted: Tue Sep 04, 2018 8:44 pm
by Leng
ผมได้ลองนำโค๊ดอาจารย์ไปทำแล้วครับแต่ติดปัญหาคือเวลาscanไม่สามารถscanได้ครับ

Re: สอบถามครับ การกำหนดค่าหลายตัวแปร

Posted: Tue Sep 04, 2018 9:03 pm
by snasui
:D ทำข้อมูลแล้วแนบไฟล์มาใหม่ ทบทวนโพสต์ #35 แล้วทำมาให้ครบครับ

Re: สอบถามครับ การกำหนดค่าหลายตัวแปร

Posted: Wed Sep 05, 2018 10:27 am
by Leng
อาจารย์ครับจากที่ผมได้ลองปรับโค๊ดแล้วครับคือผลที่ได้คือ เวลา scan แล้ว ขึ้น msg "Your message" แล้ว ก็ไม่สามารถ scan ครับ จากที่อาจารย์ให้โค๊ดมา

Code: Select all

 If .CountIf(rngCmpr, Me.TextBox5.Text) > 0 And _
.CountIf(rngBrcd, Me.TextBox5.Text) > 2 Then
ผมแปลเองได้ว่า ผลรวมของ rngCmpr ต้องมีค่ามากกว่า 0 และผลรวมของ rngBrcd, ต้องมีค่าไม่เกิน 2 หากมีค่าเกิน 2 จะขึ้น
msg "Your message" (ผมไม่ในใจว่าผมแปลโค๊ดถูกไหมรบกวนอาจารย์ช่วยดูโค๊ดให้หน่อยครับ :flw: :flw:)

Re: สอบถามครับ การกำหนดค่าหลายตัวแปร

Posted: Wed Sep 05, 2018 7:26 pm
by snasui
:D ยังเข้าใจไม่ถูกต้องครับ

Code ด้านบนแปลว่าหากพบค่าใน TextBox5 ในพื้นที่ rngCmpr เป็นจำนวนมากกว่า 0 ค่า และพบค่าใน TextBox5 ในพื้นที่ rngBrcd จำนวนมากกว่า 2 ค่าแล้วให้แสดงคำสั่งเดือน

เงือนไขคือด้านล่างซึ่งอยู่ในคอลัมน์ G ของไฟล์ DataX.xlsx ซึ่งผมได้กำหนดให้เป็นตัวแปร rngCmpr ส่วนตัวแปร rngBrcd คือข้อมูล Barcode ในคอลัมน์ A ของไฟล์ DataX.xlsx

สิ่งที่ต้องการตรวจสอบคือตามที่โพสต์มา
Leng wrote: Mon Sep 03, 2018 11:18 am กล่องเบอร์ 1 มี 10 ตัว (โดยการดึงข้มูลจาก DataX)
โดยบาร์โค๊ด
8 0601 68019 00 1 ต้อง มี 2 ตัว
8 0601 71019 00 5 ต้อง มี 2 ตัว
8 0601 69019 00 0 ต้อง มี 2 ตัว
8 0601 67019 00 2 ต้อง มี 2 ตัว
8 0601 70019 00 6 ต้อง มี 2 ตัว
หากบาร์โค๊ดไหนเกินข้อมูลที่กำหนดไว้ ให้มีการแจ้งเตือนครับ
กรณีข้อมูลเปลี่ยนแปลงไปจากที่เคยส่งมาถามจะต้องปรับค่าตัวแปรใน Code ให้ตรงกับตำแหน่งข้อมูลจริง ในเครื่องผมสามารถตรวจสอบข้อมูลได้ตามปกติและหากไม่ตรงกับเงื่อนไขที่ต้องการ ให้อธิบายมาใหม่ให้ละเอียด

กรุณายกเลิกการซ่อนแถบชีตและหัวคอลัมน์ของไฟล์ตัวอย่างเสมอจะได้สะดวกในการเข้าถึงข้อมูล นอกจากนี้ ข้อมูลตัวอย่าง ควรจะมีแค่เพียงไม่กี่รายการ นั่นคือไฟล์ DataX.xlsx ควรจะมีแค่ข้อมูลที่ต้องการทดสอบเท่านั้นจะได้สะดวกในการตรวจสอบซึ่งผมได้แจ้งไปหลายครั้งแล้วครับ

Re: สอบถามครับ การกำหนดค่าหลายตัวแปร

Posted: Thu Sep 06, 2018 8:59 am
by Leng
ผมได้ลองแก้แล้วครับแต่ก็ยังทำไม่ได้รบกวนอาจารย์ช่วยหน่อยครับ :flw: :flw:

Code: Select all

    Dim rngCmpr As Range
    Dim rngBrcd As Range
    With Workbooks("DataX.xlsx").Worksheets("Sheet1")
        Set rngvlp = .Range("a2", .Range("d" & .Rows.Count).End(xlUp))
        Set rngBrcd = rngvlp.Resize(, 1)
        Set rngCmpr = .Range("f2", .Range("f" & .Rows.Count).End(xlUp))
    End With
    With Application
        If .CountIf(rngCmpr, Me.TextBox5.Text) < 0 And _
            .CountIf(rngBrcd, Me.TextBox5.Text) < 2 Then
            MsgBox "<Your message>", vbInformation
            Exit Sub
        End If
    End With
'Other code