Page 1 of 1
ต้องการกำหนดให้ข้อมูลไปขึ้นยัง cell ที่ต้องการเวลา Scan barcode
Posted: Tue Mar 19, 2019 12:05 pm
by jwwam
สวัสดีค่ะ
พอดีนำระบบ Barcode มาใช้ร่วมกับ Excel เพื่อใช้ในคลังสินค้า
เวลาที่สแกนบาร์โคดต้องการให้ข้อมูลมันวิ่งไปอยู่ที่แถวที่มีเลขเดียวกัน
เช่น เวลายิงบาร์โคด A-108 อยากให้ข้อมูลวิ่งไปที่ cell B9 หรือเวลายิงบาร์โคด A-201 ก็ไปจะที่ cell B16 เพื่อให้เลขเดียวกันอยู่แถวเดียวกัน
และนอกจากนี้ ต้องการให้พอสแกนลงคอลัมน์ B แล้ว แล้ววิ่งไปที่คอลัมน์ C ต่อ เช่น ยิงที่ Location A-108 จะทำการยิงบาร์โคดของ Location ลงที่ cell ฺB9 ก่อน แล้วยิงบาร์โคดของสินค้าลงที่ cell C9 ต่อได้เลย
จึงอยากทราบว่าต้องให้สูตรหรือต้องเขียน vba code คะ แล้วต้องเขียนยังไง
หรือมี Format ไหนแนะนำบ้างไหมคะ
อนุญาตแนบไฟล์ค่ะ
Re: ต้องการกำหนดให้ข้อมูลไปขึ้นยัง cell ที่ต้องการเวลา Scan barcode
Posted: Tue Mar 19, 2019 12:19 pm
by puriwutpokin
ต้องใช้VBAครับ เบื้องต้นบันทึกmacro ดูครับแล้วปรับแต่งโค้ดติดตรงไหนมาถามต่อครับ
Re: ต้องการกำหนดให้ข้อมูลไปขึ้นยัง cell ที่ต้องการเวลา Scan barcode
Posted: Tue Mar 19, 2019 5:06 pm
by jwwam
puriwutpokin wrote: Tue Mar 19, 2019 12:19 pm
ต้องใช้VBAครับ เบื้องต้นบันทึกmacro ดูครับแล้วปรับแต่งโค้ดติดตรงไหนมาถามต่อครับ
พอดีไม่เคยเขียน vba เลย สามารถดูไกด์ไลน์จากไหนได้บ้างคะ
Re: ต้องการกำหนดให้ข้อมูลไปขึ้นยัง cell ที่ต้องการเวลา Scan barcode
Posted: Tue Mar 19, 2019 9:19 pm
by snasui

การหาตัวอย่าง Code ให้ใกล้เคียงกับงานที่ทำอาจจะไม่ง่ายครับ
ถ้าไม่เคยใช้ VBA มาก่อนเลยควรให้หน่วยงาน IT ทำให้ดีกว่าครับ หากทำแล้วติดขัดตรงไหนอย่างไร สามารถนำมาถามกันต่อได้ที่นี่
และหากจะลองศึกษา Macro ดู ลองดูจาก Link นี้ครับ
wordpress/professional-macro-recording/
Re: ต้องการกำหนดให้ข้อมูลไปขึ้นยัง cell ที่ต้องการเวลา Scan barcode
Posted: Thu Mar 21, 2019 4:39 pm
by jwwam
snasui wrote: Tue Mar 19, 2019 9:19 pm

การหาตัวอย่าง Code ให้ใกล้เคียงกับงานที่ทำอาจจะไม่ง่ายครับ
ถ้าไม่เคยใช้ VBA มาก่อนเลยควรให้หน่วยงาน IT ทำให้ดีกว่าครับ หากทำแล้วติดขัดตรงไหนอย่างไร สามารถนำมาถามกันต่อได้ที่นี่
และหากจะลองศึกษา Macro ดู ลองดูจาก Link นี้ครับ
wordpress/professional-macro-recording/
ตอนนี้กำลังลองเขียนโค้ด แต่ก็ยังไม่ได้ รบกวนช่วยดูให้หน่อยได้ไหมคะ
ตามรูปภาพที่แนบมา กำลังเขียนให้ตอนเราสแกน A113 มันวิ่งไปที่ cell B14 ไม่ทราบว่าโค้ดผิดตรงไหนหรือเปล่าคะ
Re: ต้องการกำหนดให้ข้อมูลไปขึ้นยัง cell ที่ต้องการเวลา Scan barcode
Posted: Thu Mar 21, 2019 5:21 pm
by puriwutpokin
ลองแนบไฟล์ตัวอย่างพร้อมโค้ดมาดูกันครับ
Re: ต้องการกำหนดให้ข้อมูลไปขึ้นยัง cell ที่ต้องการเวลา Scan barcode
Posted: Thu Mar 21, 2019 8:54 pm
by snasui

เท่าที่ดูตามภาพเป็นการ Loop ผิดหลักการ
สิ่งที่จะ Loop ด้วย For...Next คือ ตัวเลข หากไป Loop ตัวอักษรดังตัวอย่างที่ถามมาจะเกิด Error ครับ
ควรส่งไฟล์พร้อม Code และอธิบายสิ่งทีต้องการทำ แจ้งผลลัพธ์มาด้วยว่าหากเขียนถูกต้องจะต้องได้ค่าใด จะได้สะดวกในการตอบครับ
Re: ต้องการกำหนดให้ข้อมูลไปขึ้นยัง cell ที่ต้องการเวลา Scan barcode
Posted: Sat Mar 23, 2019 6:34 pm
by jwwam
puriwutpokin wrote: Thu Mar 21, 2019 5:21 pm
ลองแนบไฟล์ตัวอย่างพร้อมโค้ดมาดูกันครับ
ตัวอย่างโค้ดค่ะ
Code: Select all
Sub demo()
Dim rng As Range
Set rng = Range("B:B")
Dim i As Integer
For i = A113 To A113
rng(i).Value = i
Next i
End Sub
ไฟล์แนบค่ะ
Re: ต้องการกำหนดให้ข้อมูลไปขึ้นยัง cell ที่ต้องการเวลา Scan barcode
Posted: Sat Mar 23, 2019 6:41 pm
by jwwam
snasui wrote: Thu Mar 21, 2019 8:54 pm

เท่าที่ดูตามภาพเป็นการ Loop ผิดหลักการ
สิ่งที่จะ Loop ด้วย For...Next คือ ตัวเลข หากไป Loop ตัวอักษรดังตัวอย่างที่ถามมาจะเกิด Error ครับ
ควรส่งไฟล์พร้อม Code และอธิบายสิ่งทีต้องการทำ แจ้งผลลัพธ์มาด้วยว่าหากเขียนถูกต้องจะต้องได้ค่าใด จะได้สะดวกในการตอบครับ
ขออนุญาตแนบโค้ดค่ะ
Code: Select all
Sub demo()
Dim rng As Range
Set rng = Range("B:B")
Dim i As Integer
For i = A113 To A113
rng(i).Value = i
Next i
End Sub
สิ่งที่ต้องการทำคือ เวลาสแกนลงคอลัมน์ B อยากให้ข้อมูลวิ่งไปที่แถวที่มีเลขเดียวกัน เช่น เมื่อยิง A113 ก็จะวิ่งไปแถว 14 cell B14 จากนั้นวิ่งไป cell ข้างๆคือ cell C14 เพื่อยิงบาร์โค้ดสินค้าลงไปต่อ จากนั้นก็วนกลับไปที่คอลัมน์ B เพื่อยิง Location ของสินค้าและบาร์โค้ดสินค้าตัวถัดไปค่ะ
โดย loop ของมันจะอยู่ที่คอลัมน์ B และ C ค่ะ
ไฟล์แนบค่ะ
Re: ต้องการกำหนดให้ข้อมูลไปขึ้นยัง cell ที่ต้องการเวลา Scan barcode
Posted: Sat Mar 23, 2019 6:49 pm
by snasui
jwwam wrote: Sat Mar 23, 2019 6:41 pm
สิ่งที่ต้องการทำคือ เวลาสแกนลงคอลัมน์ B อยากให้ข้อมูลวิ่งไปที่แถวที่มีเลขเดียวกัน เช่น เมื่อยิง A113 ก็จะวิ่งไปแถว 14 cell B14 จากนั้นวิ่งไป cell ข้างๆคือ cell C14 เพื่อยิงบาร์โค้ดสินค้าลงไปต่อ จากนั้นก็วนกลับไปที่คอลัมน์ B เพื่อยิง Location ของสินค้าและบาร์โค้ดสินค้าตัวถัดไปค่ะ
โดย loop ของมันจะอยู่ที่คอลัมน์ B และ C ค่ะ

ตัวอย่าง Code ครับ
Code: Select all
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("a2:b" & Rows.Count)) Is Nothing Then
Target.Offset(0, 1).Select
End If
End Sub
ให้วาง Code ที่ Sheet1 (Barcode) ในหน้า VBE (หน้าที่ใช้เขียนโปรแกรม) ต้อง Double Click เข้าไปในชีตชื่อข้างต้นนี้ในหน้าต่าง Project Explorer (เปิดด้วยการกดแป้น Ctrl+R) แล้วค่อยวาง Code จากนั้นทดสอบการยิง Barcode ดูครับ
Re: ต้องการกำหนดให้ข้อมูลไปขึ้นยัง cell ที่ต้องการเวลา Scan barcode
Posted: Mon Mar 25, 2019 9:33 am
by jwwam
snasui wrote: Sat Mar 23, 2019 6:49 pm
jwwam wrote: Sat Mar 23, 2019 6:41 pm
สิ่งที่ต้องการทำคือ เวลาสแกนลงคอลัมน์ B อยากให้ข้อมูลวิ่งไปที่แถวที่มีเลขเดียวกัน เช่น เมื่อยิง A113 ก็จะวิ่งไปแถว 14 cell B14 จากนั้นวิ่งไป cell ข้างๆคือ cell C14 เพื่อยิงบาร์โค้ดสินค้าลงไปต่อ จากนั้นก็วนกลับไปที่คอลัมน์ B เพื่อยิง Location ของสินค้าและบาร์โค้ดสินค้าตัวถัดไปค่ะ
โดย loop ของมันจะอยู่ที่คอลัมน์ B และ C ค่ะ

ตัวอย่าง Code ครับ
Code: Select all
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("a2:b" & Rows.Count)) Is Nothing Then
Target.Offset(0, 1).Select
End If
End Sub
ให้วาง Code ที่ Sheet1 (Barcode) ในหน้า VBE (หน้าที่ใช้เขียนโปรแกรม) ต้อง Double Click เข้าไปในชีตชื่อข้างต้นนี้ในหน้าต่าง Project Explorer (เปิดด้วยการกดแป้น Ctrl+R) แล้วค่อยวาง Code จากนั้นทดสอบการยิง Barcode ดูครับ
มันขึ้นแบบนี้ค่ะ
Re: ต้องการกำหนดให้ข้อมูลไปขึ้นยัง cell ที่ต้องการเวลา Scan barcode
Posted: Mon Mar 25, 2019 10:45 am
by puriwutpokin
jwwam wrote: Mon Mar 25, 2019 9:33 am
snasui wrote: Sat Mar 23, 2019 6:49 pm
jwwam wrote: Sat Mar 23, 2019 6:41 pm
สิ่งที่ต้องการทำคือ เวลาสแกนลงคอลัมน์ B อยากให้ข้อมูลวิ่งไปที่แถวที่มีเลขเดียวกัน เช่น เมื่อยิง A113 ก็จะวิ่งไปแถว 14 cell B14 จากนั้นวิ่งไป cell ข้างๆคือ cell C14 เพื่อยิงบาร์โค้ดสินค้าลงไปต่อ จากนั้นก็วนกลับไปที่คอลัมน์ B เพื่อยิง Location ของสินค้าและบาร์โค้ดสินค้าตัวถัดไปค่ะ
โดย loop ของมันจะอยู่ที่คอลัมน์ B และ C ค่ะ

ตัวอย่าง Code ครับ
Code: Select all
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("a2:b" & Rows.Count)) Is Nothing Then
Target.Offset(0, 1).Select
End If
End Sub
ให้วาง Code ที่ Sheet1 (Barcode) ในหน้า VBE (หน้าที่ใช้เขียนโปรแกรม) ต้อง Double Click เข้าไปในชีตชื่อข้างต้นนี้ในหน้าต่าง Project Explorer (เปิดด้วยการกดแป้น Ctrl+R) แล้วค่อยวาง Code จากนั้นทดสอบการยิง Barcode ดูครับ
มันขึ้นแบบนี้ค่ะ
ว่างโค้ดให้เหมือนที่อาจารย์ ให้โค้ดไปครับ ตรงนี้ต้องเป็น 3 บรรทัดครับ หรือถ้าจะให้เป็น 2 บรรทัดก็ตัด
ตัวนี้ออกครับ
Code: Select all
If Not Intersect(Target, Range("a2:b" & Rows.Count)) Is Nothing Then
Target.Offset(0, 1).Select
End If
Code: Select all
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("a2:b" & Rows.Count)) Is Nothing Then Target.Offset(0, 1).Select
End Sub
Re: ต้องการกำหนดให้ข้อมูลไปขึ้นยัง cell ที่ต้องการเวลา Scan barcode
Posted: Mon Mar 25, 2019 11:44 am
by jwwam
puriwutpokin wrote: Mon Mar 25, 2019 10:45 am
jwwam wrote: Mon Mar 25, 2019 9:33 am
snasui wrote: Sat Mar 23, 2019 6:49 pm

ตัวอย่าง Code ครับ
Code: Select all
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("a2:b" & Rows.Count)) Is Nothing Then
Target.Offset(0, 1).Select
End If
End Sub
ให้วาง Code ที่ Sheet1 (Barcode) ในหน้า VBE (หน้าที่ใช้เขียนโปรแกรม) ต้อง Double Click เข้าไปในชีตชื่อข้างต้นนี้ในหน้าต่าง Project Explorer (เปิดด้วยการกดแป้น Ctrl+R) แล้วค่อยวาง Code จากนั้นทดสอบการยิง Barcode ดูครับ
มันขึ้นแบบนี้ค่ะ
ว่างโค้ดให้เหมือนที่อาจารย์ ให้โค้ดไปครับ ตรงนี้ต้องเป็น 3 บรรทัดครับ หรือถ้าจะให้เป็น 2 บรรทัดก็ตัด
ตัวนี้ออกครับ
Code: Select all
If Not Intersect(Target, Range("a2:b" & Rows.Count)) Is Nothing Then
Target.Offset(0, 1).Select
End If
Code: Select all
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("a2:b" & Rows.Count)) Is Nothing Then Target.Offset(0, 1).Select
End Sub
มันยังไม่ไปในแถวที่มีเลขเดียวกันเลยค่ะ แล้วก็ไม่ลูปกลับมาที่คอลัมน์ B
Re: ต้องการกำหนดให้ข้อมูลไปขึ้นยัง cell ที่ต้องการเวลา Scan barcode
Posted: Mon Mar 25, 2019 12:26 pm
by puriwutpokin
จุดประสงค์คือที่อ่านด้านบนจากนี้
สิ่งที่ต้องการทำคือ เวลาสแกนลงคอลัมน์ B อยากให้ข้อมูลวิ่งไปที่แถวที่มีเลขเดียวกัน เช่น เมื่อยิง A113 ก็จะวิ่งไปแถว 14 cell B14 จากนั้นวิ่งไป cell ข้างๆคือ cell C14 เพื่อยิงบาร์โค้ดสินค้าลงไปต่อ จากนั้นก็วนกลับไปที่คอลัมน์ B เพื่อยิง Location ของสินค้าและบาร์โค้ดสินค้าตัวถัดไปค่ะ
โดย loop ของมันจะอยู่ที่คอลัมน์ B และ C ค่ะ
คือยิงที่ Active cell ที่ B2 แล้วยิง แล้วขึ้นข้อมูล A113 ที่ B2 แล้ว ให้ ข้อมูลนั้นวิ่งไปหาตัว
ที่ตรงกับมันที่ cell B14 คือ A113 แล้ว ให้มันกลับไป Active cell ที่ B2 เหมือนเดิมใช่ไหมครับ
ถ้าผมเข้าใจถูก
ถ้าแบบนี้ ควร ทำเซลต่างหากไว้ยิง อาจไว้ยิงที่ M4 ก็ดีครับแล้วให้ตัวยิงนี้ไป Active cell ที่ตรง
กับ เซล M4 จะดีกว่าไหมครับ หรือไม่ใช่อย่างที่ผมพูด
ก็ลองวาด เป็นตัวชี้ ว่า 1 เริ่มที่เซล ไหน และ 2 ไปอะไรที่ไป แล้วกลับไปที่ไหน โยงเป็นขั้นตอน
มาดูครับ

Re: ต้องการกำหนดให้ข้อมูลไปขึ้นยัง cell ที่ต้องการเวลา Scan barcode
Posted: Mon Mar 25, 2019 1:36 pm
by jwwam
puriwutpokin wrote: Mon Mar 25, 2019 12:26 pm
จุดประสงค์คือที่อ่านด้านบนจากนี้
สิ่งที่ต้องการทำคือ เวลาสแกนลงคอลัมน์ B อยากให้ข้อมูลวิ่งไปที่แถวที่มีเลขเดียวกัน เช่น เมื่อยิง A113 ก็จะวิ่งไปแถว 14 cell B14 จากนั้นวิ่งไป cell ข้างๆคือ cell C14 เพื่อยิงบาร์โค้ดสินค้าลงไปต่อ จากนั้นก็วนกลับไปที่คอลัมน์ B เพื่อยิง Location ของสินค้าและบาร์โค้ดสินค้าตัวถัดไปค่ะ
โดย loop ของมันจะอยู่ที่คอลัมน์ B และ C ค่ะ
คือยิงที่ Active cell ที่ B2 แล้วยิง แล้วขึ้นข้อมูล A113 ที่ B2 แล้ว ให้ ข้อมูลนั้นวิ่งไปหาตัว
ที่ตรงกับมันที่ cell B14 คือ A113 แล้ว ให้มันกลับไป Active cell ที่ B2 เหมือนเดิมใช่ไหมครับ
ถ้าผมเข้าใจถูก
ถ้าแบบนี้ ควร ทำเซลต่างหากไว้ยิง อาจไว้ยิงที่ M4 ก็ดีครับแล้วให้ตัวยิงนี้ไป Active cell ที่ตรง
กับ เซล M4 จะดีกว่าไหมครับ หรือไม่ใช่อย่างที่ผมพูด
ก็ลองวาด เป็นตัวชี้ ว่า 1 เริ่มที่เซล ไหน และ 2 ไปอะไรที่ไป แล้วกลับไปที่ไหน โยงเป็นขั้นตอน
มาดูครับ
ขั้นตอนประมาณนี้ค่ะ
Re: ต้องการกำหนดให้ข้อมูลไปขึ้นยัง cell ที่ต้องการเวลา Scan barcode
Posted: Mon Mar 25, 2019 2:00 pm
by puriwutpokin
ผมปรับโค้ดเป็นแบบทั่วๆไปนะครับ แบบที่ไปยิง B และไป C แล้ว ยิง C กลับไป B ถัดลงไป 1 บรรทัด แต่ ตามรูปไม่รู้ว่า ทำไมถึง มีเงื่อนไขอะไรถึงไปด้านบน ตำแหน่งนั้นต้องแจ้งเงื่อนไข
ว่าอะไรครับ
Code: Select all
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("a2:b" & Rows.Count)) Is Nothing Then
Target.Offset(0, 1).Select
Else
Target.Offset(1, -1).Select
End If
End Sub
Re: ต้องการกำหนดให้ข้อมูลไปขึ้นยัง cell ที่ต้องการเวลา Scan barcode
Posted: Mon Mar 25, 2019 2:23 pm
by jwwam
puriwutpokin wrote: Mon Mar 25, 2019 2:00 pm
ผมปรับโค้ดเป็นแบบทั่วๆไปนะครับ แบบที่ไปยิง B และไป C แล้ว ยิง C กลับไป B ถัดลงไป 1 บรรทัด แต่ ตามรูปไม่รู้ว่า ทำไมถึง มีเงื่อนไขอะไรถึงไปด้านบน ตำแหน่งนั้นต้องแจ้งเงื่อนไข
ว่าอะไรครับ
Code: Select all
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("a2:b" & Rows.Count)) Is Nothing Then
Target.Offset(0, 1).Select
Else
Target.Offset(1, -1).Select
End If
End Sub
ขอโทษค่ะ อันนั้นใส่เป็นตัวอย่างค่ะ
แต่ว่าตอนนี้เวลายิงแล้วมันยังไม่ไปอยู่ในแถวที่มีเลขเดียวเลยค่ะ หรือว่ามันทำไม่ได้คะ
Re: ต้องการกำหนดให้ข้อมูลไปขึ้นยัง cell ที่ต้องการเวลา Scan barcode
Posted: Mon Mar 25, 2019 2:43 pm
by puriwutpokin
ตามที่แจ้งก่อนหน้านี้ ต้องมีเซลหนึ่ง ไว้เป็นตัวยิงเข้าไป ลำพังยิงไปที่เซลใดๆ ในคอลัมน์ไม่เจาะจงแล้วให้มันวิ่งไปแมช ตัวเลขเองอันนี้ ผมไม่แน่ใจว่าจะทำได้นะครับ ที่ผมทำอยู่ จะให้เซลหนึ่งเป็นตัวรับข้อมูลที่ยิง แล้วให้มันไปแมช ที่คอลัมน์นั้นๆ พอได้อยู่ครับ รอท่านอื่นมาตอบต่อนะครับ ผมไม่แน่ใจว่าแบบที่คุณต้องการมันจะได้ไหม
Re: ต้องการกำหนดให้ข้อมูลไปขึ้นยัง cell ที่ต้องการเวลา Scan barcode
Posted: Mon Mar 25, 2019 3:18 pm
by menem
ลองดูนะครับ ผมใช้ Inputbox แทน เพื่อรับค่า
และจะสิ้นสุด เมื่อป้อนค่าเป็น 0