แสดงบทความที่มีป้ายกำกับ VBA Excel แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ VBA Excel แสดงบทความทั้งหมด

วันศุกร์ที่ 5 สิงหาคม พ.ศ. 2559

การป้องกันไม่ให้ดูโค้ด VBA ใน Excel

การป้องกันไม่ให้ดูโค้ด VBA ใน Excel

วิธีนี้ยังใช้ได้กับ Word, Access, PowerPoint เป็นต้นได้ด้วย
การป้องกันการดูโค้ด VBA จากผู้ใช้ก็เพื่อไม่มห้ผู้ใช้เข้ามาแก้ไขหรือดูโค้ดส่วนที่เป็นความลับเช่น บางครั้งเรามีการเปรียบเทียบค่าสหัสผ่านที่รับจากผู้ใช้และเราไม่ต้องการให้ ผู้ใช้ทราบรหัสผ่านที่ใช้ในการเปรียบเทียบ เป็นต้น
ขั้นตอนการป้องกัน
เปิดไฟล์ Excel ที่มีโค้ด VBA แล้วคลิ้กปุ่ม Alt + F11 เพื่อเข้าหน้า VBA
จากนั้นเลือกเมนู Tools > VBAProject Properties…


จะพบหน้า VBAProject – Project Properties
ที่แท็ป Protection ให้เลือก Lock project for viewing และกำหนดรหัสผ่านในช่อง Password และ Confirm password ให้ตรงกัน
แล้วคลิ้ก OK




วันอังคารที่ 2 สิงหาคม พ.ศ. 2559

ข้อผิดพลาดในโปรแกรม


                  การเขียนโปรแกรมแต่ละครั้ง ย่อมมีความผิดพลาดต่างๆ เกิดขึ้น  และผู้เขียนก็จำเป็นต้องแก้ไขให้ถูกต้อง มิฉะนั้นโปรแกรมก็จะไม่สามารถใช้งานได้ หรืออาจประมวลผลที่ผิดออกมา ในการเขียนโปรแกรม VBA ใน เอ็กเซลล์นั้น ผู้เขียนสามารถตรวจสอบโปรแกรมได้ด้วยการรันโปรแกรมดูได้ในได้ในทุกขั้นตอน เมื่อโปรแกรมตรวจพบข้อผิดพลาดใดๆ ก็จะมีไดอะล็อกข้อความปรากฏขึ้นมาให้ผู้เขียนได้ทำการแก้ไข
                 ในบทนี้จะนำเสนอตัวอย่างข้อผิดพลาดที่มักพบบ่อยๆ เมื่อทำการเขียนโปรแกรม ซึ่งน่าจะเป็นประโยชน์ให้ผู้เขียนได้เป็นแนวทางในการแก้ไขปัญหาที่เกิดขึ้น
ข้อผิดพลาดในการเขียนโปรแกรมที่พบอาจแบ่งได้เป็น 2 ประเภทคือ
1.ข้อผิดพลาดประเภท Compile Error ซึ่งเกิดในขณะโปรแกรมกำลังแปรภาษาของโปรแกรมที่เขียน
2.ข้อผิดพลาดประเภท Rut-time Error เกิดขึ้นเมื่อมีการใช้โปรแกรม แม้ว่าโปรแกรมที่ทำการ Compile ผ่านไปแล้วก็ตาม อาจยังมีข้อผิดพลาดเมื่อนำไปใช้

1. ข้อผิดพลาดประเภท Compile Error ที่พบบ่อย
1.ข้อผิดพลาดที่เกิดจากการกำหนดชนิดตัวแปรผิด หรือไม่เหมาะสม

รูปที่ 9.1
ตัวอย่างเช่น ตัวแปร x เป็นชนิด String แต่ตัวแปร y เป็นชนิด Integer ซึ่งไม่สามารถนำมาคูณกันได้
Private Sub CommandButton1_Click()
Dim a As String
Dim x As String
Dim y As Integer
x = TextBox1.Text
y = TextBox2.Text
a = x*y
Label3.Caption = a
End Sub
2.ความผิดพลาดที่เกิดจากการไม่กำหนดตัวแปร หรืออาจพิมพ์ชนิดตัวแปรผิด

รูปที่ 9.2
ตัวอย่างเช่น ตัวแปร a ประกาศตัวแปรแบบ String แต่ผู้เขียนโปรแกรมอาจพิมพ์ผิด
Private Sub CommandButton1_Click()
Dim a As Strin
Dim x As Integer
Dim y As Integer
x = TextBox1.Text
y = TextBox2.Text
a = x*y
Label3.Caption = a
End Sub
3. ข้อผิดพลาดที่เกิดจากการใช้บล็อค If ไม่มีคำสั่ง End If ปิดท้าย

รูปที่ 9.3

4.โปรแกรมไม่มี End Sub ที่ส่วนท้ายสุดของโปรแกรม

รูปที่ 9.4

5.ข้อผิดพลาดที่เกิดจากการไม่มี Method หรือ Property หรืออาจจะพิมพ์ผิด

รูปที่ 9.5
ตัวอย่างเช่น TextBox2 ใช้คุณสมบัติ Text เพื่อส่งค่าคืนให้ y แต่ชื่อคุณสมบัติพิมพ์ผิดเป็น Tex ซึ่งตัว t หายไป
Private Sub CommandButton1_Click()
Dim a As String
Dim x As Integer
Dim y As Integer
x = TextBox1.Text
y = TextBox2.Tex
a = x*y
Label3.Caption = a
End Sub

6. ข้อผิดพลาดที่เกิดจากการพิมพ์ผิดหรือใช้สัญลักษณ์ผิด

รูปที่ 9.6
Private Sub CommandButton1_Click()
Dim a, x, y As Integer
x = TextBox1.Text
y = TextBox2.Tex
a = x*y
Label3,Caption = a
End Sub

 
2. ข้อผิดพลาดประเภท Run-time Error ที่พบบ่อย
1. Run-time error ‘6’ Overflow ข้อผิดพลาดที่เกิดจากค่าส่งคืนมีค่ามากกว่าชนิดของตัวแปรที่กำหนด

รูปที่ 9.7
Private Sub CommandButton1_Click()
Dim a, x, y As Integer
x = TextBox1.Text
y = TextBox2.Tex
a = x*y
Label3.Caption = a
End Sub
จากตัวอย่างจะเห็นว่าค่าตัวแปรทั้งหมดกำหนดให้เป็นชนิด Integer ซึ่งมีค่าอยู่ระหว่าง -32,768 ถึง 32,767 นั้นหมายความว่า ถ้ากำหนดค่าให้ตัวแปรมากกว่าหรือน้อยกว่านี้ หรือผลของการคูณ x และ y มากกว่าหรือน้อยกว่าค่าจำกัดของ Integer ก็จะเกิดไดอะล็อกแสดงข้อความ Overflow ขึ้นมา

2. Run-time error ‘11’ ข้อผิดพลาดที่เกิดจากการหารค่าด้วย “0”

รูปที่ 9.8
Private Sub CommandButton1_Click()
Dim a As String
Dim x As Integer
Dim y As Integer
x = TextBox1.Text
y = TextBox2.Text
a = x / y
Label3.Caption = a
End Sub
3. Run-time error ‘13’ Type mismatch ข้อผิดพลาดที่เกิดจากการพิมพ์ค่าตัวแปรผิด
ตัวอย่างเช่น มีฟอร์มให้ผู้ใช้กรอกข้อมูลเป็นตัวเลข 9X10 =90 แต่ผู้ใช้กรอกข้อมูลเป็นตัวอักษร 9X1o(อักษรตัว โอ) ทำให้ไม่สามารถคำนวนได้

                                      รูปที่ 9.9                                             

รูปที่ 9.10
3. Run-time error’424’ Object required ข้อผิดพลาดที่เกิดจาก โปรแกรมไม่มี Object หรืออาจพิมพ์ชื่อ Object อาจพิมพ์ผิด

รูปที่ 9.11
ตัวอย่างเช่น TextBox2 เป็นอ๊อปเจค ที่ผู้เขียนโปรแกรมสร้างไว้บนฟอร์ม แต่เวลาลงรหัสคำสั่งพิมพ์เป็น TextBox ซึ่งเลข 2 หายไป ทำให้โปรแกรมหาอ๊อปเจคไม่พบ
Private Sub CommandButton1_Click()
Dim a As String
Dim x As Integer
Dim y As Integer
x = TextBox1.Text
y = TextBox.Text
a = x*y
Label3.Caption = a
End Sub

 การป้องกันข้อผิดพลาดในขณะโปรแกรมกำลังทำงาน
            ใน ขณะที่โปรแกรมกำลังทำงานอยู่นั้น อาจมีข้อผิดพลาดเกิดขึ้นกับโปรแกรม อันเนื่องมาจากสาเหตุต่างๆ แต่ผู้เขียนโปรแกรมต้องการให้โปรแกรมสามารถทำงานต่อไปได้ ดังนั้น ในส่วนของโปรแกรมต้องมีคำสั่ง ที่สั่งให้โปรแกรมทำงานต่อไปดังนี้

On Error Resume Next   หากเกิดข้อผิดพลาดเกิดขึ้นใน procedure ให้โปรแกรมสามารถดำเนินการในคำสั่ง statement ต่อไป
On Error GoTo 0  หากเกิดข้อผิดพลาดเกิดขึ้นใน procedure ให้โปรแกรมสามารถดำเนินการในคำสั่ง statement ต่อไป ตามตำแหน่งอ้างอิง
On Error GoTo line     หากเกิดข้อผิดพลาดเกิดขึ้นใน procedure ให้โปรแกรมสามารถดำเนินการในคำสั่ง statement บันทัดที่

การเขียนผังงานและการควบคุมทิศทางของโปรแกรม


การเขียนผังงาน FLOW CHART
ผัง งานเป็นแผนภาพที่แสดงถึงขั้นตอนวิธีการหรือกระบวนการที่แสดงขั้นตอน โดยใช้สัญลักษณ์ชนิดต่างๆ เชื่อมต่อด้วยลูกศร การเขียนผังงาน flow chart ช่วยในการแสดงขั้นตอนการดำเนินงานทีละขั้นตอน โดยลูกศรเป็นตัวเชื่อมขั้นตอนการดำเนินงาน เพื่อแสดงทิศทางการควบคุม หรือการจัดการกระบวนการด้านต่างๆ

ประโยชน์ของการเขียนผังงาน
1. ใช้แสดงโครงสร้างการทำงานของโปรแกรมทั้งหมด
2. ทำความเข้าใจภาพรวมทั้งหมดของกระบวนการได้ง่าย และรวดเร็ว
3. การเขียนผังงานสามารถนำไปประยุกต์ในการเขียนโปรแกรมได้ทุกภาษา
4. การเขียนผังงานช่วยให้ตรวจสอบข้อผิดพลาดของโปรแกรมได้อย่างรวดเร็ว
5. สามารถนำไปพัฒนา ปรับปรุงในอนาคตได้

ลักษณะของผังงานที่ดี
1. ลำดับขั้นตอนการทำงานควรจะเริ่มจากบนลงล่าง หรือจากซ้ายไปขวา
2. มีทางเข้าหรือจุดเริ่มต้น และทางออกหรือจุดสิ้นสุดเพียงทางเดียวเท่านั้น
3. ในสัญลักษณ์ใด ๆ มีทางออกเพียงทางเดียว ยกเว้นสัญลักษณ์แสดงการตัดสินใจ หรือ ทางเลือกสามารถมีทางออกได้มากกว่าหนึ่งทาง
4. ผังงานควรชัดเจน เป็นระเบียบ
5. ข้อความหรือคำสั่งใด ๆ ที่อยู่ในสัญลักษณ์ควรสั้น กระชับ ได้ใจความ และสามารถเข้าใจได้ง่าย
6. ใช้สัญลักษณ์ที่มีขนาดเหมาะสมกับคำสั่ง
7. ในกระบวนการทำงานที่ต้องการเพิ่มคำอธิบายเข้าไปเพื่อให้เกิดความเข้าใจ ก็สามารถทำได้โดยการใช้สัญลักษณ์หมายเหตุประกอบ


การเขียนผังงาน Flowchart มีสัญลักษณ์ที่ควรทราบ ดังนี้

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

การควบคุมการทำงานของโปรแกรม
คำสั่งควบคุมการทำงาน มีหลายประเภท ดังนี้
1. แบบเรียงลำดับการทำงาน (Sequence)
เป็นการควบคุมการทำงานของโปรแกรม แบบลำดับขั้นตอน หรือกระบวนการที่กำหนดไว้ ตั้งแต่เริ่มต้น จนสิ้นสุด
2. แบบเงื่อนไข (Condition Statement)
เป็นการควบคุมการทำงานของโปรแกรม แบบมีเงื่อนไข ให้ตัดสินใจ ให้โปรแกรม กระทำหรือไม่กระทำ เมื่อผลเป็นไปตามเงื่อนไขหรือไม่เป็นไปตามเงื่อนไข
2.1ประโยคแบบเงื่อนไข IF-THEN
2.2ประโยคแบบเงื่อนไข IF-THEN-ELSE
2.3ประโยคแบบเงื่อนไข IF-THEN-ELSEIF
2.4ประโยคแบบเงื่อนไข SELECT CASE
3. แบบวนซ้ำ (Iteration Statement)
เป็นการควบคุมการทำงานของโปรแกรม แบบวนซ้ำ เพื่อให้โปรแกรมวนซ้ำคำสั่ง ตามจำนวนรอบที่กำหนด หรือมีเงื่อนไขให้ออกจากลูปการทำงาน
3.1ประโยคแบบวนซ้ำ FOR NEXT
3.2.ประโยคแบบวนซ้ำ (Iteration Statement) DO-WHILE-LOOP
3.3.ประโยคแบบวนซ้ำ (Iteration Statement) DO-LOOP-WHILE
3.4ประโยคแบบวนซ้ำ (Iteration Statement) DO-UNTIL-LOOP
3.5ประโยคแบบวนซ้ำ (Iteration Statement) DO-LOOP-UNTIL



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


ตัวอย่าง หาผลคูณของ A x B=C โดย A และ B เป็นตัวแปรรับค่าจาก Input box
วิธีทำ 
1.เปิดโปรแกรมเอ็กเซลล์
2.เปิดไฟล์ใหม่
3.เลือกปุ่ม Button (ถ้าไม่มีให้คลิกขวาที่เมนู แล้วคลิกเลือก Forms)
4.คลิกเม้าส์ซ้ายค้างแล้วลากเม้าส์ เพื่อวาดปุ่ม Button
5.จากนั้นวินโดว์ Assign macro จะเปิดขึ้นมา ให้คลิกเลือกปุ่ม New

รูปที่ 8.1

6.เมื่อหน้าต่าง Visual Basic Editor เปิดขึ้น ให้พิมพ์คำสั่งดังนี้

Sub sequence()
Dim a, b, c As Integer
a = InputBox("Please input value of A")
b = InputBox("Please input value of B")
c = a * b
MsgBox "Sum is " & c
End Sub

ทดสอบโปรแกรม
1.กดปุ่ม Button เพื่อสั่งให้โปรแกรมทำงาน
2.เมื่อ Input box แสดงขึ้นมาให้ใส่ค่า A แล้วกดปุ่ม OK

รูปที่ 8.2
3.เมื่อ Input box แสดงขึ้นมาให้ใส่ค่า B แล้วกดปุ่ม OK

รูปที่ 8.3
4.โปรแกรมจะทำการคำนวน และแสดงผลการคำนวนออกมาโดย Message box

รูปที่ 8.4


2. ประโยคแบบเงื่อนไข (Condition Statement)
2.1ประโยคแบบเงื่อนไข IF-THEN (1 เงื่อนไข 1 คำสั่ง)
คำสั่ง IF…Then ใช้สำหรับตรวจสอบเงื่อนไข โดยถ้าเงื่อนไขเป็นจริง จะทำตามคำสั่ง
Syntax โครงสร้าง
If <เงื่อนไข> then <คำสั่ง>

ตัวอย่าง ตรวจเช็ครหัสผ่านที่ได้จากใส่รหัสผ่านใน InputBox ถ้ารหัสผ่านถูกต้องให้แสดงข้อความ Your password is correct
วิธีทำ
1.เปิดโปรแกรมเอ็กเซลล์
2.เปิดไฟล์ใหม่
3.เลือกปุ่ม Button (ถ้าไม่มีให้คลิกขวาที่เมนู แล้วคลิกเลือก Forms)
4.คลิกเม้าส์ซ้ายค้างแล้วลากเม้าส์ เพื่อวาดปุ่ม Button
5.จากนั้นวินโดว์ Assign macro จะเปิดขึ้นมา ให้คลิกเลือกปุ่ม New

รูปที่ 8.5
6.เมื่อหน้าต่าง Visual Basic Editor เปิดขึ้น ให้พิมพ์คำสั่งดังนี้
Sub if_then()
Password = InputBox("Please enter your password")
If Password = 1234 Then MsgBox ("Your password is correct")
End Sub
การแสดงผลคลิกที่ปุ่ม Button1 เพื่อแสดงผล
1.เมื่อคลิกปุ่ม Button ไดอะล็อคบล็อคเพื่อรับค่าจะปรากฏขึ้น ให้พิมพ์รหัสตัวเลขลงไป เป็น 1234

รูปที่ 8.6
2.ถ้ารหัสถูกต้องจะมีได อะล็อคบล๊อค แสดงขึ้นมาด้วยข้อความ Your password is correct แต่ถ้าไม่ถูกต้องก็จะไม่มีไดอะล็อคบล๊อค แสดงขึ้นมา

รูปที่ 8.7
2.2ประโยคแบบเงื่อนไข IF-THEN-ELSE (1 เงื่อนไข 2 คำสั่ง)
คำสั่ง IF…Then…Else ใช้สำหรับตรวจสอบเงื่อนไขหนึ่ง ๆ โดยถ้าเงื่อนไงนี้เป็นจริงจะทำชุดคำสั่งหนึ่งแต่ถ้าเป็นเท็จจะทำอีกชุดคำ สั่งหนึ่ง
Syntax โครงสร้าง
If <เงื่อนไข> then
<ชุดคำสั่งเมื่อเงื่อนไขเป็นจริง>
Else
<ชุดคำสั่งเมื่อเงื่อนไขเป็นเท็จ>
End if


ตัวอย่าง ตรวจเช็ครหัสผ่านที่ได้จากใส่รหัสผ่านใน InputBox ถ้ารหัสผ่านถูกต้องให้แสดงข้อความ “Your password is correct” ถ้ารหัสผ่านไม่ถูกต้องให้แสดงข้อความ “Please try again”
วิธีทำ 
1.เปิดโปรแกรมเอ็กเซลล์
2.เปิดไฟล์ใหม่
3.เลือกปุ่ม Button (ถ้าไม่มีให้คลิกขวาที่เมนู แล้วคลิกเลือก Forms)
4.คลิกเม้าส์ซ้ายค้างแล้วลากเม้าส์ เพื่อวาดปุ่ม Button
5.จากนั้นวินโดว์ Assign macro จะเปิดขึ้นมา ให้คลิกเลือกปุ่ม New

รูปที่ 8.8

6.เมื่อหน้าต่าง Visual Basic Editor เปิดขึ้น ให้พิมพ์คำสั่งดังนี้

Sub if_then_else()
Password = InputBox("Please enter your password")
If Password = 1234 Then
MsgBox ("Your password is correct")
Else
MsgBox ("Please try again")
End If
End Sub



การแสดงผลคลิกที่ปุ่ม Button เพื่อแสดงผล
1.เมื่อคลิกปุ่ม Button ไดอะล็อคบล็อคเพื่อรับค่าจะปรากฏขึ้น ให้พิมพ์รหัสตัวเลข

รูปที่ 8.9
2.ถ้ารหัสถูกต้องจะมีได อะล็อคบล๊อค แสดงขึ้นมาด้วยข้อความ Your password is correct แต่ถ้าไม่ถูกต้องก็จะมีไดอะล็อคบล๊อค แสดงข้อความ “Please try again” ขึ้นมา

รูปที่ 8.10



2.3ประโยคแบบเงื่อนไข IF-THEN-ELSEIF (หลายเงื่อนไข หลายคำสั่ง)
คำสั่ง IF…Then…Elseif ใช้สำหรับตรวจสอบเงื่อนไข โดยถ้าเงื่อนไขที่ 1 เป็นจริงก็จะทำชุดคำสั่งที่หนึ่ง แต่ถ้าเป็นเท็จ ก็จะเช็คเงื่อนไขและทำในคำสั่งถัดไป
Syntax โครงสร้าง
If <เงื่อนไขที่ 1 > then
<ชุดคำสั่งที่ 1>
Elseif <เงื่อนไขที่ 2> then
<ชุดคำสั่งที่ 2>
Elseif <เงื่อนไขที่ 3> then
<ชุดคำสั่งที่ 3>
End if

ตัวอย่าง โปรแกรมคิดเกรดที่ระดับคะแนนต่างๆ
วิธีทำ
1.เปิดโปรแกรมเอ็กเซลล์
2.เปิดไฟล์ใหม่
3.เลือกปุ่ม Button (ถ้าไม่มีให้คลิกขวาที่เมนู แล้วคลิกเลือก Forms)
4.คลิกเม้าส์ซ้ายค้างแล้วลากเม้าส์ เพื่อวาดปุ่ม Button
5.จากนั้นวินโดว์ Assign macro จะเปิดขึ้นมา ให้คลิกเลือกปุ่ม New

รูปที่ 8.11
6.เมื่อหน้าต่าง Visual Basic Editor เปิดขึ้น ให้พิมพ์คำสั่งดังนี้
Sub if_then_elseif()
Score = InputBox("Please enter your score")
If Score >= 80 Then
Grade = "A"
ElseIf Score >= 70 Then
Grade = "B"
ElseIf Score >= 60 Then
Grade = "C"
ElseIf Score >= 50 Then
Grade = "D"
Else
Grade = "F"
End If
MsgBox "Your grade is " & Grade
End Sub
การแสดงผลคลิกที่ปุ่ม Button3 เพื่อแสดงผล

รูปที่ 8.12
1.เมื่อคลิกปุ่ม Button 3 ไดอะล็อคบล็อคเพื่อรับค่าจะปรากฏขึ้น ให้พิมพ์คะแนนลงไป
แล้วกดปุ่ม OK โปรแกรมจะแสดงผลการคำนวนเกรด ออกมา
2.4ประโยคแบบเงื่อนไข SELECT CASE
Syntax โครงสร้าง
Select Case ชื่อตัวแปร
Case เงื่อนไข 1 : คำสั่ง 1
Case เงื่อนไข 2 : คำสั่ง 2
Case เงื่อนไข n : คำสั่ง n
End Select

ตัวอย่าง โปรแกรมให้เกรดระดับคะแนน
วิธีทำ 
1.เปิดโปรแกรมเอ็กเซลล์
2.เปิดไฟล์ใหม่
3.เลือกปุ่ม Button (ถ้าไม่มีให้คลิกขวาที่เมนู แล้วคลิกเลือก Forms)
4.คลิกเม้าส์ซ้ายค้างแล้วลากเม้าส์ เพื่อวาดปุ่ม Button
5.จากนั้นวินโดว์ Assign macro จะเปิดขึ้นมา ให้คลิกเลือกปุ่ม New


รูปที่ 8.13

6.เมื่อหน้าต่าง Visual Basic Editor เปิดขึ้น ให้พิมพ์คำสั่งดังนี้
Sub select_case()
Score = InputBox("Please enter your score")
Select Case Score
Case 80 To 100: Grade = "A"
Case 70 To 79: Grade = "B"
Case 60 To 69: Grade = "C"
Case 50 To 59: Grade = "D"
Case 0 To 49: Grade = "F"
End Select
MsgBox "Your grade is " & Grade
End Sub

การแสดงผลคลิกที่ปุ่ม Button เพื่อแสดงผล

รูปที่ 8.14
1.เมื่อคลิกปุ่ม Button ไดอะล็อคบล็อคเพื่อรับค่าจะปรากฏขึ้น ให้พิมพ์คะแนนลงไป
แล้วกดปุ่ม OK โปรแกรมจะแสดงผลของเกรดออกมา


3. ประโยคแบบวนซ้ำ (Iteration Statement)
3.1ประโยคแบบวนซ้ำ FOR NEXT
เป็นการวนซ้ำของกลุ่มคำสั่ง โดยกำหนดจำนวนรอบ
Syntax โครงสร้าง
For counter = start To end [Step step]
[คำสั่ง]
[Exit For]
[คำสั่ง]
Next [counter]

ตัวอย่าง พิมพ์ค่า 1 ถึง 10 ในเรียงลงมาในคอลัมป์ A
วิธีทำ 
1.เปิดโปรแกรมเอ็กเซลล์
2.เปิดไฟล์ใหม่
3.เลือกปุ่ม Button (ถ้าไม่มีให้คลิกขวาที่เมนู แล้วคลิกเลือก Forms)
4.คลิกเม้าส์ซ้ายค้างแล้วลากเม้าส์ เพื่อวาดปุ่ม Button
5.จากนั้นวินโดว์ Assign macro จะเปิดขึ้นมา ให้คลิกเลือกปุ่ม New

รูปที่ 8.15

6.เมื่อหน้าต่าง Visual Basic Editor เปิดขึ้น ให้พิมพ์คำสั่งดังนี้
Sub for_next()
Dim i As Integer
For i = i To 10
Cells(i,1) = i
Next i
End Sub

การแสดงผลคลิกที่ปุ่ม Button เพื่อแสดงผล
เมื่อกดปุ่ม Button 5 โปรแกรมจะแสดงค่าในเซลล์ ตั้งแต่ 1 ถึง 10 ดังรูป

รูปที่ 8.16


3.2 ประโยคแบบวนซ้ำ (Iteration Statement) DO-WHILE-LOOP
Do While จะวนลูปก็ต่อเมื่อเงื่อนไข ยังเป็นจริงอยู่ ถ้าเงื่อนไขดังกล่าวเป็นเท็จ ก็จะออกจากลูปทันที การใช้ Do While นี้ มีโอกาสที่จะไม่วนลูปเลยถ้าเงื่อนไขที่เข้ามาเป็นเท็จ
Syntax โครงสร้าง
Do While <เงื่อนไข>
คำสั่ง
[Exit Do]
Loop

ตัวอย่าง หาผลรวมสะสมของข้อมูล ทีละแถวข้อมูล ตั้งแต่เซลล์ A1 ถึง A10
วิธีทำ
1.เปิดโปรแกรมเอ็กเซลล์
2.เปิดไฟล์ใหม่ พิมพ์ค่า ลงในเซลล์ A1 ถึง A10 ดังรูป
3.เลือกปุ่ม Button (ถ้าไม่มีให้คลิกขวาที่เมนู แล้วคลิกเลือก Forms)
4.คลิกเม้าส์ซ้ายค้างแล้วลากเม้าส์ เพื่อวาดปุ่ม Button
5.จากนั้นวินโดว์ Assign macro จะเปิดขึ้นมา ให้คลิกเลือกปุ่ม New

รูปที่ 8.17
6.เมื่อหน้าต่าง Visual Basic Editor เปิดขึ้น ให้พิมพ์คำสั่งดังนี้

Sub do_while_loop()
Dim i As Integer
Dim total As Integer
i = 1
Do While Cells(i, 1) <> ""
total = total + Cells(i, 1)
Cells(i, 2) = total
i = i + 1
Loop
End Sub
ผลลัพธ์

รูปที่ 8.18
ทดลองลบข้อมูลในเซลล์ A1 ออก แล้วลองกดปุ่ม Button จะเห็นว่า ไม่มีผลการคำนวนปรากฏออกมาเนื่องจาก การควบคุมทิศทางของโปรแกรมแบบ DO WHILE LOOP จะมีการตรวจสอบเงื่อนไขก่อนทำตามคำสั่งในลูป ดังนั้นเมื่อข้อมูลในเซลล์ A1 ไม่มีค่า หรือว่างเปล่า โปรแกรมจึงออกจากลูปทันที ทำให้ไม่มีการคำนวนในแถวข้อมูลถัดไป


รูปที่ 8.19


3.3คำสั่ง Do-Loop While
คำสั่งนี้ มีลักษณะจะทำตามคำสั่งในลูปอย่างน้อย 1 รอบ แล้วจึงตรวจสอบเงื่อนไข ถ้าเป็นจริง ก็จะทำงานตามคำสั่งในลูปต่อไป แต่ถ้าเป็นเท็จ ก็จะออกจากลูป
Syntax โครงสร้าง
Do
คำสั่ง
[Exit Do]
Loop While <เงื่อนไข>


ตัวอย่าง หาผลรวมสะสมของข้อมูล ทีละแถวข้อมูล ตั้งแต่เซลล์ A1 ถึง A10
วิธีทำ
1.เปิดโปรแกรมเอ็กเซลล์
2.เปิดไฟล์ใหม่ พิมพ์ค่า ลงในเซลล์ A1 ถึง A10 ดังรูป
3.เลือกปุ่ม Button (ถ้าไม่มีให้คลิกขวาที่เมนู แล้วคลิกเลือก Forms)
4.คลิกเม้าส์ซ้ายค้างแล้วลากเม้าส์ เพื่อวาดปุ่ม Button
5.จากนั้นวินโดว์ Assign macro จะเปิดขึ้นมา ให้คลิกเลือกปุ่ม New

รูปที่ 8.20
6.เมื่อหน้าต่าง Visual Basic Editor เปิดขึ้น ให้พิมพ์คำสั่งดังนี้
Sub do_loop_while()
Dim i As Integer
Dim total As Integer
i = 1
Do
total = total + Cells(i, 1)
Cells(i, 2) = total
i = i + 1
Loop While Cells(i, 1) <> ""
End Sub
ผลลัพธ์

รูปที่ 8.21

ทดลองลบข้อมูลในเซลล์ A1 ออก แล้วลองกดปุ่ม Button จะเห็นว่า มีผลการคำนวนปรากฏออกมาเนื่องจาก การควบคุมทิศทางของโปรแกรมแบบ DO LOOP WHILE จะมีการทำตามคำสั่งในลูปก่อน 1 ครั้ง แล้วจึงตรวจสอบเงื่อนไข ดังนั้นแม้ข้อมูลในเซลล์ A1 จะไม่มีค่า หรือว่างเปล่า โปรแกรมก็ยังทำงานต่อไป จนกลับเข้าลูปอีกครั้ง ซึ่งในเซลล์ A2 นั้น ไม่ได้ว่างเปล่า จึงทำให้โปรแกรมทำงานต่อไป


รูปที่ 8.22



3.4คำสั่ง Do Until-Loop
คำสั่งนี้มีหน้าที่สั่งให้วนลูปเช่นกัน มีจำนวนรอบขึ้นอยู่กับเงื่อนไข ถ้าเงื่อนไขเป็นเท็จ จึงจะวนลูป แต่ถ้าเงื่อนไขเป็นจริงจะออกจากลูป
Syntax โครงสร้าง
Do Until <เงื่อนไข>
คำสั่ง
[Exit Do]
คำสั่ง
Loop

ตัวอย่าง หาผลรวมสะสมของข้อมูล ทีละแถวข้อมูล ตั้งแต่เซลล์ A1 ถึง A10
วิธีทำ 
1.เปิดโปรแกรมเอ็กเซลล์
2.เปิดไฟล์ใหม่ พิมพ์ค่า ลงในเซลล์ A1 ถึง A10 ดังรูป
3.เลือกปุ่ม Button (ถ้าไม่มีให้คลิกขวาที่เมนู แล้วคลิกเลือก Forms)
4.คลิกเม้าส์ซ้ายค้างแล้วลากเม้าส์ เพื่อวาดปุ่ม Button
5.จากนั้นวินโดว์ Assign macro จะเปิดขึ้นมา ให้คลิกเลือกปุ่ม New

รูปที่ 8.23

6.เมื่อหน้าต่าง Visual Basic Editor เปิดขึ้น ให้พิมพ์คำสั่งดังนี้
Sub do_until_loop()
Dim i As Integer
Dim total As Integer
i = 1
Do Until Cells(i, 1) = ""
total = total + Cells(i, 1)
Cells(i, 2) = total
i = i + 1
Loop
End Sub
ผลลัพธ์

รูปที่ 8.24

ทดลองลบข้อมูลในเซลล์ A1 ออก แล้วลองกดปุ่ม Button จะเห็นว่า ไม่มีผลการคำนวนปรากฏออกมาเนื่องจาก การควบคุมทิศทางของโปรแกรมแบบ DO UNTIL LOOP จะมีการตรวจสอบเงื่อนไขก่อนทำตามคำสั่งในลูป ดังนั้นเมื่อข้อมูลในเซลล์ A1 ไม่มีค่า หรือว่างเปล่า โปรแกรมจึงออกจากลูปทันที ทำให้ไม่มีการคำนวนในแถวข้อมูลถัดไป


รูปที่ 8.25


3.5คำสั่ง Do-Loop Until
คำสั่ง Do-Loop Until จะทำตามคำสั่งก่อน 1 รอบ แล้วจึงตรวจสอบเงื่อนไข ถ้าเงื่อนไขเป็นจริง จะออกจากลูปทันที การใช้ลูปแบบนี้จะมีการทำงานตามคำสั่งก่อน อย่างน้อยที่สุด 1 รอบ แล้วจึงทำการตรวจสอบเงื่อนไข
Syntax โครงสร้าง
Do
คำสั่ง
[Exit Do]
คำสั่ง
Loop Until <เงื่อนไข>

ตัวอย่าง หาผลรวมสะสมของข้อมูล ทีละแถวข้อมูล ตั้งแต่เซลล์ A1 ถึง A10
วิธีทำ
1.เปิดโปรแกรมเอ็กเซลล์
2.เปิดไฟล์ใหม่ พิมพ์ค่า ลงในเซลล์ A1 ถึง A10 ดังรูป
3.เลือกปุ่ม Button (ถ้าไม่มีให้คลิกขวาที่เมนู แล้วคลิกเลือก Forms)
4.คลิกเม้าส์ซ้ายค้างแล้วลากเม้าส์ เพื่อวาดปุ่ม Button
5.จากนั้นวินโดว์ Assign macro จะเปิดขึ้นมา ให้คลิกเลือกปุ่ม New

รูปที่ 8.26
6.เมื่อหน้าต่าง Visual Basic Editor เปิดขึ้น ให้พิมพ์คำสั่งดังนี้
Sub do_loop_until()
Dim i As Integer
Dim total As Integer
i = 1
Do
total = total + Cells(i, 1)
Cells(i, 2) = total
i = i + 1
Loop Until Cells(i, 1) = ""
End Sub
ผลลัพธ์

รูปที่ 8.27
ทดลองลบข้อมูลในเซลล์ A1 ออก แล้วลองกดปุ่ม Button จะเห็นว่า มีผลการคำนวนปรากฏออกมาเนื่องจาก การควบคุมทิศทางของโปรแกรมแบบ DO LOOP UNTIL จะมีทำตามคำสั่งในลูปก่อน 1 ครั้ง แล้วจึงตรวจสอบเงื่อนไข ดังนั้นแม้ข้อมูลในเซลล์ A1 จะไม่มีค่า หรือว่างเปล่า โปรแกรมก็ยังทำงานต่อไป จนกลับเข้าลูปอีกครั้ง ซึ่งในเซลล์ A2 นั้น ไม่ได้ว่างเปล่า จึงทำให้โปรแกรมทำงานต่อไป


รูปที่ 8.28



การนับและการสะสมค่า
COUNTING (การนับ)
ในการวนซ้ำของโปรแกรม หรือการประมวลผล อาจจำเป็นต้องการนับค่าทั้งหมดของข้อมูล เพื่อประมวลผลของตัวแปรในลักษณะของการนับค่า เช่น จำนวนพนักงานมีกี่คน จำนวนแถวข้อมูลมีกี่แถว จำนวนการวนรอบการทำงานมีกี่รอบ
ตัวแปรของการนับ = ตัวแปรของการนับ+1
สมมติให้ Count เป็นตัวแปรจำนวนพนักงาน
Count = Count+1

ACCUMULATION (การสะสมค่า)
ในการวนซ้ำของโปรแกรม หรือการประมวลผล นอกจากการนับค่าแล้ว อาจมีความจำเป็นที่จะต้องหาค่าผลรวมทั้งหมด เช่น ผลรวมของอายุพนักงาน ผลรวมของชั่วโมงทำงานของพนักงานทั้งหมด โดยกำหนดตัวแปรให้เก็บค่าผลรวมทั้งหมด
ตัวแปรเก็บค่าสะสม= ตัวแปรเก็บค่าสะสม+ตัวแปรที่ต้องการสะสมค่า
สมมติให้ Total_Age เป็นตัวแปรแทนอายุของพนักงานสะสม
years เป็นตัวแปรของอายุพนักงานแต่ละคน
Total_Age= Total_Age+years



ตัวอย่างโปรแกรม นับจำนวนชายหญิง และหาค่าผลรวมของอายุโดยแยกชายและหญิง

ผังงาน


รูปที่ 8.29
วิธีทำ 1.เปิดโปรแกรมเอ็กเซลล์
2.เปิดไฟล์ใหม่ แล้วพิมพ์ค่าลงในตารางตามรูป
3.เลือกปุ่ม Button (ถ้าไม่มีให้คลิกขวาที่เมนู แล้วคลิกเลือก Forms)
4.คลิกเม้าส์ซ้ายค้างแล้วลากเม้าส์ เพื่อวาดปุ่ม Button
5.จากนั้นวินโดว์ Assign macro จะเปิดขึ้นมา ให้คลิกเลือกปุ่ม New

รูปที่ 8.30

6.เมื่อหน้าต่าง Visual Basic Editor เปิดขึ้น ให้พิมพ์คำสั่งดังนี้
Sub counting_accumulate()
i = 1
Do While Cells(i, 1) <> ""
If Cells(i, 2) = "male" Then count_male = count_male + 1
If Cells(i, 2) = "male" Then Totalage_male = Totalage_male + Cells(i, 3)
If Cells(i, 2) = "female" Then count_female = count_female + 1
If Cells(i, 2) = "female" Then Totalage_female = Totalage_female + Cells(i, 3)
i = i + 1
Loop
MsgBox "Male = " & count_male & "Total age =" & Totalage_male & Chr(10)&_ "Female = " & count_female & "Total age = " & Totalage_female
End Sub
ทดสอบโปรแกรม
1.กดปุ่ม Button
2.เมื่อกดปุ่ม Button แล้ว จะมี Message box แสดงผลการคำนวนนับจำนวนชาย และหญิง รวมทั้งคำนวนอายุสะสมโดยแยกชายและหญิง ดังรูป



รูปที่ 8.31

คอนโทรล1


ในการเขียน VBA จำเป็นต้องทราบถึงคอนโทรลมาตรฐาน (Standard Toolbox Controls) ที่เป็นองค์ประกอบสำคัญของการพัฒนาโปรแกรม ในบทนี้จะได้ทำความรู้จักคอนโทรลพื้นฐานต่างๆ ที่นำมาสร้างเป็นส่วนประกอบบนฟอร์ม โดยคอนโทรลจะมีองค์ประกอบที่สำคัญ 3 อย่างคือ
1. Property คือคุณสมบัติของคอนโทรล เช่น ขนาดความกว้าง ความสูง สีพื้น ขนาดตัวอักษร เป็นต้น
2. Method คือ ที่คอนโทรลนั้นสามารถทำได้ เช่น การ Copy Cut Paste เป็นต้น
3. Event คือ เหตุการณ์ที่เกิดขึ้นกับคอนโทรล เพื่อสั่งให้โปรแกรมในคอนโทรลนั้นๆ ทำงาน เช่น การคลิก การดับเบิ้ลคลิก การกดปุ่ม Enter เป็นต้น


รูปที่ 7.1



1.Select Objects
ใช้สำหรับเลือกคอนโทรล ในกล่องเครื่องมือ Toolbox หรือใช้ในการปรับแต่งขนาดหรือเคลื่อนย้ายคอนโทรลที่วาดไว้บนฟอร์ม (form)


รูปที่ 7.2

ตัวอย่างที่ 1 การใช้งาน Select Objects เพื่อสร้าง Label1 บนฟอร์ม
1. เปิดโปรแกรมเอ็กเซลล์
2. เปิดหน้าต่าง Visual Basic Editor โดยที่เมนูบาร์คลิก Tools>Macro> Visual Basic Editor
3. เมื่อหน้าจอ Visual Basic Editor ปรากฏขึ้น ให้คลิกเลือก Insert > UserForm
4. UserForm1 จะปรากฏขึ้น ให้ปรับขนาดตามต้องการโดยการคลิกลากส่วนขอบของ UserForm1 หรืออาจกำหนดขนาดในหน้าต่างพร็อพเพอร์ตี้ก็ได้

รูปที่ 7.3
5. คลิกเลือก Label1 ที่ ToolBox แล้วนำมาวาดบนฟอร์ม


รูปที่ 7.4
6. การนำ Label1 มาวาดบนฟอร์โดยการคลิกลงบนฟอร์ม และลากเมาส์ลงมาทางมุมขวาล่าง เพื่อให้ได้ขนาดที่ต้องการ

รูปที่ 7.5

รูปที่ 7.6
7. เมื่อได้ขนาดที่ต้องการแล้ว ให้ปล่อยเม้าส์จะได้ Label1 บนฟอร์ม และให้สังเกตุว่า Select Objects จะถูกเลือกโดยอัตโนมัติ เพื่อรอให้นำไปปรับแต่ง ตำแหน่ง หรือขนาดของคอนโทรล ให้เหมาะสมตามต้องการ จากรูปด้านล่างจะเป็นการใช้ Select Objects ปรับขนาดของ Label1 ที่กรอบด้านล่าง ให้มีขนาดกว้างขึ้น

รูปที่ 7.7

2.Label
คอนโทรล Label ใช้ในการทำป้ายชื่อหรือแสดงข้อความ ซึ่งการป้อนข้อความสามารถกระทำได้โดยตรงบนตัว control หรือที่พร็อพเพอร์ตี้ caption ก็ได้

รูปที่ 7.8
คุณสมบัติ (propertis) ที่สำคัญของ Label
Name ใช้สำหรับกำหนดชื่อของคอนโทรล
AutoSize ใช้สำหรับกำหนดขนาดของ Label ให้มีขนาดพอดีกับข้อมูลโดยอัตโนมัติ
BackColor ใช้สำหรับกำหนดสีพื้น หลัง
BackStyle ใช้สำหรับกำหนดรูปแบบของพื้นหลังให้เป็นแบบทึบหรือโปร่งใส
BorderStyle ใช้สำหรับกำหนดรูปแบบของเส้นขอบ
Caption ใช้สำหรับกำหนดข้อความ
Enabled ใช้สำหรับกำหนดให้คอนโทรลสามารถใช้งานได้
Font ใช้สำหรับกำหนดรูปแบบตัวอักษร
ForeColor ใช้สำหรับกำหนดสีตัวอักษร
Visible ใช้สำหรับกำหนดให้ซ่อนหรือแสดง Label
เหตุการณ์ (Event) ที่สำคัญของ Label
Click เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการคลิกที่คอนโทรล
DblClick เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการ ดับเบิ้ลคลิกที่คอนโทรล
MouseDown เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการเคลื่อนเมาส์ลงผ่าน คอนโทรล
MouseUp เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการเคลื่อนเมาส์ขึ้นผ่าน คอนโทรล

3.TextBox
ใช้ในการใส่ข้อมูลทั้งตัวอักษรและตัวเลข ที่ผู้ใช้สามารถเปลี่ยนค่าได้

รูปที่ 7.9
คุณสมบัติ (properties) ที่สำคัญของ TextBox
Name ใช้สำหรับกำหนดชื่อของคอนโทรล
BackColor ใช้สำหรับกำหนดสีพื้น
BorderStyle ใช้สำหรับกำหนดรูปแบบของเส้นขอบ
Enabled ใช้สำหรับกำหนดให้คอนโทรลสามารถใช้งานได้
Font ใช้สำหรับกำหนดรูปแบบตัวอักษร
ForeColor ใช้สำหรับกำหนดสีตัวอักษร
Locked ใช้สำหรับกำหนดให้คอนโทรล ไม่สามารถใช้งานได้
MaxLength ใช้สำหรับกำหนดความยาวของข้อมูลตัวอักษรที่สามารถพิมพ์ได้
MultiLine ใช้สำหรับกำหนดให้ TextBox สามารถพิมพ์ได้หลายบรรทัด
PasswordChar ใช้สำหรับกำหนดตัวอักษรที่ต้องการให้แสดงขณะที่พิมพ์
TabIndex ใช้สำหรับกำหนดลำดับของ Control ที่ใช้ใน Form
Text ใช้สำหรับกำหนดข้อความใน TextBox
Value ใช้สำหรับระบุสถานะหรือกำหนดข้อมูลให้กับคอนโทรล
Visible ใช้สำหรับกำหนดให้ซ่อนหรือแสดง TextBox
เมธอดที่สำคัญของ TextBox
Copy เป็นคำสั่งคัดลอกข้อมูลจากคอนโทรล
Cut เป็นคำสั่งนำข้อมูลออกจากคอนโทรล
Paste เป็นคำสั่งถ่ายโอนข้อมูลมาไว้ที่คอนโทรล
เหตุการณ์ (Event) ที่สำคัญของ TextBox
Change เป็นเหตุการณ์ที่เกิดขึ้นเมื่อข้อมูลของ TextBox มีการเปลี่ยนแปลง
DblClick เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการดับเบิ้ลคลิกที่คอนโทรล
Enter เป็นเหตุการณืที่เกิดขึ้นเมื่อมีการกดปุ่ม Enter
KeyPress เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการกดปุ่มใด ๆ บนคีย์บอร์ด
MouseDown เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการเคลื่อนเมาส์ลงผ่าน คอนโทรล
MouseUp เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการเคลื่อนเมาส์ขึ้นผ่าน คอนโทรล

ตัวอย่างที่ 2 การสร้างฟอร์มที่ประกอบด้วยคอนโทรล Label และ TextBox
1. เปิดโปรแกรมเอ็กเซลล์
2. เปิดหน้าต่าง Visual Basic Editor โดยที่เมนูบาร์คลิก Tools>Macro> Visual Basic Editor
3. เมื่อหน้าจอ Visual Basic Editor ปรากฏขึ้น ให้คลิกเลือก Insert > UserForm
4. UserForm1 จะปรากฏขึ้น ให้ปรับขนาดตามต้องการโดยการคลิกลากส่วนขอบของ UserForm1 หรืออาจกำหนดขนาดในหน้าต่างพร็อพเพอร์ตี้ก็ได้
5. ใส่ Label1 เพื่อเป็นป้ายชื่อกำกับ หรือใส่คำอธิบาย โดยในกล่องเครื่องมือ Toolbox คลิกที่คอนโทรล Label แล้วนำไปวางบน Userform1
6. ใส่ Label2 เพื่อใช้แสดงค่าที่พิมพ์จาก Textbox1
7. ใส่ TextBox1 เพื่อป้อนค่าหรือพิมพ์ตัวอักษร
8. จะได้ Userform1 ที่ประกอบด้วยคอนโทรลต่างๆ ดังรูป

รูปที่ 7.10
9. กำหนดค่าคุณสมบัติ (property) ให้แต่ละคอนโทรลดังนี้
คอนโทรล พร็อพเพอร์ตี้ ค่าที่กำหนด
UserForm1 Caption LABEL AND TEXT
Height 197
Width 300
Label1 Caption Please type some text
Height 24
Width 240
Label2 Caption -
BorderStyle 1-fmBorderStyleSingle
Height 42
Width 240
TextBox1 Height 25
Width 240

10. เมื่อใส่ค่าพร็อพเพอร์ตี้ที่กำหนดแล้วจะได้ UserForm1ดังนี้


รูปที่ 7.11
11. ใส่โค๊ดคำสั่งใน TextBox1 โดยการดับเบิ้ลคลิกที่ TextBox1 หน้าต่างโค๊ดคำสั่งจะปรากฏขึ้นมา ให้พิมพ์คำสั่งดังนี้
Private Sub TextBox1_Change()
Label2 = TextBox1.Text
End Sub


รูปที่ 7.12
12. ทดสอบโปรแกรม โดยการกลับไปที่หน้าต่าง Worksheet แล้วสร้างปุ่ม Button1 ขึ้นมา (ถ้าไม่มีปุ่ม Button1 ให้คลิกขวาที่เมนู แล้วคลิกเลือก Forms) คลิกเม้าส์ซ้ายค้างแล้วลากเม้าส์ เพื่อวาดปุ่ม Button1


รูปที่ 7.13
13. จากนั้นวินโดว์ Assign macro จะเปิดขึ้นมา ให้คลิกเลือกปุ่ม New
14. เมื่อหน้าต่าง Visual Basic Editor เปิดขึ้น ให้พิมพ์คำสั่งดังนี้
Sub Button1_Click()
UserForm1.Show
End Sub

รูปที่ 7.14
15. การแสดงผล ให้คลิกที่ปุ่ม Button1 เพื่อเรียก UserForm1 ขึ้นมา

รูปที่ 7.15
16. ทดลองพิมพ์อักษรใดๆ ลงไปใน TextBox1 จะเห็นว่า Label2 แสดงค่าตามที่พิมพ์ลงใน TextBox1 ขึ้นมาทันที

รูปที่ 7.16


4.ComboBox
คอนโทรล ComboBox เป็นคอนโทรลที่รวมเอาคุณลักษณะของ ListBox และ TextBox เอาไว้ด้วยกัน ซึ่งผู้ใช้สามารถเลือกข้อมูลจากรายการ หรือพิมพ์ค่าลงไปได้

รูปที่ 7.17
คุณสมบัติ (properties) ที่สำคัญของ ComboBox
Name ใช้สำหรับกำหนดชื่อของคอนโทรล
BackColor ใช้สำหรับกำหนดสีพื้น
ColumnCount ใช้ระบุจำนวนคอลัมป์ให้แสดงใน ComboBox หรือ ListBOx
Font ใช้สำหรับกำหนดรูปแบบตัวอักษร
ForeColor ใช้สำหรับกำหนดสีตัวอักษร
List Rowsใช้สำหรับกำหนดแถวของข้อมูลที่แสดงในรายการ
Locked ใช้สำหรับกำหนดให้คอนโทรล ไม่สามารถใช้งานได้
RowSource ใช้สำหรับกำหนดแหล่งข้อมูล
Style ใช้สำหรับกำหนดรูปแบบของ ComboBox
TabIndex ใช้สำหรับกำหนดลำดับของ Control ที่ใช้ใน Form
Text ใช้สำหรับกำหนดข้อความใน ComboBox
Visible ใช้สำหรับกำหนดให้ซ่อนหรือแสดง ComboBox
เมธอดที่สำคัญของ ComboBox
AddItem เป็นคำสั่งสำหรับเพิ่มตัวเลือกเข้าไปใน ComboBox
Clear เป็นคำสั่งสำหรับลบข้อมูลทั้งหมดใน ComboBox
Copy เป็นคำสั่งคัดลอกข้อมูลจากคอนโทรล
Cut เป็นคำสั่งนำข้อมูลออกจากคอนโทรล
Paste เป็นคำสั่งถ่ายโอนข้อมูลมาไว้ที่คอนโทรล
RemoveItem เป็นคำสั่งสำหรับลบข้อมูลโดยระบุลำดับข้อมูลที่ต้องการลบ
เหตุการณ์ (Event) ที่สำคัญของ ComboBox
Change เป็นเหตุการณ์ที่เกิดขึ้นเมื่อค่าคุณสมบัติ value มีการเปลี่ยนแปลง
Click เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการกดปุ่มเลื่อนตำแหน่งหรือ Click Mouse
DblClick เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการ ดับเบิ้ลคลิกที่คอนโทรล
Enter เป็นเหตุการณืที่เกิดขึ้นเมื่อมีการกดปุ่ม Enter
KeyPress เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการกดปุ่มใด ๆ บนคีย์บอร์ด
MouseDown เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการเคลื่อนเมาส์ลงผ่าน คอนโทรล
MouseUp เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการเคลื่อนเมาส์ขึ้นผ่าน คอนโทรล

5.ListBox
คอนโทรล ListBox เป็นคอนโทรลที่ใช้เพื่อแสดงรายการข้อมูล ที่ผู้ใช้สามารถเลือกได้

รูปที่ 7.18
คุณสมบัติ (properties) ที่สำคัญของ ListBox
Name ใช้สำหรับกำหนดชื่อของคอนโทรล
BackColor ใช้สำหรับกำหนดสีพื้น
ColumnCount ใช้ระบุจำนวนคอลัมป์ให้แสดงใน ComboBox หรือ ListBOx
Font ใช้สำหรับกำหนดรูปแบบตัวอักษร
ForeColor ใช้สำหรับกำหนดสีตัวอักษร
ListStyle ใช้สำหรับกำหนดรูปแบบของ ListBox
Locked ใช้สำหรับกำหนดให้คอนโทรล ไม่สามารถใช้งานได้
RowSource ใช้สำหรับกำหนดแหล่งข้อมูล
TabIndex ใช้สำหรับกำหนดลำดับของ Control ที่ใช้ใน Form
Text ใช้สำหรับกำหนดข้อความใน ListBox
Visible ใช้สำหรับกำหนดให้ซ่อนหรือแสดง ListBox
Value ใช้สำหรับระบุสถานะหรือกำหนดข้อมูลให้กับคอนโทรล
เมธอดที่สำคัญของ ListBox
AddItem เป็นคำสั่งสำหรับเพิ่มตัวเลือกเข้าไปใน ListBox
Clear เป็นคำสั่งสำหรับลบข้อมูลทั้งหมดใน ListBox
RemoveItem เป็นคำสั่งสำหรับลบข้อมูลโดยระบุลำดับข้อมูลที่ต้องการลบ
เหตุการณ์ (Event) ที่สำคัญของ ListBox
Change เป็นเหตุการณ์ที่เกิดขึ้นเมื่อค่าคุณสมบัติ value มีการเปลี่ยนแปลง
Click เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการคลิกเม้าส์ที่คอนทรล
DblClick เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการดับเบิ้ลคลิกเม้าส์ที่คอนทรล
Enter เป็นเหตุการณืที่เกิดขึ้นเมื่อมีการกดปุ่ม Enter
MouseDown เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการเคลื่อนเมาส์ลงผ่าน คอนโทรล
MouseUp เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการเคลื่อนเมาส์ขึ้นผ่าน คอนโทรล

ตัวอย่างที่ 3 การสร้างฟอร์มที่ประกอบด้วยคอนโทรล ListBox และ ComboBox
1. เปิดโปรแกรมเอ็กเซลล์
2. เปิดหน้าต่าง Visual Basic Editor โดยที่เมนูบาร์คลิก Tools>Macro> Visual Basic Editor
3. เมื่อหน้าจอ Visual Basic Editor ปรากฏขึ้น ให้คลิกเลือก Insert > UserForm
4. UserForm1 จะปรากฏขึ้น ให้ปรับขนาดตามต้องการโดยการคลิกลากส่วนขอบของ UserForm1 หรืออาจกำหนดขนาดในหน้าต่างพร็อพเพอร์ตี้ก็ได้
5. ใส่ Label1 เพื่อใช้แสดงค่าเมื่อมีการเลือกข้อมูลจาก ListBox1 หรือ ComboBox1
6. ใส่ ListBox1 เพื่อแสดงค่าจากตารางข้อมูล
7. ใส่ ComboBox1 เพื่อแสดงค่าจากตารางข้อมูล
8. จะได้ Userform1 ที่ประกอบด้วยคอนโทรลต่างๆ ดังรูป

รูปที่ 7.19
9. กำหนดค่าคุณสมบัติ (property) ให้แต่ละคอนโทรลดังนี้
คอนโทรล พร็อพเพอร์ตี้ ค่าที่กำหนด
UserForm1 Caption ListBox and ComboBox
Height 195
Left 0
Top 0
Width 380
Label1 Caption ชื่อพนักงาน
Height 24
Width 108
Label2 Caption -
Height 24
Width 198
ListBox1 Caption -
BorderStyle 0-fmBorderStyleNone
Height 89
Width 150
RowSource sheet1!a:a
ComboBox1 Caption -
BorderStyle 0-fmBorderStyleNone
Height 24
Width 150
RowSource sheet1!a:a

10. เมื่อใส่ค่าคุณสมบัติ (property) ที่กำหนดแล้วจะได้ UserForm1 ดังนี้

รูปที่ 7.20
11. ใส่โค๊ดคำสั่งใน ListBox1 โดยการดับเบิ้ลคลิกที่ ListBox1 หน้าต่างโค๊ดคำสั่งจะปรากฏขึ้นมา ให้พิมพ์คำสั่งดังนี้
Private Sub ListBox1_Click()
Label2.Caption = ListBox1.Value
End Sub
12. ใส่โค๊ดคำสั่งใน ComboBox1 โดยการดับเบิ้ลคลิกที่ ComboBox1 หน้าต่างโค๊ดคำสั่งจะปรากฏขึ้นมา ให้พิมพ์คำสั่งดังนี้
Private Sub ComboBox1_Change()
Label2.Caption = ComboBox1.Value
End Sub

รูปที่ 7.21
13. ทดสอบโปรแกรม โดยการกลับไปที่หน้าต่าง Worksheet แล้วพิมพ์ชื่อพนักงานในคอลัมน์ A เพื่อสร้างเป็นฐานข้อมูลใช้ทดสอบโปรแกรม
14. สร้างปุ่ม Button1 ขึ้นมา (ถ้าไม่มีปุ่ม Button ให้คลิกขวาที่เมนู แล้วคลิกเลือก Forms) คลิกเม้าส์ซ้ายค้างแล้วลากเม้าส์ เพื่อวาดปุ่ม Button1
15. จากนั้นวินโดว์ Assign macro จะเปิดขึ้นมา ให้คลิกเลือกปุ่ม New
16. เมื่อหน้าต่าง Visual Basic Editor เปิดขึ้น ให้พิมพ์คำสั่งดังนี้
Sub Button1_Click()
UserForm1.Show
End Sub

รูปที่ 7.22
17. ทดสอบโปรแกรม โดยคลิกที่ปุ่ม Button1 เพื่อเรียก UserForm1 ขึ้นมา

รูปที่ 7.23

18. ทดลองคลิกเลือกชื่อพนักงานใน ListBox1 จะเห็นว่า Label2 แสดงค่าตามที่คลิกในคอนโทรล เช่น คลิก NAME7 ใน ListBox1 ทำให้ Label2 แสดงชื่อพนักงาน NAME7 ขึ้นมา

รูปที่ 7.24
19. ทดลองคลิกเลือกชื่อพนักงานใน ComboBox1 จะเห็นว่า Label2 แสดงค่าตามที่คลิกในคอนโทรล เช่น คลิก NAME9 ใน ComboBox1 ทำให้ Label2 แสดงชื่อพนักงาน NAME9 ขึ้นมา

รูปที่ 7.25

6.CheckBox
คอนโทรล CheckBox เป็นคอนโทรล ใช้สร้างปุ่มตัวเลือกแบบเฉพาะเจาะจง หรือเลือกได้หลายรายการ

รูปที่ 7.26

คุณสมบัติ (properties) ที่สำคัญของ CheckBox
Name ใช้สำหรับกำหนดชื่อของคอนโทรล
Alignment ใช้สำหรับกำหนดตำแหน่งของข้อมูลบน CheckBox
BackColor ใช้สำหรับกำหนดสีพื้น
Caption ใช้สำหรับกำหนดข้อความ
Font ใช้สำหรับกำหนดรูปแบบตัวอักษร
ForeColor ใช้สำหรับกำหนดสีตัวอักษร
TabIndex ใช้สำหรับกำหนดลำดับของ Control ที่ใช้ใน Form
Value ใช้สำหรับระบุสถานะหรือกำหนดข้อมูลให้กับคอนโทรล
Visible ใช้สำหรับกำหนดให้ซ่อนหรือแสดง CheckBox
เหตุการณ์ (Event) ที่สำคัญของ CheckBox
Change เป็นเหตุการณ์ที่เกิดขึ้นเมื่อค่าคุณสมบัติ value มีการเปลี่ยนแปลง
Click เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการคลิกที่คอนโทรล
DblClick เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการ ดับเบิ้ลคลิกที่คอนโทรล
Enter เป็นเหตุการณืที่เกิดขึ้นเมื่อมีการกดปุ่ม Enter
MouseDown เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการเคลื่อนเมาส์ลงผ่าน คอนโทรล
MouseUp เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการเคลื่อนเมาส์ขึ้นผ่าน คอนโทรล

7.OptionButton
คอนโทรล OptionButton เป็นคอนโทรลที่ใช้สร้างปุ่มตัวเลือกแบบเฉพาะเจาะจง เพียงรายการเดียว

รูปที่ 7.27

คุณสมบัติ (properties) ที่สำคัญของ OptionButton
Name ใช้สำหรับกำหนดชื่อของคอนโทรล
Alignment ใช้สำหรับกำหนดตำแหน่งของข้อมูลบน OptionButton
BackColor ใช้สำหรับกำหนดสีพื้น
Caption ใช้สำหรับกำหนดข้อความ
Font ใช้สำหรับกำหนดรูปแบบตัวอักษร
ForeColor ใช้สำหรับกำหนดสีตัวอักษร
TabIndex ใช้สำหรับกำหนดลำดับของ Control ที่ใช้ใน Form
Value ใช้สำหรับระบุสถานะหรือกำหนดข้อมูลให้กับคอนโทรล
Visible ใช้สำหรับกำหนดให้ซ่อนหรือแสดง OptionButton
เหตุการณ์ (Event) ที่สำคัญของ OptionButton
Change เป็นเหตุการณ์ที่เกิดขึ้นเมื่อค่าคุณสมบัติ value มีการเปลี่ยนแปลง
Click เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการคลิกที่คอนโทรล
DblClick เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการ ดับเบิ้ลคลิกที่คอนโทรล
Enter เป็นเหตุการณืที่เกิดขึ้นเมื่อมีการกดปุ่ม Enter
MouseDown เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการเคลื่อนเมาส์ลงผ่าน คอนโทรล
MouseUp เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการเคลื่อนเมาส์ขึ้นผ่าน คอนโทรล

8.ToggleButton
คอนโทรล ToggleButton เป็นคอนโทรลที่ใช้สร้างปุ่มตัวเลือก ที่ใช้กับข้อมูลประเภท Boolean เช่น on/off, True/False

รูปที่ 7.28

คุณสมบัติ (properties) ที่สำคัญของ ToggleButton
Name ใช้สำหรับกำหนดชื่อของคอนโทรล
BackColor ใช้สำหรับกำหนดสีพื้น
Caption ใช้สำหรับกำหนดข้อความ
Enabled ใช้สำหรับกำหนดให้คอนโทรลสามารถใช้งานได้
Font ใช้สำหรับกำหนดรูปแบบตัวอักษร
ForeColor ใช้สำหรับกำหนดสีตัวอักษร
TabIndex ใช้สำหรับกำหนดลำดับของคอนโทรลที่ใช้ใน Form
Value ใช้สำหรับระบุสถานะหรือกำหนดข้อมูลให้กับคอนโทรล
Visible ใช้สำหรับกำหนดให้ซ่อนหรือแสดง
เหตุการณ์ (Event) ที่สำคัญของ ToggleButton
Change เป็นเหตุการณ์ที่เกิดขึ้นเมื่อค่าคุณสมบัติ value มีการเปลี่ยนแปลง
Click เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการคลิกที่คอนโทรล
DblClick เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการ ดับเบิ้ลคลิกที่คอนโทรล
Enter เป็นเหตุการณืที่เกิดขึ้นเมื่อมีการกดปุ่ม Enter
MouseDown เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการเคลื่อนเมาส์ลงผ่าน คอนโทรล
MouseUp เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการเคลื่อนเมาส์ขึ้นผ่าน คอนโทรล



9.Frame
คอนโทรล Frame เป็นคอนโทรลที่ใช้สร้างกรอบ หรือสร้างกลุ่มของคอนโทรล ช่วยให้องค์ประกอบต่างๆ ที่อยู่บนฟอร์มมีความเป็นระเบียบเรียบร้อย

รูปที่ 7.29

คุณสมบัติ (property) ที่สำคัญของ Frame
Name ใช้สำหรับกำหนดชื่อของคอนโทรล
BackColor ใช้สำหรับกำหนดสีพื้น
BorderStyle ใช้สำหรับกำหนดรูปแบบของเส้นขอบ
Caption ใช้สำหรับกำหนดข้อความ
Font ใช้สำหรับกำหนดรูปแบบตัวอักษร
ForeColor ใช้สำหรับกำหนดสีตัวอักษร
Visible ใช้สำหรับกำหนดให้ซ่อนหรือแสดง Frame
เมธอดที่สำคัญของ Frame
Copy เป็นคำสั่งคัดลอกข้อมูลจากคอนโทรล
Cut เป็นคำสั่งนำข้อมูลออกจากคอนโทรล
Paste เป็นคำสั่งถ่ายโอนข้อมูลมาไว้ที่คอนโทรล
เหตุการณ์ (Event) ที่สำคัญของ Frame
Click เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการคลิกที่คอนโทรล
DblClick เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการกดดับเบิ้ลคลิกที่คอนโทรล
Enter เป็นเหตุการณืที่เกิดขึ้นเมื่อมีการกดปุ่ม Enter
MouseDown เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการเคลื่อนเมาส์ลงผ่าน Frame
MouseUp เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการเคลื่อนเมาส์ขึ้นผ่าน Frame

10.CommandButton
คอนโทรล CommandButton เป็นคอนโทรลสำหรับสร้างปุ่มคำสั่งบนฟอร์ม เพื่อใช้กำหนดรหัสคำสั่ง และสั่งให้โปรแกรมทำงาน

รูปที่ 7.30

คุณสมบัติ (properties) ที่สำคัญของ CommandButton
Name ใช้สำหรับกำหนดชื่อของคอนโทรล
BackColor ใช้สำหรับกำหนดสีพื้น
Caption ใช้สำหรับกำหนดข้อความ
Font ใช้สำหรับกำหนดรูปแบบตัวอักษร
Locked ใช้สำหรับกำหนดให้คอนโทรล ไม่สามารถใช้งานได้
Picture ใช้สำหรับกำหนดรูปภาพบน CommandButton
Style ใช้สำหรับกำหนดรูปแบบของปุ่มให้สามารถใช้งาน Graphic ได้หรือไม่
TabIndex ใช้สำหรับกำหนดลำดับของ Control ที่ใช้ใน Form
Visible ใช้สำหรับกำหนดให้ซ่อนหรือแสดง CommandButton

เหตุการณ์ (Event) ที่สำคัญของ CommandButton
Click เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการกดปุ่ม
Dblclick เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการกดดับเบิ้ลคลิกที่ปุ่ม
Enter เป็นเหตุการณืที่เกิดขึ้นเมื่อมีการกดปุ่ม Enter
MouseDown เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการเคลื่อนเมาส์ลงผ่าน คอนโทรล
MouseUp เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการเคลื่อนเมาส์ขึ้นผ่าน คอนโทรล

ตัวอย่างที่ 4 การสร้าง CheckBox OptionButton ToggleButton Frame และ CommandButton
1. เปิดโปรแกรมเอ็กเซลล์
2. เปิดหน้าต่าง Visual Basic Editor โดยที่เมนูบาร์คลิก Tools>Macro> Visual Basic Editor
3. เมื่อหน้าจอ Visual Basic Editor ปรากฏขึ้น ให้คลิกเลือก Insert > UserForm
4. UserForm1 จะปรากฏขึ้น ให้ปรับขนาดตามต้องการโดยการคลิกลากส่วนขอบของ UserForm1 หรืออาจกำหนดขนาดในหน้าต่างพร็อพเพอร์ตี้ก็ได้
5. ใส่ Label1 เพื่อแสดงป้ายชื่อ “Name of material”
6. ใส่ TextBox1 เพื่อพิมพ์ชื่อของ วัสดุ
7. ใส่ Frame1 เพื่อจัดกลุ่มของปุ่ม CheckButton
8. ใส่ Frame2 เพื่อจัดกลุ่มของปุ่ม OptionButton
9. ใส่ปุ่ม ToggleButton1 และปุ่ม CommandButton1
10. จะได้ Userform1 ที่ประกอบด้วยคอนโทรลต่างๆ ดังรูป


รูปที่ 7.31

11. กำหนดค่าคุณสมบัติ (property) ให้แต่ละคอนโทรลดังนี้
คอนโทรล พร็อพเพอร์ตี้ ค่าที่กำหนด
UserForm1 Caption UserForm1
Height 205
Width 376
Label1 Caption Name of material
Height 24
Width 120
TextBox1 Caption -
Height 25
Width 120
Frame1 Caption Type of Material
Height 120
Width 120
Frame2 Caption Use for
Height 120
Width 120
OptionButton1 Caption Metal
Height 18
Width 102
OptionButton2 Caption Plastic
Height 18
Width 102
OptionButton3 Caption Wood
Height 18
Width 102
OptionButton4 Caption Paper
Height 18
Width 102
CheckBox1 Caption For production
Height 18
Width 102
CheckBox2 Caption For assembly
Height 18
Width 102
CheckBox3 Caption For packing
Height 18
Width 102
CheckBox4 Caption Other
Height 18
Width 102
ToggleButton1 Caption Lock
Height 30
Width 84
CommandButton1 Caption New
Height 30
Width 84
CommandButton2 Caption Record
Height 30
Width 84

12. เมื่อใส่ค่าคุณสมบัติ (property) ที่กำหนดแล้วจะได้ UserForm1 ดังนี้

รูปที่ 7.32
13. ใส่โค๊ดคำสั่งใน ToggleButton1 ดังนี้
Private Sub ToggleButton1_Click()
If ToggleButton1.Value = True Then
TextBox1.Enabled = False
Frame1.Enabled = False
Frame2.Enabled = False
CommandButton1.Enabled = False
CommandButton2.Enabled = False
ToggleButton1.Caption = "Unlock"
Else
TextBox1.Enabled = True
Frame1.Enabled = True
Frame2.Enabled = True
CommandButton1.Enabled = True
CommandButton2.Enabled = True
ToggleButton1.Caption = "Lock"
End If
End Sub

14. ใส่โค๊ดคำสั่งใน CommandButton1 ดังนี้
Private Sub CommandButton1_Click()
TextBox1.Value = ""
OptionButton1.Value = False
OptionButton2.Value = False
OptionButton3.Value = False
OptionButton4.Value = False
CheckBox1.Value = False
CheckBox2.Value = False
CheckBox3.Value = False
CheckBox4.Value = False
CommandButton2.Enabled = True
CommandButton2.Caption = "Record"
End Sub

15. ใส่โค๊ดคำสั่งใน CommandButton2 ดังนี้
Private Sub CommandButton2_Click()
Dim Material_Type As String
Dim a, b, c, d As String
Dim i As Integer
i = 0
Do
i = i + 1
Loop Until Cells(i, 1) = ""
If OptionButton1.Value = True Then Material_Type = "Metal"
If OptionButton2.Value = True Then Material_Type = "Plastic"
If OptionButton3.Value = True Then Material_Type = "Wood"
If OptionButton4.Value = True Then Material_Type = "Paper"
If CheckBox1.Value = True Then a = "Production, "
If CheckBox2.Value = True Then b = "Assembly, "
If CheckBox3.Value = True Then c = "Packing, "
If CheckBox4.Value = True Then d = "Other "
Cells(i, 1) = TextBox1.Text
Cells(i, 2) = Material_Type
Cells(i, 3) = (a) & (b) & (c) & (d)
CommandButton2.Caption = "Recorded"
CommandButton2.Enabled = False
End Sub
16. ทดสอบโปรแกรม โดยการสร้างปุ่ม Button1 เพื่อเรียกโปรแกรม ขึ้นมา จากนั้นวินโดว์ Assign macro จะเปิดขึ้นมา ให้คลิกเลือกปุ่ม New
17. เมื่อหน้าต่าง Visual Basic Editor เปิดขึ้น ให้พิมพ์คำสั่งดังนี้
Sub Button1_Click()
UserForm1.Show
End Sub
18. ทดลองกดปุ่ม Button1 เพื่อเรียกโปรแกรมขึ้นมาทดสอบ

รูปที่ 7.33
19. ทดลองใช้โปรแกรม พิมพ์ชื่อวัสดุลงใน TextBox1
เลือกชนิดของวัสดุ ซึ่งจะสามารถเลือกได้ค่าเดียว
เลือกประเภทการใช้ ซึ่งสามารถเลือกได้หลายประเภท
เมื่อต้องการใส่ค่าใหม่ให้กดปุ่ม New แล้วใส่ค่าที่ต้องการ
กดปุ่ม Record เพื่อทำการบันทึกลงในตารางเอ็กเซลล์
ปุ่ม Lock สร้างขึ้นเพื่อล็อคคอนโทรลต่างๆ ไม่ให้ทำงานได้ หรืออาจมีวัตถุประสงค์เพื่อป้องการการแก้ไขข้อมูล

รูปที่ 7.34
รูปที่ 7.35


11.TabStrip
คอนโทรล TabStrip เป็นคอนโทรลที่ใช้กำหนดพื้นที่แสดงหรือจัดการข้อมูลหลายชุดข้อมูลที่มีองค์ประกอบร่วมกันของคอนโทรลที่เหมือนกัน


รูปที่ 7.36

คุณสมบัติ (properties) ที่สำคัญของ TabStrip
Name ใช้สำหรับกำหนดชื่อของคอนโทรล
BackColor ใช้สำหรับกำหนดสีพื้น
Font ใช้สำหรับกำหนดรูปแบบตัวอักษร
ForeColor ใช้สำหรับกำหนดสีตัวอักษร
Style ใช้สำหรับแสดงรูปแบบของ TabStrip
Value ใช้กำหนดหมายเลขของ TabStrip แต่ละอัน
Visible ใช้สำหรับกำหนดให้ซ่อนหรือแสดง
เหตุการณ์ (Event) ที่สำคัญของ TabStrip
Change เป็นเหตุการณ์ที่เกิดขึ้นเมื่อค่าคุณสมบัติ value มีการเปลี่ยนแปลง
Click เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการคลิกเมาส์ที่คอนโทรล
DblClick เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการดับเบิ้ลคลิกเมาส์ที่คอนโทรล
Enter เป็นเหตุการณืที่เกิดขึ้นเมื่อมีการกดปุ่ม Enter
MouseDown เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการเคลื่อนเมาส์ลงผ่าน คอนโทรล
MouseUp เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการเคลื่อนเมาส์ขึ้นผ่าน คอนโทรล
ตัวอย่างที่ 5 การสร้าง TabStrip เพื่อแสดงจำนวนพนักงานแยกตามแผนก
1. เปิดโปรแกรมเอ็กเซลล์
2. เปิดหน้าต่าง Visual Basic Editor โดยที่เมนูบาร์คลิก Tools>Macro> Visual Basic Editor
3. เมื่อหน้าจอ Visual Basic Editor ปรากฏขึ้น ให้คลิกเลือก Insert > UserForm
4. UserForm1 จะปรากฏขึ้น ให้ปรับขนาดตามต้องการโดยการคลิกลากส่วนขอบของ UserForm1 หรืออาจกำหนดขนาดในหน้าต่างพร็อพเพอร์ตี้ก็ได้
5. นำ TabStrip1 มาวาดลงบนฟอร์ม


รูปที่ 7.37
6. ทำการเพิ่ม Tab3 โดยการคลิกซ้ายที่ Tab1 หรือ Tab2 แล้วคลิกขวาอีกครั้ง จะมีเมนูขึ้นมา ให้เลือก New Page ก็จะได้ Tab3 เพิ่มขึ้นมาอีก 1 อัน

รูปที่ 7.38
7. ทำการเปลี่ยนชื่อ Tab1, Tab2, Tab3 ด้วยการคลิกซ้ายที่ Tab ที่ต้องการเปลี่ยนชื่อ และคลิกขวาอีกครั้ง ก็จะมีเมนูขึ้นมาให้คลิกเลือก Rename จะมีไดอะล็อกขึ้นมา ให้พิมพ์ชื่อลงในช่อง Caption เช่น Tab1 เปลี่ยนชื่อเป็น “HR” แล้วกดปุ่ม OK

รูปที่ 7.39
รูปที่ 7.40
8. ใส่ Label1 กำหนด Caption เป็น “จำนวนพนักงาน”
9. ใส่ Label2 ไม่ต้องใส่ Caption ให้ปล่อยว่างเอาไว้ เพื่อแสดงจำนวนพนักงานที่โปรแกรมคำนวนได้
10. กำหนดค่าคุณสมบัติ (property) ให้แต่ละคอนโทรลดังนี้
คอนโทรล พร็อพเพอร์ตี้ ค่าที่กำหนด
UserForm1 Caption UserForm1
Height 148
Width 293
TabStrip1 Height 102
Width 264
Label1 Caption จำนวนพนักงาน
Height 24
Width 126
Label2 Caption -
Height 24
Width 66
จะได้ฟอร์มมีลักษณะดังรูป

รูปที่ 7.41
11. ใส่โค๊ดคำสั่งใน TabStrip1 ด้วยการดับเบิ้ลคลิกที่ TabStrip1 หน้าต่างคำสั่งจะปรากฏขึ้นมา แล้วให้พิมพ์คำสั่งดังนี้
Private Sub TabStrip1_Change()
Dim i As Integer
Dim HR, PC, QC As Integer
Dim value As Integer
value = TabStrip1.value
i = 1
Do While Cells(i, 1) <> ""
If Cells(i, 1) = "HR" Then HR = HR + 1
If Cells(i, 1) = "PC" Then PC = PC + 1
If Cells(i, 1) = "QC" Then QC = QC + 1
i = i + 1
Loop
If value = 0 Then Label2.Caption = HR
If value = 1 Then Label2.Caption = PC
If value = 2 Then Label2.Caption = QC
End Sub
12. ทดสอบโปรแกรม โดยการสร้างข้อมูลที่ Sheet1 โดยคอลัมน์ A เป็นชื่อแผนก HR, PC, QC ส่วนคอลัมน์ B เป็นชื่อพนักงาน
13. สร้างปุ่ม Button1 เพื่อเรียกโปรแกรมขึ้นมา จากนั้นวินโดว์ Assign macro จะเปิดขึ้นมา ให้คลิกเลือกปุ่ม New
14. เมื่อหน้าต่าง Visual Basic Editor เปิดขึ้น ให้พิมพ์คำสั่งดังนี้
Sub Button1_Click()
UserForm1.Show
End Sub
15. ทดลองกดปุ่ม Button1 เพื่อเรียกโปรแกรมขึ้นมาทดสอบ แล้วทดลองคลิกที่ Tab ต่างๆ ที่สร้างไว้ จะแสดงจำนวนพนักงาน แต่ละแผนกที่ Label2

รูปที่ 7.42
12.MultiPage
คอนโทรล MultiPage เป็นคอนโทรลสำหรับนำเสนอข้อมูลหลายหน้าจอเป็นชุดเดียว

รูปที่ 7.43
คุณสมบัติ (properties) ที่สำคัญของ MultiPage
Name ใช้สำหรับกำหนดชื่อของคอนโทรล
BackColor ใช้สำหรับกำหนดสีพื้น
Enabled ใช้สำหรับกำหนดให้คอนโทรลสามารถใช้งานได้
Font ใช้สำหรับกำหนดรูปแบบตัวอักษร
ForeColor ใช้สำหรับกำหนดสีตัวอักษร
Value ใช้สำหรับระบุสถานะหรือกำหนดข้อมูลให้กับคอนโทรล
Visible ใช้สำหรับกำหนดให้ซ่อนหรือแสดง
เหตุการณ์ (Event) ที่สำคัญของ MultiPage
Change เป็นเหตุการณ์ที่เกิดขึ้นเมื่อค่าคุณสมบัติ value มีการเปลี่ยนแปลง
Click เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการคลิกเมาส์ที่คอนโทรล
DblClick เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการดับเบิ้ลคลิกเมาส์ที่คอนโทรล
Enter เป็นเหตุการณืที่เกิดขึ้นเมื่อมีการกดปุ่ม Enter
MouseDown เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการเคลื่อนเมาส์ลงผ่าน คอนโทรล
MouseUp เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการเคลื่อนเมาส์ขึ้นผ่าน คอนโทรล


ตัวอย่างที่ 6 การสร้าง Multipage
1. เปิดโปรแกรมเอ็กเซลล์
2. เปิดหน้าต่าง Visual Basic Editor โดยที่เมนูบาร์คลิก Tools>Macro> Visual Basic Editor
3. เมื่อหน้าจอ Visual Basic Editor ปรากฏขึ้น ให้คลิกเลือก Insert > UserForm
4. UserForm1 จะปรากฏขึ้น ให้ปรับขนาดตามต้องการโดยการคลิกลากส่วนขอบของ UserForm1 หรืออาจกำหนดขนาดในหน้าต่างพร็อพเพอร์ตี้ก็ได้
5. นำ Multipage1 มาวาดลงบนฟอร์ม
6. คลิกที่ Page1 เพื่อใส่ Label1 ทำเป็นป้ายชื่อ “พิมพ์ชื่อพนักงาน” ใส่ TextBox1 เพื่อรับค่าพิมพ์ชื่อพนักงาน ใส่ปุ่ม CommandButton1 เพื่อสั่งให้โปรแกรมบันทึกข้อมูลลงในตารางเอ็กเซลล์

รูปที่ 7.44
7. คลิกที่ Page2 เพื่อใส่ ComboBox1 เพื่อแสดงรายชื่อพนักงานทั้งหมด เพื่อทำการเลือก
8. ที่ Page2 ให้ใส่ Label2 เพื่อแสดงชื่อเมื่อคลิกเลือกชื่อพนักงานจาก ComboBox1

รูปที่ 7.45
9. กำหนดค่าคุณสมบัติ (property) ให้แต่ละคอนโทรลดังนี้
คอนโทรล พร็อพเพอร์ตี้ ค่าที่กำหนด
UserForm1 Caption UserForm1
Height 173
Width 264
Page1 name Page1
Caption Page1
Label1 Caption พิมพ์ชื่อพนักงาน
Height 24
Width 102
TextBox1 Caption -
Height 24
Width 102
CommandButton1 Caption บันทึก
Height 24
Width 102
Page2 name Page2
Caption Page2
Label2 Caption -
Height 24
Width 150
Style 1-fmBorderStyleSingle
ComboBox1 Height 24
Width 150
ListRows 4
RowSource Sheet1!a:a

จะได้ฟอร์มมีลักษณะดังรูป

รูปที่ 7.46
10. ใส่โค๊ดคำสั่งใน CommandButton1 ด้วยการดับเบิ้ลคลิกที่ CommandButton1 หน้าต่างคำสั่งจะปรากฏขึ้นมา แล้วให้พิมพ์คำสั่งดังนี้
Private Sub CommandButton1_Click()
Dim i As Integer
i = 0
Do
i = i + 1
Loop Until Cells(i, 1) = ""
Cells(i, 1) = TextBox1.Text
TextBox1.Text = ""
End Sub

11. ใส่โค๊ดคำสั่งใน ComboBox1 ด้วยการดับเบิ้ลคลิกที่ ComboBox1 หน้าต่างคำสั่งจะปรากฏขึ้นมา แล้วให้พิมพ์คำสั่งดังนี้
Private Sub ComboBox1_Change()
Label2.Caption = ComboBox1.Value
End Sub
12. ทดสอบโปรแกรม โดยการสร้างปุ่ม Button1 ที่ Sheet1 เพื่อเรียกโปรแกรมขึ้นมา.จากนั้นวินโดว์ Assign macro จะเปิดขึ้นมา ให้คลิกเลือกปุ่ม New
13. เมื่อหน้าต่าง Visual Basic Editor เปิดขึ้น ให้พิมพ์คำสั่งดังนี้
Sub Button1_Click()
UserForm1.Show
End Sub
14. ทดลองกดปุ่ม Button1 เพื่อเรียกโปรแกรมขึ้นมาทดสอบ แล้วพิมพ์ชื่อพนักงานลงใน TextBox1 เช่น NAME6 แล้วกดปุ่ม บันทึก เพื่อบันทึกข้อมูลลงในตารางเอ็กเซลล์

รูปที่ 7.47
15. คลิกเลือก Page2 เพื่อดูข้อมูลใน ComboBox1 จะมีชื่อ NAME6 เพิ่มเข้ามาแล้ว ลองคลิกที่ NAME6 ใน ComboBox1 ชื่อ NAME6 จะถูกแสดงใน Label2

รูปที่ 7.48


13.ScrollBar
คอนโทรล ScrollBar ใช้สำหรับสร้างแถบเลื่อน เพื่อแสดงข้อมูล รายการต่างๆ

รูปที่ 7.49

คุณสมบัติ (properties) ที่สำคัญของ ScrollBar
Name ใช้สำหรับกำหนดชื่อของคอนโทรล
BackColor ใช้สำหรับกำหนดสีพื้น
ForeColor ใช้สำหรับกำหนดสีตัวอักษร
LargeChange ใช้ระบุจำนวนการเคลื่อนที่เมื่อผู้ใช้คลิกในแถบของ ScrollBar
Max ใช้สำหรับกำหนดค่าสูงสุดของ ScrollBar
Min ใช้สำหรับกำหนดค่าต่ำสุดของ ScrollBar
SmallChange ใช้ระบุจำนวนการเคลื่อนที่เมื่อคลิกที่ลูกศรของ ScrollBar
Value ใช้สำหรับระบุสถานะหรือกำหนดข้อมูลให้กับคอนโทรล
Visible ใช้สำหรับกำหนดให้ซ่อนหรือแสดง
เหตุการณ์ (Event) ที่สำคัญของ ScrollBar
Change เป็นเหตุการณ์ที่เกิดขึ้นเมื่อค่าคุณสมบัติ value มีการเปลี่ยนแปลง

ตัวอย่างที่ 7
การสร้าง ScrollBar
1. เปิดโปรแกรมเอ็กเซลล์
2. เปิดหน้าต่าง Visual Basic Editor โดยที่เมนูบาร์คลิก Tools>Macro> Visual Basic Editor
3. เมื่อหน้าจอ Visual Basic Editor ปรากฏขึ้น ให้คลิกเลือก Insert > UserForm
4. UserForm1 จะปรากฏขึ้น ให้ปรับขนาดตามต้องการโดยการคลิกลากส่วนขอบของ UserForm1 หรืออาจกำหนดขนาดในหน้าต่างพร็อพเพอร์ตี้ก็ได้
5. นำ TextBox1 และ ScrollBar1 มาวาดลงบนฟอร์ม
6. กำหนดค่าคุณสมบัติ (property) ให้แต่ละคอนโทรลดังนี้
คอนโทรล พร็อพเพอร์ตี้ ค่าที่กำหนด
UserForm1 Caption UserForm1
Height 140
Width 240
TextBox1 Caption -
Font size 14
Height 45
Width 198
ScrollBar1 Height 18
Max 30
Min 1
Value 14
Width 198

รูปที่ 7.50
7. ใส่โค๊ดคำสั่งใน ScrollBar1 ด้วยการดับเบิ้ลคลิกที่ ScrollBar1 หน้าต่างคำสั่งจะปรากฏขึ้นมา แล้วให้พิมพ์คำสั่งดังนี้
Private Sub ScrollBar1_Change()
TextBox1.Font.Size = ScrollBar1.Value
End Sub
8. ทดสอบโปรแกรม โดยการสร้างปุ่ม Button1 ที่ Sheet1 เพื่อเรียกโปรแกรมขึ้นมา.จากนั้นวินโดว์ Assign macro จะเปิดขึ้นมา ให้คลิกเลือกปุ่ม New
9. เมื่อหน้าต่าง Visual Basic Editor เปิดขึ้น ให้พิมพ์คำสั่งดังนี้
Sub Button1_Click()
UserForm1.Show
End Sub
10. ทดลองกดปุ่ม Button1 เพื่อเรียกโปรแกรมขึ้นมาทดสอบ แล้วพิมพ์อักษรลงใน TextBox1 แล้วลองเลื่อน ScrollBar1 เพื่อดูการเปลี่ยนแปลงของตัวอักษรใน TextBox1 จะเห็นว่าอักษรมีขนาดเพิ่มขึ้นเมื่อเลื่อน ScrollBar1 ไปทางขวา และตัวอักษรจะมีขนาดเล็กลงเมื่อเลื่อน ScrollBar1 ไปทางซ้าย


รูปที่ 7.51

14.SpinButton
คอนโทรล SpinButton เป็นคอนโทรลที่สามารถใช้ร่วมกับคอนโทรลอื่นๆ เพื่อควบคุมการเพิ่มหรือลดจำนวนตัวเลข SpinButton มีลักษณะใกล้เคียงกับ ScrollBar ต่างกันที่ SpinButton ไม่มีแถบแสดงสถานะของระดับค่าตัวเลข จะมีแค่เพียงลูกศรสามเหลี่ยมเท่านั้น

รูปที่ 7.52

คุณสมบัติ (properties) ที่สำคัญของ SpinButton
Name ใช้สำหรับกำหนดชื่อของคอนโทรล
BackColor ใช้สำหรับกำหนดสีพื้น
ForeColor ใช้สำหรับกำหนดสีตัวอักษร
Max ใช้สำหรับกำหนดค่าสูงสุดของ SpinButton
Min ใช้สำหรับกำหนดค่าต่ำสุดของ SpinButton
SmallChange ใช้ระบุจำนวนของการเคลื่อนที่เมื่อผู้ใช้คลิกที่ลูกศร
Value ใช้สำหรับระบุสถานะหรือกำหนดข้อมูลให้กับคอนโทรล
Visible ใช้สำหรับกำหนดให้ซ่อนหรือแสดง
เหตุการณ์ (Event) ที่สำคัญของ SpinButton
Change เป็นเหตุการณ์ที่เกิดขึ้นเมื่อค่าคุณสมบัติ value มีการเปลี่ยนแปลง


ตัวอย่างที่ 8 การสร้าง SpinButton
1. เปิดโปรแกรมเอ็กเซลล์
2. เปิดหน้าต่าง Visual Basic Editor โดยที่เมนูบาร์คลิก Tools>Macro> Visual Basic Editor
3. เมื่อหน้าจอ Visual Basic Editor ปรากฏขึ้น ให้คลิกเลือก Insert > UserForm
4. UserForm1 จะปรากฏขึ้น ให้ปรับขนาดตามต้องการโดยการคลิกลากส่วนขอบของ UserForm1 หรืออาจกำหนดขนาดในหน้าต่างพร็อพเพอร์ตี้ก็ได้
5. นำ TextBox1 และ SpinButton1 มาวาดลงบนฟอร์ม
6. กำหนดค่าคุณสมบัติ (property) ให้แต่ละคอนโทรลดังนี้

คอนโทรล พร็อพเพอร์ตี้ ค่าที่กำหนด
UserForm1 Caption UserForm1
Height 140
Width 240
TextBox1 Caption -
Font size 14
Height 45
Width 198
SpinButton1 Height 42
Max 30
Min 1
Value 14
Width 18

รูปที่ 7.53
7. ใส่โค๊ดคำสั่งใน SpinButton1 ด้วยการดับเบิ้ลคลิกที่ SpinButton1 หน้าต่างคำสั่งจะปรากฏขึ้นมา แล้วให้พิมพ์คำสั่งดังนี้
Private Sub SpinButton1_Change()
TextBox1.Font.Size = SpinButton1.Value
End Sub
8. ทดสอบโปรแกรม โดยการสร้างปุ่ม Button1 ที่ Sheet1 เพื่อเรียกโปรแกรมขึ้นมา จากนั้นวินโดว์ Assign macro จะเปิดขึ้นมา ให้คลิกเลือกปุ่ม New
9. เมื่อหน้าต่าง Visual Basic Editor เปิดขึ้น ให้พิมพ์คำสั่งดังนี้
Sub Button1_Click()
UserForm1.Show
End Sub
10. ทดลองกดปุ่ม Button1 เพื่อเรียกโปรแกรมขึ้นมาทดสอบ แล้วพิมพ์ชื่ออักษรลงใน TextBox1 แล้วลองกดปุ่มสามเหลี่ยมที่ SpinButton1 เพื่อดูการเปลี่ยนแปลงของตัวอักษรใน TextBox1 จะเห็นว่าอักษรมีขนาดเพิ่มขึ้นเมื่อกดลูกศรขึ้น และตัวอักษรจะมีขนาดเล็กลงเมื่อกดลูกศรลง

รูปที่ 7.54
15.Image
คอนโทรล Image เป็นคอนโทรลใช้แสดงรูปภาพชนิด bitmap, icon, or metafile ให้แสดงบนฟอร์ม

รูปที่ 7.55

คุณสมบัติ (propertis) ที่สำคัญของ Image
Name ใช้สำหรับกำหนดชื่อของคอนโทรล
BackColor ใช้สำหรับกำหนดสีพื้นหลัง
BorderStyle ใช้สำหรับกำหนดรูปแบบของเส้นขอบ
Picture ใช้สำหรับกำหนดรูปภาพบน Image
PictureTilling ใช้สำหรับขยาย หรือกระจายภาพให้เต็มพื้นที่คอนโทรล
Visible ใช้สำหรับกำหนดให้ซ่อนหรือแสดง
เหตุการณ์ (Event) ที่สำคัญของ Image
Click เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการคลิกเมาส์ที่คอนโทรล
DblClick เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการดับเบิ้ลคลิกเมาส์ที่คอนโทรล
MouseDown เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการเคลื่อนเมาส์ลงผ่าน คอนโทรล
MouseUp เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการเคลื่อนเมาส์ขึ้นผ่าน คอนโทรล

ตัวอย่างที่ 9 การสร้างคอนโทรล Image
1. เปิดโปรแกรมเอ็กเซลล์
2. เปิดหน้าต่าง Visual Basic Editor โดยที่เมนูบาร์คลิก Tools>Macro> Visual Basic Editor
3. เมื่อหน้าจอ Visual Basic Editor ปรากฏขึ้น ให้คลิกเลือก Insert > UserForm
4. UserForm1 จะปรากฏขึ้น ให้ปรับขนาดตามต้องการโดยการคลิกลากส่วนขอบของ UserForm1 หรืออาจกำหนดขนาดในหน้าต่างพร็อพเพอร์ตี้ก็ได้
5. นำคอนโทรล Image1 และCommandButton1 มาวาดลงบนฟอร์ม
6. กำหนดค่าคุณสมบัติ (property) ให้แต่ละคอนโทรลดังนี้

คอนโทรล พร็อพเพอร์ตี้ ค่าที่กำหนด
UserForm1 Caption UserForm1
Height 164
Width 290
Image1 BackColor &80000009&
BorderStyle 1-fmBorderStylSingle
Height 60
Width 276
PictureTiling False
CommandButton1 Caption Picture Tiling

เมื่อใส่ค่าต่างๆ แล้วจะได้ฟอร์มดังรูป

รูปที่ 7.56
ทดสอบโปรแกรม โดยกดปุ่ม Picture Tiling

รูปที่ 7.57


16.RefEdit
คอนโทรล RefEdit เป็นคอนโทรลสำหรับแสดงตำแหน่ง หรือการอ้างอิงช่วงของเซลล์ที่เราเลือกในชีทเอ็กเซลล์

รูปที่ 7.58

คุณสมบัติ (properties) ที่สำคัญของ RefEdit
Name ใช้สำหรับกำหนดชื่อของคอนโทรล
BackColor ใช้สำหรับกำหนดสีพื้น
BorderStyle ใช้สำหรับกำหนดรูปแบบของเส้นขอบ
Enabled ใช้สำหรับกำหนดให้คอนโทรลสามารถใช้งานได้
Font ใช้สำหรับกำหนดรูปแบบตัวอักษร
ForeColor ใช้สำหรับกำหนดสีตัวอักษร
Visible ใช้สำหรับกำหนดให้ซ่อนหรือแสดง
เมธอดที่สำคัญของ RefEdit
Copy เป็นคำสั่งคัดลอกข้อมูลจากคอนโทรล
Cut เป็นคำสั่งนำข้อมูลออกจากคอนโทรล
Paste เป็นคำสั่งถ่ายโอนข้อมูลมาไว้ที่คอนโทรล
เหตุการณ์ (Event) ที่สำคัญของ RefEdit
BeforeDragOver เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการคลิกลากวาง (drag and drop)
Click เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการคลิกเมาส์
Change เป็นเหตุการณ์ที่เกิดขึ้นเมื่อค่าคุณสมบัติ value มีการเปลี่ยนแปลง
DblClick เป็นเหตุการณ์ที่เกิดขึ้นเมื่อมีการ ดับเบิ้ลคลิกที่คอนโทรล
Enter เป็นเหตุการณืที่เกิดขึ้นเมื่อมีการกดปุ่ม Enter

ตัวอย่างที่ 10 การสร้างคอนโทรล RefEdit
1. เปิดโปรแกรมเอ็กเซลล์
2. เปิดหน้าต่าง Visual Basic Editor โดยที่เมนูบาร์คลิก Tools>Macro> Visual Basic Editor
3. เมื่อหน้าจอ Visual Basic Editor ปรากฏขึ้น ให้คลิกเลือก Insert > UserForm
4. UserForm1 จะปรากฏขึ้น ให้ปรับขนาดตามต้องการโดยการคลิกลากส่วนขอบของ UserForm1 หรืออาจกำหนดขนาดในหน้าต่างพร็อพเพอร์ตี้ก็ได้
5. นำคอนโทรล RefEdit, TextBox1 และCommandButton1 มาวาดลงบนฟอร์ม
6. กำหนดค่าคุณสมบัติ (property) ให้แต่ละคอนโทรลดังนี้

คอนโทรล พร็อพเพอร์ตี้ ค่าที่กำหนด
UserForm1 Caption UserForm1
Height 140
Width 240
RefEdit1 BackColor &H80000005&
Height 36
Width 246
TextBox1 Caption -
Font size 20
Height 36
Width 126
CommandButton1 Caption SUM
Font size 20
Height 36
Width 114


รูปที่ 7.59
7. ใส่โค๊ดคำสั่งใน CommandButton1 ด้วยการดับเบิ้ลคลิกที่ CommandButton1 หน้าต่างคำสั่งจะปรากฏขึ้นมา แล้วให้พิมพ์คำสั่งดังนี้
Private Sub CommandButton1_Click()
TextBox1.Text = Application.WorksheetFunction.Sum(Range(RefEdit1.Text))
End Sub
8. ทดสอบโปรแกรม โดยการสร้างปุ่ม Button1 ที่ Sheet1 เพื่อเรียกโปรแกรมขึ้นมา จากนั้นวินโดว์ Assign macro จะเปิดขึ้นมา ให้คลิกเลือกปุ่ม New
9. เมื่อหน้าต่าง Visual Basic Editor เปิดขึ้น ให้พิมพ์คำสั่งดังนี้
Sub Button1_Click()
UserForm1.Show
End Sub
10. ทดลองกดปุ่ม Button1 เพื่อเรียกโปรแกรมขึ้นมาทดสอบ แล้วคลิกที่ปุ่ม RefEdit1 แล้วเลือกพื้นที่ ที่ต้องการคำนวนหาค่าผลรวม สังเกตุที่คอนโทรล RefEdit1 จะแสดงการอ้างอิงพื้นที่ ที่ได้เลือกเอาไว้ (การเลือกพื้นที่การคำนวนสามารถทำการเลือกได้หลายช่วงข้อมูล โดยให้กดปุ่มCtrl ค้างเอาไว้ ในขณะเลือกพื้นที่ต่างๆ จากนั้นให้คลิกที่ปุ่ม CommandButton1 เพื่อทำการคำนวนค่าผลรวมของช่วงข้อมูลที่ได้เลือกไว้

รูปที่ 7.60
จากตัวอย่างทำการเลือกพื้นที่ Sheet1!$A$1:$D$1,Sheet1!$H$2:$I$2,Sheet1!$I$8:$I$10
=1+1+1+1+2+2+8+9+10 = 35

Laravel

  Laravel Framework คือ PHP Framework ตัวหนึ่งที่ถูกออกแบบมาเพื่อพัฒนาเว็บแอพพลิเคชั่นต่างๆ ในรูปแบบ MVC (Model Views Controller) ซึ่งมีการแ...