บทที่ 6 การสร้าง User Form

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

การสร้างฟอร์ม
1. ที่เมนูบาร์ให้คลิกเลือก Tools>Macro>Visual Basic Editor

รูปที่ 6.1

2. เมื่อหน้าจอ Visual Basic Editor ปรากฏขึ้น ให้คลิกเลือก Insert > UserForm

รูปที่ 6.2

3.จะปรากฏ UserForm1 ขึ้น

รูปที่ 6.3
ซึ่งมีองค์ประกอบดังนี้
1.UserForm1

รูปที่ 6.4

2.Project Explorer
หน้าต่าง VBA Project Explorer เป็นส่วนที่ใช้ สำหรับจัดการเกี่ยวกับโปรเจ็กซ์ ทำหน้าที่แสดงส่วนประกอบต่างๆ ที่มีอยู่ในโปรเจ็กเช่น สมุดงาน ฟอร์ม โมดูล ซึ่งผู้เขียนโปรแกรมสามารถเลือกใช้งานได้โดยการคลิกเลือกได้


รูปที่ 6.5

3.Properties window
หน้าต่าง คุณสมบัติ (property window) เป็นส่วนที่ใช้สำหรักกำหนดคุณสมบัติต่างให้กับวัตถุที่ถูกเลือก ดังนั้นหน้าต่างนี้จะมีองค์ประกอบของคุณสมบัติเปลี่ยนไปตามวัตถุต่างๆ ผู้เขียนโปรแกรมสามารถใช้หน้าต่างนี้ ในการกำหนดค่าคุณสมบัติต่างๆของวัตถุ หรือคอนโทรลต่างๆ ได้อย่างเหมาะสม

รูปที่ 6.6

ในการเขียนโปรแกรม VBA ในโปรแกรมเอ็กเซลล์นั้น องค์ประกอบต่างๆ เช่น ฟอร์ม คอนโทรล ต่าง ๆ ถือว่าเป็นวัตถุ (Object) ซึ่งมีต้องมีการควบคุมการทำงาน โดย วัตถุทุกอย่างจะมีคุณจะมีคุณสมบัติ (properties) และเมธอด (Methods) ประจำตัว ซึ่งในวัตถุแต่ละอย่าง อาจจะมีคุณสมบัติและเมธอดที่เหมือน หรือต่างกันก็ได้ ขึ้นอยู่กับชนิดของวัตถุ

คุณสมบัติ (PROPERTIES)
คุณสมบัติ (properties) คือสิ่งที่สามารถบ่งบอกถึงคุณสมบัติของวัตถุ ซึ่งสามารถเปลี่ยนแปลงได้เช่น ลักษณะ ขนาด ความกว้าง ความยาว สีพื้น ฯลฯ สำหรับในแต่ละคอนโทรล หรือออบเจ็กต์ อาจจะมีคุณสมบัติที่เหมือนกัน หรือต่างกันก็ได้ ขึ้นอยู่กับหน้าที่ของแต่ละคอนโทรล หรือออบเจ็กต์ ซึ่งคอนโทรล และออบเจ็กต์ ใดๆ จะมีคุณสมบัติที่สามารถปรับแต่ง ให้ตรงกับความต้องการ ในการปรับแต่ง ค่าคุณสมบัติ สามารถทำได้โดยการกำหนดค่าจากหน้าต่างProperties หรือปรับค่าด้วยการเขียนชุดคำสั่ง ซึ่งคอนโทรลหรือออบเจ็กบางตัวอาจถูกตั้งค่าเริ่มต้นมาแล้ว
หน้าพร็อพเพอร์ตี้ประกอยด้วย 2 ส่วนคือ
1.Alphabetic เป็นที่แสดงพร็อพเพอร์ตี้ของคอนโทรลโดยเรียงตามตัวอักษร
2.Categorized เป็นที่แสดงพร็อพเพอร์ตี้ของคอนโทรลโดยเป็นหมวดหมู่

เมธอด (Method)
Method คือ วิธีการที่คอนโทรลนั้นสามารถทำได้ เช่น การ Copy Cut Paste เป็นต้น

คุณสมบัติที่สำคัญของฟอร์ม
Name คุณสมบัติใช้กำหนดชื่อฟอร์ม
BackColor คุณสมบัติใช้กำหนดสีพื้นหลังของฟอร์ม
BorderStyle คุณสมบัติใช้กำหนดรูปแบบของเส้นขอบ
Caption คุณสมบัติใช้กำหนดข้อความบน Title Bar ของ ฟอร์ม
ControlBox คุณสมบัติใช้กำหนดให้มีปุ่มควบคุมของ ฟอร์ม
Enabled คุณสมบัติใช้กำหนดให้ ฟอร์ม สามารถใช้งานได้หรือไม่
Font คุณสมบัติใช้กำหนดตัวอักษรของข้อความอุปกรณ์ต่าง ๆ ใน ฟอร์ม
ForeColor คุณสมบัติใช้กำหนดสีตัวอักษรของข้อความอุปกรณ์ต่าง ๆ ในฟอร์ม
MaxButton คุณสมบัติใช้กำหนดให้มีปุ่มขยายขนาดของฟอร์ม
MDI Child คุณสมบัติกำหนดให้ฟอร์มเป็น Form ย่อยของ MDI Form
MinButton คุณสมบัติใช้กำหนดให้มีปุ่มย่อขนาดของฟอร์ม
Moveable คุณสมบัติใช้กำหนดให้ฟอร์มสามารถย้ายตำแหน่งได้หรือไม่
Picture คุณสมบัติใช้กำหนดรูปบนฟอร์ม
ShowInTaskbar คุณสมบัติใช้กำหนดให้มีไอคอนแสดงบน Taskbar
StartUpPosition คุณสมบัติใช้กำหนดตำแหน่งการแสดงฟอร์มบนจอภาพ
Visible คุณสมบัติใช้กำหนดให้ซ่อนหรือแสดงฟอร์ม
WindowState คุณสมบัติใช้กำหนดขนาดของฟอร์ม เมื่อมีการทำงาน

เมธอดที่สำคัญของ Form
Hide คำสั่งที่สั่งให้ซ่อนฟอร์ม
Line คำสั่งที่สั่งให้วาดเส้นลงบน ฟอร์ม
Move คำสั่งที่สั่งให้ ฟอร์มย้ายตำแหน่งไปยังตำแหน่งที่กำหนด
Print คำสั่งที่สั่งให้พิมพ์ ฟอร์ม ออกทางเครื่องพิมพ์
Show คำสั่งที่สั่งให้แสดง ฟอร์ม
Unload คำสั่งที่สั่งให้ยกเลิกการใช้งานของฟอร์ม

อีเวนต์ที่สำคัญของ Form
Activate เหตุการณ์เมื่อเลือกใช้ฟอร์มที่มีการเปิดใช้พร้อมกันหลายอัน
Initialize เหตุการณ์เมื่อฟอร์มถูกโหลดเข้าไปในหน่วยความจำ
Load เหตุการณ์เมื่อฟอร์มแสดงผลหลังจากที่ถูกโหลดเข้าไปในหน่วยความจำ
Unload เหตุการณ์เมื่อฟอร์มถูกยกเลิกการใช้งาน


ตัวอย่างที่ 1 การสร้าง User Form สำหรับบันทึกข้อมูลสินค้า
ตัวอย่างแรกของการสร้างฟอร์ม คือ ฟอร์มสำหรับบันทึกข้อมูลสินค้า

1.การสร้าง UserForm
UserForm ในโปรแกรมเอ็กเซลล์ สามารถสร้างขึ้นได้ในหน้าต่าง Visual Basic Editor ตามขั้นตอนดังนี้
1.เปิด Worksheet ใหม่ขึ้นมา
2.เปิดหน้าต่าง Visual Basic Editor โดยที่เมนูบาร์คลิก Tools>Macro> Visual Basic Editor

รูปที่ 6.7
3.เมื่อหน้าต่าง Visual Basic Editor เปิดขึ้นมา ที่เมนูบาร์ให้คลิก Insert>UserForm

รูปที่ 6.8
4.UserForm1 จะปรากฏขึ้น ให้ปรับขนาดตามต้องการโดยการคลิกลากส่วนขอบของ UserForm1 หรืออาจกำหนดขนาดในหน้าต่างพร็อพเพอร์ตี้ก็ได้

รูปที่ 6.9
5.ตั้งชื่อฟอร์ม เป็น FormEX1 โดยที่หน้าต่างคุณสมบัติ (Name) ให้เปลี่ยนชื่อจาก UserForm1 เป็น FormEx1
6.เปลี่ยนค่า Caption เป็น “บันทึกรายการสินค้า”

รูปที่ 6.10

รูปที่ 6.11

2.เพิ่มป้ายกำกับ (Label) ใน UserForm
การใส่ Label หรือป้ายกำกับชื่อ เพื่อแสดงคำอธิบายถึง TextBox หรือเพื่อแสดงคำแนะนำการใช้
1.ในกล่องเครื่องมือ Toolbox คลิกที่คอนโทรล Label

รูปที่ 6.12
2.คลิกลาก วางบนพื้นที่ว่างของ FormEx1 ปรับขนาดให้เหมาะสมด้วยการใช้เมาส์ดึงที่ขอบของคอนโทรล หรือตั้งค่า Height Width ที่หน้าต่างพร็อพเพอร์ตี้ก็ได้
3.เปลี่ยน Caption เป็น “รหัสสินค้า”

รูปที่ 6.13
ใส่ Label อีก 2 ป้าย คือ
Label2 ตั้งค่า Caption เป็น “ชนิดสินค้า”
Label3 ตั้งค่า Caption เป็น “จำนวน”

รูปที่ 6.14
3.เพิ่มกล่องข้อความ TextBox
คอนโทรลนี้ ทำหน้าที่รับข้อมูล หรือแสดงข้อมูล โดยที่ผู้ใช้สามารถแก้ไขได้

รูปที่ 6.15
1.ในกล่องเครื่องมือ Toolbox คลิกที่คอนโทรล TextBox
2.คลิกลาก วางบนพื้นที่ว่างของ FormEx1 ปรับขนาดให้เหมาะสมด้วยการใช้เมาส์ดึงที่ขอบของคอนโทรล หรือตั้งค่า Height Width ที่หน้าต่างพร็อพเพอร์ตี้ก็ได้

รูปที่ 6.16

4.เพิ่มปุ่มคำสั่ง CommandButton
คอนโทรลนี้สร้างขึ้นเพื่อสั่งโปรแกรมทำงาน

รูปที่ 6.17
1.ในกล่องเครื่องมือ Toolbox คลิกที่คอนโทรล CommandButton
2.คลิกลาก วางบนพื้นที่ว่างของ FormEx1 ปรับขนาดให้เหมาะสมด้วยการใช้เมาส์ดึงที่ขอบของคอนโทรล หรือตั้งค่า Height Width ที่หน้าต่างพร็อพเพอร์ตี้ก็ได้
3.ตั้งค่า Caption เป็น “บันทึกข้อมูล”

รูปที่ 6.18
5.ใส่โค๊ดคำสั่งที่ปุ่ม “บันทึกข้อมูล”
1.ที่หน้าต่าง Visual Basic Editor ดับเบิ้ลคลิกที่ปุ่ม “บันทึกข้อมูล” หน้าต่างโค๊ดคำสั่งจะปรากฏขึ้นมา

รูปที่ 6.19
2..ให้ใส่คำสั่งดังนี้
Private Sub CommandButton1_Click()
Do
r = r + 1
Loop Until Cells(r, 1) = ""
Cells(r, 1) = TextBox1.Text
Cells(r, 2) = TextBox2.Text
Cells(r, 3) = TextBox3.Text
End Sub

3. ทำการบันทึกคำสั่ง save

ทดสอบโปรแกรม
1.การเรียกโปรแกรมที่สร้างไว้ขึ้นมาทดสอบ สามารถทำได้ 2 วิธี
วิธีที่ 1
1.ที่หน้าต่าง Worksheet ที่เมนูบาร์คลิก Tools>Macro>Macros>
2.เมื่อหน้าต่าง Macro เปิดขึ้นให้คลิกเลือกมาโครที่ต้องการ และกดปุ่ม Run ฟอร์มที่สร้างเอาไว้ก็จะปรากฏขึ้น

รูปที่ 6.20

รูปที่ 6.21


วิธีที่ 2
1.ที่หน้าต่าง Worksheet ให้สร้างปุ่มขึ้นมาเพื่อสั่งให้โปรแกรมทำงาน
2.คลิกขวาที่เมนูบาร์>คลิกเลือกForms>

รูปที่ 6.22
3.จะปรากฏเครื่องมือขึ้นมา ให้เลือก ปุ่ม Button
4.นำปุ่ม Button มาวางบนแผ่นงาน เอ็กเซลล์

รูปที่ 6.23
5.คลิกขวาที่ปุ่ม Button1>เลือก Assign Macro

รูปที่ 6.24

รูปที่ 6.25
6. เมื่อหน้าต่าง Visual Basic Editor ปรากฏขึ้นให้พิมพ์คำสั่งดังนี้
Sub Button1_Click()
FormEX1.Show
End Sub

รูปที่ 6.26

7.กลับไปที่หน้าต่าง Worksheet แล้วคลิกที่ปุ่ม Button1 จะทำให้ฟอร์มที่สร้างไว้ปรากฏขึ้น

รูปที่ 6.27



2.ทดลองใส่ข้อมูล
ทดลองใส่ข้อมูล รหัสสินค้า ชนิดของสินค้า จำนวนของสินค้า แล้วกดปุ่มบันทึกข้อมูล จะเห็นว่าในข้อมูลที่ใส่ในฟอร์ม จะถูกส่งไปในตารางเอ็กเซลล์ดังรูป

รูปที่ 6.28