Excel
vba ขอเสนอตัวอย่างที่สุดแสนจะง่ายดาย
สามารถทำตามและเข้าใจได้ง่ายๆแม้ว่าคุณจะเป็นแค่เด็กประถมก็ตาม
เพราะว่าเราจะแสดงการใช้ Excel vba ทำสูตรคูณกัน รู้จักสูตรคูณใช่ไหมเด็กๆ อิๆ
จริงๆแล้ว สูตรคูณเราทำผ่าน
EXCEL อย่างเดียวก็ได้ แต่ตัวอย่างนี้ต้องการให้เราได้คุ้นเคยกับการใช้ USERFORM,
CONTROL ต่างๆของ VBA และเพื่อจะเป็นประโยชน์ต่อมือใหม่ได้ฝึกฝนการใช้งานหน้าต่าง
vba บ่อยๆด้วย
ก่อนที่จะเริ่มทำตัวอย่างนี้
ให้ดูรูปภาพผลลัพธ์ด้านล่างนี้ก่อน เพื่อให้ทราบว่าเราต้องการให้โปรแกรมสูตรคูณของเรามีหน้าตาแบบนี้
เห็นรูปแล้วคงเดาได้ไม่อยากว่าเราต้องการให้โปรแกรม
ของเราทำงานยังไง
ถ้ายังไม่เข้าใจดีมากนัก
ก็ไม่เป็นไร ใจเย็นๆ รับรองทำตามขั้นตอนทั้งหมดจนได้ผลลัพธ์แล้วก็จะกระจ่างเอง
เริ่มเลยแล้วกัน
เริ่มแรก กด ALT+F11 เพื่อเข้าสู่หน้าต่าง Excel vba ก่อนจากนั้นคลิ้กขวาบริเวณพื้นที่ขาวๆว่างๆแล้วINSERT USERFORM ดูภาพด้านล่างประกอบ
·
UserForm และ ToolBox (กล่องเครื่องมือที่รวมปุ่ม Control
ต่าง) จะปรากฏออกมาดังภาพด้านล่างนี้
เลือก COMBOBOX จากแท็บเครื่องมือมาวางบน USERFORM และ Commandbuttonมาวางบน ฟอร์ม แล้วเปลี่ยน Caption ของ Commandbutton ให้เป็น “Create Formular” ดูภาพด้านล่างประกอบจ๊ะ
ต่อไปให้เรากด ALT+F11 เพื่อกลับไปสู่หน้าจอ Microsoft Excel แล้วออกแบบหน้าตาของเซลล์เพื่อรองรับผลลัพธ์จาก สูตร vba ดังภาพด้านล่าง
นั่นคือ ที่ เซลล์ D1 ถึง เซลล์ G1 ให้เรา
Merge เซลล์ ให้เป็นเนื้อเดียวกัน แล้วพิมพ์คำว่า “Formular” เข้าไป จากนั้น จัดกึ่งกลางให้กับคำๆนี้ด้วย
ต่อมาที่เซลล์ A2 ถึง K2 ให้ใส่สีพื้นหลังให้เซลล์เป็นสีฟ้า
และ สีของตัวหนังสือเป็นสีดำ ดังภาพ
หลังจากนั้น เลือก เซลล์ A3:k14 แล้วใส่สีพื้นหลังให้เป็นสีดำ
และสีของตัวหนังสือ เราเลือกเป็นสีขาวแล้วกัน เป็นอันว่าเสร็จสิ้นการ
จัดรูปแบบพื้นที่สำหรับรอรับผลลัพธ์จากโค๊ด vba
ต่อไปให้เรา กด ALT+F11
กลับไปยัง หน้าจอเขียนโค้ด vba กัน
แล้วกำหนดค่า พร็อพเพอตี้ ShowModal ของ Userform ให้เป็น False ดังภาพด้านล่างนี้จากนั้นคลิ้กขวาที่ Userform แล้วเลือก View Code ตามภาพด้านล่างเลยครับ
แล้วใส่โค้ดต่อไปนี้เข้าไป
Dim ia As Integer 'column a
Dim ia As Integer 'column a
Dim
ib As Integer 'column b
Dim
ic As Integer 'column c
Dim
id As Integer 'column d
Dim
ie1 As Integer 'column e
Dim
if1 As Integer 'column f
Dim
ig As Integer 'column g
Dim
ih As Integer 'column h
Dim
ii1 As Integer 'column i
Dim
ij As Integer 'column j
Dim
ik As Integer 'column k
Private
Sub CommandButton1_Click()
'2
If
ComboBox1.Text = "2 To 12" Then
'name
of formular
Range("A2").Cells(1,
1) = "2"
Range("b2").Cells(1,
1) = "3"
Range("c2").Cells(1,
1) = "4"
Range("d2").Cells(1,
1) = "5"
Range("e2").Cells(1,
1) = "6"
Range("f2").Cells(1,
1) = "7"
Range("g2").Cells(1,
1) = "8"
Range("h2").Cells(1,
1) = "9"
Range("i2").Cells(1,
1) = "10"
Range("j2").Cells(1,
1) = "11"
Range("k2").Cells(1,
1) = "12"
'---------------------------------------------
For
ia = 3 To 14
Cells(ia,
1) = ia - 2
Cells(ia,
1) = "2 * " & ia - 2 & " = " & 2 * Cells(ia, 1)
Next
'3
For
ib = 3 To 14
Cells(ib,
2) = ib - 2
Cells(ib,
2) = "3 * " & ib - 2 & " = " & 3 * Cells(ib, 2)
Next
'4
For
ic = 3 To 14
Cells(ic,
3) = ic - 2
Cells(ic,
3) = "4 * " & ic - 2 & " = " & 4 * Cells(ic, 3)
Next
'5
For
id = 3 To 14
Cells(id,
4) = id - 2
Cells(id,
4) = "5 * " & id - 2 & " = " & 5 * Cells(id, 4)
Next
'6
For
ie1 = 3 To 14
Cells(ie1,
5) = ie1 - 2
Cells(ie1,
5) = "6 * " & ie1 - 2 & " = " & 6 * Cells(ie1,
5)
Next
'7
For
if1 = 3 To 14
Cells(if1,
6) = if1 - 2
Cells(if1,
6) = "7 * " & if1 - 2 & " = " & 7 * Cells(if1,
6)
Next
'8
For
ig = 3 To 14
Cells(ig,
7) = ig - 2
Cells(ig,
7) = "8 * " & ig - 2 & " = " & 8 * Cells(ig, 7)
Next
End
If
'9
For
ih = 3 To 14
Cells(ih,
8) = ih - 2
Cells(ih,
8) = "9 * " & ih - 2 & " = " & 9 * Cells(ih, 8)
Next
'10
For
ii1 = 3 To 14
Cells(ii1,
9) = ii1 - 2
Cells(ii1,
9) = "10 * " & ii1 - 2 & " = " & 10 *
Cells(ii1, 9)
Next
'11
For
ij = 3 To 14
Cells(ij,
10) = ij - 2
Cells(ij,
10) = "11 * " & ij - 2 & " = " & 11 * Cells(ij,
10)
Next
'12
For
ik = 3 To 14
Cells(ik,
11) = ik - 2
Cells(ik,
11) = "12 * " & ik - 2 & " = " & 12 * Cells(ik,
11)
Next
'----------------------------------------------------------------------------
'13
If
ComboBox1.Text = "13 To 23" Then
'name of formular
Range("A2").Cells(1,
1) = "13"
Range("b2").Cells(1,
1) = "14"
Range("c2").Cells(1,
1) = "15"
Range("d2").Cells(1,
1) = "16"
Range("e2").Cells(1,
1) = "17"
Range("f2").Cells(1,
1) = "18"
Range("g2").Cells(1,
1) = "19"
Range("h2").Cells(1,
1) = "20"
Range("i2").Cells(1,
1) = "21"
Range("j2").Cells(1,
1) = "22"
Range("k2").Cells(1,
1) = "23"
'------------------------------------------------
For
ia = 3 To 14
Cells(ia,
1) = ia - 2
Cells(ia,
1) = "13 * " & ia - 2 & " = " & 13 * Cells(ia,
1)
Next
'14
For
ib = 3 To 14
Cells(ib,
2) = ib - 2
Cells(ib,
2) = "14 * " & ib - 2 & " = " & 14 * Cells(ib,
2)
Next
'15
For
ic = 3 To 14
Cells(ic,
3) = ic - 2
Cells(ic,
3) = "15 * " & ic - 2 & " = " & 15 * Cells(ic,
3)
Next
'16
For
id = 3 To 14
Cells(id,
4) = id - 2
Cells(id,
4) = "16 * " & id - 2 & " = " & 16 * Cells(id,
4)
Next
'17
For
ie1 = 3 To 14
Cells(ie1,
5) = ie1 - 2
Cells(ie1,
5) = "17 * " & ie1 - 2 & " = " & 17 *
Cells(ie1, 5)
Next
'18
For
if1 = 3 To 14
Cells(if1,
6) = if1 - 2
Cells(if1,
6) = "18 * " & if1 - 2 & " = " & 18 *
Cells(if1, 6)
Next
'19
For
ig = 3 To 14
Cells(ig,
7) = ig - 2
Cells(ig,
7) = "19 * " & ig - 2 & " = " & 19 * Cells(ig,
7)
Next
'20
For
ih = 3 To 14
Cells(ih,
8) = ih - 2
Cells(ih,
8) = "20 * " & ih - 2 & " = " & 20 * Cells(ih,
8)
Next
'21
For
ii1 = 3 To 14
Cells(ii1,
9) = ii1 - 2
Cells(ii1,
9) = "21 * " & ii1 - 2 & " = " & 21 * Cells(ii1,
9)
Next
'22
For
ij = 3 To 14
Cells(ij,
10) = ij - 2
Cells(ij,
10) = "22 * " & ij - 2 & " = " & 22 * Cells(ij,
10)
Next
'23
For
ik = 3 To 14
Cells(ik,
11) = ik - 2
Cells(ik,
11) = "23 * " & ik - 2 & " = " & 23 * Cells(ik,
11)
Next
End
If
'-------------------------------------------------------------------------------
If
ComboBox1.Text = "" Then 'if not select anything
Range("A2:K14").Select 'select all
formular area
Selection.ClearContents 'clear all range a2
to k14
End
If
End
Sub
Private
Sub UserForm_Initialize()
ComboBox1.AddItem "2 To 12"
ComboBox1.AddItem "13 To 23"
End
Sub
เสร็จแล้วกด Shift
+ F7 เพื่อกลับมาที่ Userform จากนั้นกด F5 เพื่อสั่งให้โปรแกรมทำงาน (Run)ตามโค้ด vba ที่เขียนไว้ ก็จะได้ภาพผลลัพธ์เป็น
· ถ้าเรากดปุ่ม Create Formular ตอนนี้เลย โดยที่เราไม่มีการเลือก
ช่วงของสูตรคูณก่อน ก็จะเป็นการเคลียร์พื้นที่ผลลัพธ์ให้ว่างๆ(หรือเท่ากับว่าไม่มีอะไรเกิดขึ้นนั่นเอง)
· แต่ถ้าเราเลือกช่วงของสูตรคูณก่อนแล้วกดปุ่ม Create Formular ผลลัพธ์ก็จะเป็นอย่างภาพด้านล่างนี้
นั่นคือ มีการทำงานตามเงื่อนไขที่เรากำหนดไว้ใน vba ให้แสดงสูตรคูณตามช่วงที่เราเลือกนั่นเอง
ดูภาพผลลัพธ์ด้านล่างประกอบด้วยจ๊ะ
ถ้าเลือกช่วง 13 To 23 สูตรคูณแม่ 13 ถึง 23 ก็จะแสดงออกมาแทนที่ แม่ 2 ถึง 12 ดังภาพด้านล่างนี้
ทุกอย่างเป็นอันเสร็จสมบูรณ์ครับ...ขอบคุณที่อ่านจนจบครับ