Professional Office

เบื้องลึกเบื้องลับกับ Windows & Microsoft Office ตอน VBA Excel InputBox พี่น้องท้องเดียวกับ MsgBox (1)

ธัชชัย จำลอง

touchai@gmail.com

 

 

สาระเล็กๆ น้อยๆ กับเทคนิคการใช้งาน รวมทั้งคำสั่งที่ซ่อนอยู่ในระบบปฏิบัติการและโปรแกรมสำนักงานชุดนี้ มาต่อกันด้วยเรื่อง VBA Excel InputBox พี่น้องท้องเดียวกับ MsgBox ตอนแรก

 

     สิ่งที่เป็นเรื่องคู่กันกับ MsgBox คือ InputBox ครับ ดังนั้นเมื่อพูดถึง MsgBox ไปแล้วก็ต้องมี InputBox ตามมาติดๆ ทั้งนี้เพราะมีการทำงานที่คล้ายกัน ต่างกันเพียง MsgBox ใช้แสดงข้อความได้เท่านั้น แต่ InputBox นั้นเพิ่มความสามารถในการป้อนข้อมูลเข้าไปได้ด้วยเท่านั้นเอง (รูปที่ 1)

 

 

รูปที่ 1

 

          เราก็มาดูวิธีการใช้ InputBox กันนะครับ (ขอบอกว่าง่ายมาก)

 

รูปแบบคำสั่ง InputBox

 

           สำหรับรูปแบบคำสั่งของ InputBox เป็นแบบนี้ครับ

 

          InputBox(Prompt, Title, Default, Left, Top, HelpFile, HelpContextID, Type)

 

          พารามิเตอร์ที่อยู่ในวงเล็บแต่ละตำแหน่งมีหน้าที่ดังตารางที่ 1

 

ตารางที่ 1 หน้าที่ของพารามิเตอร์แต่ละตัว

 

 

          ขอเพิ่มเติมข้อกำหนดอีกนิดหน่อยนะครับ

 

          1. พารามิเตอร์ Prompt นั้นต้องใส่ด้วยทุกครั้ง ส่วนตัวอื่นจะใส่หรือไม่ก็ได้

          2. พารามิเตอร์ Type นั้นต้องใส่เป็นตัวเลขครับ โดยค่าต่างๆ มีดังตารางต่อไปนี้

 

ตารางที่ 1

 

 

          การใช้ Input Box เบื้องต้น

 

          อย่างที่เรียนคุณผู้อ่านไปตั้งแต่ต้นว่า InputBox ใช้งานง่าย ก็เลยได้ตัวอย่างง่ายๆ แบบนี้

               

          1. อันดับแรกให้เราไปสร้าง Sub เพื่อใส่ InputBox ก่อนครับ โดยในที่นี้ให้กำหนดชื่อ Sub เป็น myInputBox (รูปที่ 2)

 

 

รูปที่ 2

 

          2. จากนั้นไปใส่ปุ่มในหน้าเวิร์กชีต กำหนด Text เป็น InputBox ดังรูปที่ 3 (อย่าลืมนะครับว่าปุ่มต้องมาจาก Form Controls เท่านั้น)

 

 

รูปที่ 3

 

          3. ทำการ Assign Macro ด้วย Sub ที่เพิ่งสร้างไปเมื่อครู่นี้ (รูปที่ 4)

 

 

รูปที่ 4

 

          4. ทีนี้ก็ให้คลิกปุ่ม InputBox ครับ เราก็จะได้กล่องข้อความแบบ InputBox แบบนี้ (รูปที่ 5)

 

 

รูปที่ 5

 

          5. แล้วก็ลองป้อนตัวเลขหรือข้อความเข้าไป แล้วคลิกปุ่ม OK (รูปที่ 6)

 

 

รูปที่ 6

 

          6. แล้วกล่องข้อความแบบ MsgBox ก็จะทำงาน โดยหยิบตัวเลขหรือข้อความที่เราใส่เข้าไปใน InputBox ขึ้นมาแสดงแบบนี้ (รูปที่ 7)

 

 

รูปที่ 7

 

          ใช้ InputBox ช่วยป้อนข้อมูล

 

          การแสดงข้อมูลจาก InputBox ด้วย MsgBox นั้นดูไปก็ไม่มีประโยชน์ เพราะจริงๆ แล้ว InputBox เขาเอาไว้ช่วยป้อนข้อมูล โดยวิธีการง่ายๆ มีดังนี้

               

          1. อันดับแรกให้ไปแก้ไขโค้ดใน Sub myInputBox() ให้เป็นโค้ดนี้ก่อนครับ (รูปที่ 8)

 

 

รูปที่ 8

 

          อธิบายโค้ดนิดหน่อย

          ต้องขอเกริ่นนิดหน่อยก่อนว่าโค้ดนี้เป็นการป้อนข้อมูลเข้าไปในคอลัมน์ F โดยตอนเริ่มต้นนั้นที่คอลัมน์ F ยังไม่มีข้อมูล ก็เลยต้องเลือกเซลล์ที่อยู่ด้านล่างๆ ก่อน แล้วค่อยวิ่งกลับขึ้นมาที่เซลล์สุดท้ายของข้อมูล (ซึ่งต้องมีแน่นอนในอนาคต) สำหรับขั้นตอนการทำงานของโค้ดมีดังนี้

          1. ไปที่เซลล์ F1000 เพื่อใช้เป็นจุดเริ่มต้นก่อนวิ่งที่เซลล์ว่างเซลล์สุดท้ายของกลุ่มข้อมูล
          2. วิ่งกลับขึ้นไปที่เซลล์ล่างสุดที่มีข้อมูลอยู่
          3. ลงมาอีก 1 เซลล์ ก็จะได้เซลล์ว่างที่ต้องการทันที
          4. เก็บข้อมูลที่ป้อนเข้าไปใน InputBox ไว้ที่ตัวแปรชื่อ myValue
          5. นำข้อมูลจาก myValue มาใส่ในเซลล์สุดท้ายที่เลือกไว้ (คือเซลล์ในข้อ 3 นั่นเอง)

 

          2. ใส่คำว่า “ข้อมูล” เข้าไปที่เซลล์ F1 เพื่อบอกให้รู้ว่าจะใส่ข้อมูลที่คอลัมน์นี้ จากนั้นให้คลิกปุ่ม InputBox (รูปที่ 9)

 

 

รูปที่ 9

 

          3. พอ InputBox แสดงขึ้นมา ให้ลองใส่ข้อมูลอะไรก็ได้เข้าไป แล้วคลิกปุ่ม OK (รูปที่ 10)

 

 

รูปที่ 10

 

          4. เพียงเท่านี้ข้อมูลก็จะมาแสดงอยู่ในเซลล์ว่างเซลล์สุดท้ายแล้วล่ะครับ (รูปที่ 11)

 

 

รูปที่ 11

 

          5. ลองป้อนข้อมูลเล่นๆ ได้นะครับ เดี๋ยวข้อมูลจะไปต่อท้ายข้อมูลเดิมเอง (รูปที่ 12)

 

 

รูปที่ 12

 

          Note

          หลังจากใช้งานโค้ดนี้ไปซักพัก เราสามารถแก้ไขคำสั่งตรงที่ให้วิ่งไปที่เซลล์ F1000 ไปเป็นเซลล์อื่นได้ เผื่อข้อมูลมีเกินเซลล์ F1000 หรือจะให้ไปเริ่มต้นที่ F1 เลยก็ได้ แต่ต้องไปแก้ไขโค้ดอีกบรรทัดด้วยนะครับ ซึ่งเราจะได้โค้ดเป็นแบบนี้ (รูปที่ 13)



รูปที่ 13

          แต่ต้องจำไว้อย่างหนึ่งนะครับ ถ้าวันใดก็ตามที่ข้อมูลของเราถูกลบจนเหลือเพียงเซลล์ F1 เมื่อไร เราต้องกลับไปใช้โค้ดเดิมทันที

          สุดท้ายถ้าไม่อยากคอยระวังแก้ไขโค้ด เราสามารถเปลี่ยน F1000 เป็น F1000000 ได้ แต่อาจดูเอิกเกริกไปนิดในสายตาของโปรแกรมเมอร์ ถ้าจะให้ดีเราอาจเขียนโค้ดดักเรื่องเซลล์ว่าง/ไม่ว่างก็ได้ แต่โค้ดก็จะดูวุ่นวายสำหรับคนที่ไม่ใช่โปรแกรมเมอร์

 

           เอาล่ะครับเนื้อที่หมดแล้ว เดี๋ยวคราวหน้าเรามาต่อเรื่อง InputBox กันอีกนิดหน่อย สวัสดีครับ^_^

 

 

สงวนลิขสิทธิ์ ตามพระราชบัญญัติลิขสิทธิ์ พ.ศ. 2539 www.thailandindustry.com
Copyright (C) 2009 www.thailandindustry.com All rights reserved.

ขอสงวนสิทธิ์ ข้อมูล เนื้อหา บทความ และรูปภาพ (ในส่วนที่ทำขึ้นเอง) ทั้งหมดที่ปรากฎอยู่ในเว็บไซต์ www.thailandindustry.com ห้ามมิให้บุคคลใด คัดลอก หรือ ทำสำเนา หรือ ดัดแปลง ข้อความหรือบทความใดๆ ของเว็บไซต์ หากผู้ใดละเมิด ไม่ว่าการลอกเลียน หรือนำส่วนหนึ่งส่วนใดของบทความนี้ไปใช้ ดัดแปลง โดยไม่ได้รับอนุญาตเป็นลายลักษณ์อักษร จะถูกดำเนินคดี ตามที่กฏหมายบัญญัติไว้สูงสุด