snasui.com ยินดีต้อนรับ
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
pipatkenta
Member
Posts: 62 Joined: Tue Aug 21, 2012 12:08 am
#1
Post
by pipatkenta » Tue Aug 21, 2012 12:52 am
เรียน อาจารย์
ผมจำเป็นต้องใช้เอ็กเซลในการจัดเก็บข้อมูล โดยการยิงบาร์โค้ด ปัญหาคือ ต้องคอยกดเอนเทอร์ทุกครั้งเพื่อเปลี่ยนช่องเซล
ทำให้เกิดความล่าช้า คำถามคือ เอ็กเซลจะสามารถตั้งค่าให้เปลี่ยนช่องอัตโนมัติได้หรือไม่ครับ รบกวนอาจารย์ให้ความรู้ด้วยครับ
ขอแสดงความนับถือ
นพรุจ
bank9597
Guru
Posts: 3868 Joined: Wed Aug 17, 2011 11:49 am
#2
Post
by bank9597 » Tue Aug 21, 2012 2:02 am
pipatkenta wrote: เรียน อาจารย์
ผมจำเป็นต้องใช้เอ็กเซลในการจัดเก็บข้อมูล โดยการยิงบาร์โค้ด ปัญหาคือ ต้องคอยกดเอนเทอร์ทุกครั้งเพื่อเปลี่ยนช่องเซล
ทำให้เกิดความล่าช้า คำถามคือ เอ็กเซลจะสามารถตั้งค่าให้เปลี่ยนช่องอัตโนมัติได้หรือไม่ครับ รบกวนอาจารย์ให้ความรู้ด้วยครับ
ขอแสดงความนับถือ
นพรุจ
ต้องใช้ VBA เข้ามาช่วยจัดการครับ ลองเขียนมาดูก่อนครับ ติดส่วนใดค่อยมาแก้ไขกัน
หรือลองศึกษาตามกระทู้นี้ครับ
viewtopic.php?f=3&t=3075&start=20
Forum Rules
อย่าใช้ภาษาแชทในการตอบ-ถาม
ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
pipatkenta
Member
Posts: 62 Joined: Tue Aug 21, 2012 12:08 am
#3
Post
by pipatkenta » Tue Aug 21, 2012 2:12 am
ขอบคุณอาจารย์มากๆครับ ผมจะลองไปเขียนหากติดปัญหาคงรบกวนอาจารย์อีกครั้งครับ
ขอแสดงความนับถือ
นพรุจ
pipatkenta
Member
Posts: 62 Joined: Tue Aug 21, 2012 12:08 am
#4
Post
by pipatkenta » Wed Sep 05, 2012 4:43 pm
เรียนอาจารย์
ผมคงต้องรบกวนขอคำแนะนำจากอาจารย์ให้กระจ่างกว่านี้ครับ ผมลองทำดูแล้วไม่ได้สักทีครับ
รบกวนด้วยครับ
ขอแสดงความนับถือ
นพรุจ
snasui
Site Admin
Posts: 31159 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#5
Post
by snasui » Wed Sep 05, 2012 4:56 pm
ช่วยแนบไฟล์และ Code ที่ลองแล้วมาด้วย อธิบายว่าปัญหาคืออะไร เป้าหมายที่ต้องการคืออะไรมาด้วยครับ
pipatkenta
Member
Posts: 62 Joined: Tue Aug 21, 2012 12:08 am
#6
Post
by pipatkenta » Wed Sep 05, 2012 11:33 pm
เรียน อาจารย์
ผมแนบไฟล์ที่ได้ลองทำดูมาให้แล้วครับ จุดประสงค์หลักของผมคือ
เวลายิงบาร์โค๊ดเซลก็จะเลื่อนลงอัตโนมัติ แต่ที่ผมทำไม่ได้ จะมีรายละเอียดตามไฟล์แนบครับ
ขอแสดงความนับถือ
นพรุจ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31159 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#7
Post
by snasui » Thu Sep 06, 2012 10:36 am
ที่ Sheet1 เขียน Code ตามด้านล่างครับ
Code: Select all
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Row = 24 Then
Target.Offset(0, 1).End(xlUp).Activate
End If
End Sub
ส่วน Code เดิมไม่จำเป็นต้องใช้เพราะสามารถยิง Barcode ลงในเซลล์ได้เลย
pipatkenta
Member
Posts: 62 Joined: Tue Aug 21, 2012 12:08 am
#8
Post
by pipatkenta » Thu Sep 06, 2012 1:28 pm
เรียน อาจารย์
ผมเขียนตามที่อาจารย์แนะนำมาครับ แต่ทำไมสแกนบาร์โค๊ดแล้ว ยังไม่เป็นตามสูตรครับ
ไม่เลื่อนลง
snasui
Site Admin
Posts: 31159 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#9
Post
by snasui » Thu Sep 06, 2012 4:11 pm
ช่วยเล่าการทำงานปัจจุบันมาด้วยครับ การสแกนมีกระบวนการอย่างไร เซลล์แรกที่เริ่มรับข้อมูลอยู่ตรงไหน สแกนแล้วโปรแกรมเลื่อนไปเซลล์ถัดไปให้เองหรือไม่หรือต้องเขียน Code เพื่อกำหนดให้เลื่อนเอง ฯลฯ
pipatkenta
Member
Posts: 62 Joined: Tue Aug 21, 2012 12:08 am
#10
Post
by pipatkenta » Fri Sep 07, 2012 12:01 am
เรียน อาจารย์
ลักษณะงานของผมคือ จัดเก็บเอกสารการส่งของโดยยิงบาร์โค้ดในไฟล์เอ็กเซล แล้วบันทึกไว้ในแต่ละวันเพื่อสะดวกต่อการค้นหาเลขที่เอกสาร สิ่งที่ผมประสบปัญหาคือ ผมต้องคอยกดเอนเทอร์ทุกครั้งในการสแกนเพื่อนเลื่อนเซล
คำถาม 1.การสแกนมีกระบวนการอย่างไร
ตอบ ในเอกสารการส่งสินค้าจะมีบาร์โค้ด ผมจะสแกนบาร์โค้ดนั้นลงเอ็กเซลครับ
คำถาม 2.เซลล์แรกที่เริ่มรับข้อมูลอยู่ตรงไหน
ตอบ จะอยู่ที่ เซล A4,A44,A84 เสมอในทุกชีทตามลำดับทุกๆ 40 เซลครับ
คำถาม 3.สแกนแล้วโปรแกรมเลื่อนไปเซลล์ถัดไปให้เองหรือไม่หรือต้องเขียน Code เพื่อกำหนดให้เลื่อนเอง ฯลฯ
ตอบ ผมต้องการเขียนโค้ดเพื่อกำหนดการเลื่อนเองครับ เพราะในแต่ละตารางงานจะบันครั้งละ 200 บาร์โค้ด
ทั้งนี้ ผมได้แนบไฟล์มาให้อาจารย์ด้วยครับ เพื่ออาจารย์ได้เห็นภาพและเข้าใจวิธีการทำงานของผมมากขึ้น
ขอแสดงความนับถือ
นพรุจ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31159 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#11
Post
by snasui » Fri Sep 07, 2012 8:25 am
ผมเขียนมาให้เป็น
ตัวอย่าง ลองปรับ Code เป็นตามด้านล่าง และวาง Code ที่ Sheet1
ไม่ใช่วางที่ Module1 ซึ่งเป็นการวางผิดที่เช่นตัวอย่างที่แนบมา
Code: Select all
Private Sub Worksheet_Change(ByVal Target As Range)
Target.Offset(1, 0).Activate
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Row = 24 Then
Target.Offset(0, 1).End(xlUp).Offset(1, 0).Activate
End If
End Sub
pipatkenta
Member
Posts: 62 Joined: Tue Aug 21, 2012 12:08 am
#12
Post
by pipatkenta » Sat Sep 08, 2012 12:11 am
เรียน อาจารย์
ผมได้ทดลองคัดลอกโค้ดที่อาจารย์เขียนมาไปวางครับ แต่ทำไมยังใช้ไม่ได้เลยครับ
ผมผิดพลาดตรงไหนหรือเปล่า ลองเปลี่ยนตัวเลขก็ไม่ได้ ผมขอคำแนะนำจากอาจารย์อีกครั้งครับ
จากคราวที่แล้วที่ผมตอบอาจารย์ไปว่า ต้องการเขียนโค้ดเพื่อเลื่อนเอง ผมคงเข้าใจผิด
ผมอยากให้อาจารย์ช่วยแนะนำว่า ถ้ากำหนดให้เซลเลื่อนไปเซลถัดไปให้เอง ทำอย่างไรครับ
ผมแนบไฟล์ที่เขียนโค้ดตามอาจารย์มาด้วยครับ
(โดยปกติผมไม่ค่อยมีความรู้เรื่องการเขียนโค้ดมากนักครับ อาจพูดได้ว่าน้อยมากๆครับ)
ขอแสดงความนับถือ
นพรุจ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31159 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#13
Post
by snasui » Sat Sep 08, 2012 2:54 am
จาก
pipatkenta wrote: ผมต้องคอยกดเอนเทอร์ทุกครั้งในการสแกนเพื่อนเลื่อนเซล
แสดงว่าโปรแกรมจากตัวสแกนไม่ Enter ให้ใช่หรือไม่ครับ หากไม่กด Enter หรือกด Tab ให้ก็ยังจะกลายเป็นการ Edit เซลล์ คืออยู่ในขณะกำลังป้อนค่าลงในเซลล์ ก็คงจำเป็นจะต้องกดแป้น Enter เองครับ เนื่องจากไม่มี Event ของ Excel ที่จะรับรู้การเปลี่ยนแปลงขณะป้อนค่า ยกเว้นว่าป้อนเสร็จแล้วกดแป้น Enter (หรือตามกำหนด) เพื่อรับค่านั้น
สำหรับ Code ที่ผมเขียนให้ไปสามารถทดสอบได้โดย
คีย์ค่าทดสอบ ลงในเซลล์ A2:A24 แล้วกดแป้น Tab หรือ Enter สังเกตได้ว่าหากไปถึงเซลล์ A23 แล้วกดแป้น Tab หรือ Enter โปรแกรมจะเลือก B2 ให้โดยอัตโนมัติ
pipatkenta
Member
Posts: 62 Joined: Tue Aug 21, 2012 12:08 am
#14
Post
by pipatkenta » Sat Sep 08, 2012 6:37 am
ขอบคุณอาจารย์สำหรับคำแนะนำครับ
ขอแสดงความนับถือ
นพรุจ