Page 1 of 5
สอบถามครับ การกำหนดค่าหลายตัวแปร
Posted: Mon Aug 06, 2018 5:15 pm
by Leng
ผมไม่แน่ใจว่าผมตั้งชื่อกระทู้ถูกไหม (ต้องขอโทษด้วยนะครับ)
ผมต้องการกำหนดค่าครับโดยที่ ให้ Barcode 123 สามารถ ใช้ได้ เฉพาะ Box 1-2 เท่านั้น ถึงจะขึ้น stlye และ run ข้อมูลเรื่อยๆ หากจำนวน box ไม่ตรงกับ barcode ก็ไม่สามารถทำได้
Re: สอบถามครับ การกำหนดค่าหลายตัวแปร
Posted: Mon Aug 06, 2018 8:38 pm
by snasui

ต้องการเป็นสูตรหรือว่าเป็น Code หรือลักษณะใดกรุณาแจ้งรายละเอียดมาด้วยครับ
ในเบื้องต้นคำตอบคือ สามารถทำได้ครับ
Re: สอบถามครับ การกำหนดค่าหลายตัวแปร
Posted: Tue Aug 07, 2018 8:02 am
by Leng
ผมต้องการเขียนเป็น code ครับแต่ผมไม่รู้จะเริ่มจากอะไร
ผมต้องการดึงข้อมูลจาก DataX โดยในข้อมูลผมจะมี Box กับ End Box ครับโดยผมอยากให้
10001 สามารถใช้ได้กล่อง 1-20 เท่านั้น
10002สามารถใช้ได้กล่อง 21-40 เท่านั้น
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 = "10020" Then
Worksheets("IN").Cells(emptyrow - 1, 1).EntireRow.Delete
End If
With Workbooks("DataX.xlsx").Worksheets("Sheet1")
Set rngVlp = .Range("a2", .Range("d" & .Rows.Count).End(xlUp))
If Me.TextBox5.Text = "" Then Exit Sub
If WorksheetFunction.CountIf(Workbooks("DataX.xlsx").Worksheets("Sheet1").Range("A:D"), Me.TextBox5.Value) = 0 Then
'Me.TextBox5.Value = ""
Call Sample2
MsgBox "Not found."
Exit Sub
End If
Me.TextBox6.Text = Application.VLookup(CLng(Me.TextBox5.Text), rngVlp, 2, 0)
Me.TextBox7.Text = Application.VLookup(CLng(Me.TextBox5.Text), rngVlp, 3, 0)
Me.TextBox8.Text = Application.VLookup(CLng(Me.TextBox5.Text), rngVlp, 4, 0)
End With
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 = TextBox4.Value
.Cells(emptyrow, 4).Value = ComboBox1.Value
.Cells(emptyrow, 5).Value = TextBox5.Value
.Cells(emptyrow, 6).Value = TextBox6.Value
.Cells(emptyrow, 7).Value = TextBox7.Value
.Cells(emptyrow, 8).Value = TextBox8.Value
.Cells(emptyrow, 9).Value = TextBox9.Value
End With
Dim lsRow As Long
With Sheets("IN")
lsRow = .Range("a" & .Rows.Count).End(xlUp).Row
End With
ListBox1.RowSource = Sheets("IN").Range("A3:I" & lsRow).Address(external:=True)
With ListBox1
.ListIndex = .ListCount - 1
.Selected(.ListCount - 1) = True
End With
End Sub
Re: สอบถามครับ การกำหนดค่าหลายตัวแปร
Posted: Tue Aug 07, 2018 7:09 pm
by snasui
Leng wrote: Tue Aug 07, 2018 8:02 am
ข้อมูลผมจะมี Box กับ End Box ครับโดยผมอยากให้

ข้อมูล Box กับ End Box อยู่ตรงไหน
Leng wrote: Tue Aug 07, 2018 8:02 am10001 สามารถใช้ได้กล่อง 1-20 เท่านั้น
10002สามารถใช้ได้กล่อง 21-40 เท่านั้น
กล่องนี้อยู่ตรงไหนครับ
จำเป็นต้องเขียน Code มาเองก่อนเสมอ แจ้งมาด้วยว่าเขียนไว้ตรงไหน ติดขัดบรรทัดใด จะได้ตอบต่อไปจากนั้นครับ
Re: สอบถามครับ การกำหนดค่าหลายตัวแปร
Posted: Wed Aug 08, 2018 6:10 pm
by Leng
ผมต้องการกำหนดให้ Stlye/Size/Colors สามารถแสดงได้ ก็ต่อเมื่อ Box กับ Barcode ตรงกันเท่านั้น
Barcode / 10001
Stlye / MG001
Size / S
Colors / white
Box / 1
Total box / 10
Code: Select all
Private Sub TextBox5_AfterUpdate()
With Workbooks("DataX.xlsx").Worksheets("Sheet1")
Set rngVlp = .Range("a2", .Range("f" & .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 = "10020" Then
If MsgBox(" Finish this carton ?", vbYesNo + vbQuestion + vbDefaultButton2, " Close and Save ") = 6 Then
'....
End If
Worksheets("IN").Cells(emptyrow - 1, 1).EntireRow.Delete
End If
With Workbooks("DataX.xlsx").Worksheets("Sheet1")
Set rngVlp = .Range("a2", .Range("f" & .Rows.Count).End(xlUp))
If Me.TextBox5.Text = "" Then Exit Sub
If WorksheetFunction.CountIf(Workbooks("DataX.xlsx").Worksheets("Sheet1").Range("A:F"), Me.TextBox5.Value) = 0 Then
'Me.TextBox5.Value = ""
MsgBox "Not found."
Exit Sub
End If
Me.TextBox6.Text = Application.VLookup(CLng(Me.TextBox5.Text), rngVlp, 2, 0)
Me.TextBox7.Text = Application.VLookup(CLng(Me.TextBox5.Text), rngVlp, 3, 0)
Me.TextBox8.Text = Application.VLookup(CLng(Me.TextBox5.Text), rngVlp, 4, 0)
End With
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 = TextBox4.Value
.Cells(emptyrow, 4).Value = ComboBox1.Value
.Cells(emptyrow, 5).Value = TextBox5.Value
.Cells(emptyrow, 6).Value = TextBox6.Value
.Cells(emptyrow, 7).Value = TextBox7.Value
.Cells(emptyrow, 8).Value = TextBox8.Value
.Cells(emptyrow, 9).Value = TextBox9.Value
End With
End Sub
Re: สอบถามครับ การกำหนดค่าหลายตัวแปร
Posted: Wed Aug 08, 2018 8:19 pm
by snasui

ค่อย ๆ ถามตอบกันไปครับ
ตรวจสอบจากอะไรว่าตรงหรือไม่ตรงครับ

Re: สอบถามครับ การกำหนดค่าหลายตัวแปร
Posted: Wed Aug 08, 2018 8:27 pm
by Leng
จากคำถาม #5 ครับ ผมต้องการกำหนดให้ Stlye/Size/Colors สามารถแสดงได้ ก็ต่อเมื่อ Box กับ Barcode ตรงกันเท่านั้น
เหมือนเป็นการใช้ VLOOKUP+MATCH แต่ผมอยากนำมาเขียนใน vba ครับ โดยดึงฐานขอมูลจากไฟล์ Datax ให้มาแสดงบนไฟล์ Final ครับ
Re: สอบถามครับ การกำหนดค่าหลายตัวแปร
Posted: Wed Aug 08, 2018 8:53 pm
by snasui
Leng wrote: Wed Aug 08, 2018 8:27 pm
ผมต้องการกำหนดให้ Stlye/Size/Colors สามารถแสดงได้ ก็ต่อเมื่อ Box กับ Barcode ตรงกันเท่านั้น

ถ้า Box กับ Barcode ตรงกันแล้ว ให้ tlye/Size/Colors ที่ว่านั้น
แสดงได้ที่ตำแหน่งไหนครับ

Re: สอบถามครับ การกำหนดค่าหลายตัวแปร
Posted: Wed Aug 08, 2018 9:45 pm
by Leng
ผมทำ vlookup ไว้โดยถ้า scan ตรง barcode ข้อมูลก็จะขึ้นปกติครับแต่ผมอยากเพิ่มว่าถ้าข้อมูล box กับ barcode ไม่ตรงกันตามฐานข้อมูลข้อมูลก็จะไม่ขึ้นโดยมี msg เตือนครับ
Re: สอบถามครับ การกำหนดค่าหลายตัวแปร
Posted: Thu Aug 09, 2018 6:49 am
by snasui

ตัวอย่างการปรับ Code ครับ
Code: Select all
'Other code
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("f:f"), Me.TextBox2.Value) = 0 Then
'Me.TextBox5.Value = ""
MsgBox "Not found."
Exit Sub
End If
'Other code
Re: สอบถามครับ การกำหนดค่าหลายตัวแปร
Posted: Thu Aug 09, 2018 8:32 am
by Leng
ได้แล้วครับ แต่ผมอยากให้ msg แจ้งเตือนแยกกัน
-ใส่จำนวนกล่องแล้ว แต่บาร์โค๊ดผิด ให้ขึ้น Msg = "Please check barcode"
-ไม่ได้ใส่จำนวนกล่อง แต่บาร์โค๊ดถูก ให้ขึ้น MSg = "Please check number box"
Code: Select all
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
'Me.TextBox5.Value = ""
MsgBox "Please check number box"
Else
If WorksheetFunction.CountIf(Workbooks("DataX.xlsx").Worksheets("Sheet1").Range("A:F"), Me.TextBox5.Value) = 0 Then
'Me.TextBox5.Value = ""
MsgBox "Please check barcode"
End If
Exit Sub
Re: สอบถามครับ การกำหนดค่าหลายตัวแปร
Posted: Thu Aug 09, 2018 10:26 pm
by snasui

แนบไฟล์ล่าสุดมาด้วยครับ
Re: สอบถามครับ การกำหนดค่าหลายตัวแปร
Posted: Fri Aug 10, 2018 8:24 am
by Leng
รบกวนอาจารย์ด้วยครับ
Re: สอบถามครับ การกำหนดค่าหลายตัวแปร
Posted: Sat Aug 11, 2018 7:06 am
by snasui

ไม่พบว่ามีการปรับปรุงมาเองแล้วตามคำถามล่าสุดในไฟล์แนบครับ กรุณาพยายามปรับปรุงมาเองก่อนเสมอ นำเฉพาะส่วนที่ติดปัญหามาถามกันครับ
Re: สอบถามครับ การกำหนดค่าหลายตัวแปร
Posted: Sat Aug 18, 2018 11:18 am
by Leng
อาจารย์ครับผมปรับข้อมูลของบาร์โค๊ดให้ยาวขึ้นครับแต่ พอสแกนแล้วขึ้น error ครับทั้งๆที่พอใช้ข้อมูลของโค๊ดที่มีความสั้นกว่านี้ก็ใช้ได้ปกติครับ
Code: Select all
Me.TextBox6.Text = Application.VLookup(CLng(Me.TextBox5.Text), rngVlp, 2, 0)
Code: Select all
Private Sub TextBox5_AfterUpdate()
With Workbooks("DataX.xlsx").Worksheets("Sheet1")
Set rngVlp = .Range("a2", .Range("f" & .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 = "10020" Then
If MsgBox(" Finish this carton ?", vbYesNo + vbQuestion + vbDefaultButton2, " Close and Save ") = 6 Then
'....
End If
Worksheets("IN").Cells(emptyrow - 1, 1).EntireRow.Delete
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
'Me.TextBox5.Value = ""
MsgBox "Please check the information."
Exit Sub
End If
Me.TextBox6.Text = Application.VLookup(CLng(Me.TextBox5.Text), rngVlp, 2, 0)
Me.TextBox7.Text = Application.VLookup(CLng(Me.TextBox5.Text), rngVlp, 3, 0)
Me.TextBox8.Text = Application.VLookup(CLng(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 = TextBox4.Value
.Cells(emptyrow, 4).Value = ComboBox1.Value
.Cells(emptyrow, 5).Value = TextBox5.Value
.Cells(emptyrow, 6).Value = TextBox6.Value
.Cells(emptyrow, 7).Value = TextBox7.Value
.Cells(emptyrow, 8).Value = TextBox8.Value
.Cells(emptyrow, 9).Value = TextBox9.Value
End With
Dim total As Long
total = WorksheetFunction.Sum(Range("I3:I1048576"))
Range("A1").Value = total
End Sub
Re: สอบถามครับ การกำหนดค่าหลายตัวแปร
Posted: Sat Aug 18, 2018 11:33 am
by snasui
Leng wrote: Sat Aug 18, 2018 11:18 am
Me.TextBox6.Text = Application.VLookup(CLng(Me.TextBox5.Text), rngVlp, 2, 0)

เปลี่ยนจาก
CLng เป็น
CDbl และเปลี่ยนให้ครบทุกตัวครับ
Re: สอบถามครับ การกำหนดค่าหลายตัวแปร
Posted: Sat Aug 18, 2018 11:38 am
by Leng
ผมลองแก้แล้วครับแต่ก็ยังไม่ได้ครับ
Code: Select all
Private Sub TextBox5_AfterUpdate()
With Workbooks("DataX.xlsx").Worksheets("Sheet1")
Set rngVlp = .Range("a2", .Range("f" & .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 = "10020" Then
If MsgBox(" Finish this carton ?", vbYesNo + vbQuestion + vbDefaultButton2, " Close and Save ") = 6 Then
'....
End If
Worksheets("IN").Cells(emptyrow - 1, 1).EntireRow.Delete
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
'Me.TextBox5.Value = ""
MsgBox "Please check the 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 = TextBox4.Value
.Cells(emptyrow, 4).Value = ComboBox1.Value
.Cells(emptyrow, 5).Value = TextBox5.Value
.Cells(emptyrow, 6).Value = TextBox6.Value
.Cells(emptyrow, 7).Value = TextBox7.Value
.Cells(emptyrow, 8).Value = TextBox8.Value
.Cells(emptyrow, 9).Value = TextBox9.Value
End With
Dim total As Long
total = WorksheetFunction.Sum(Range("I3:I1048576"))
Range("A1").Value = total
End Sub
Re: สอบถามครับ การกำหนดค่าหลายตัวแปร
Posted: Sat Aug 18, 2018 11:42 am
by snasui

แนบไฟล์ล่าสุดมาด้วยจะได้ตอบต่อไปจากนั้นครับ
Re: สอบถามครับ การกำหนดค่าหลายตัวแปร
Posted: Sat Aug 18, 2018 11:45 am
by Leng
รบกวนอาจารย์ด้วยนะครับ
Re: สอบถามครับ การกำหนดค่าหลายตัวแปร
Posted: Sat Aug 18, 2018 11:57 am
by snasui

ผมทดสอบแล้วทำงานได้ ไม่ทราบว่าติดปัญหาใดช่วยแจ้งรายละเอียดมาด้วยครับ