วันอาทิตย์ที่ 7 กรกฎาคม พ.ศ. 2556

Excel vba : จำลองการสร้างสูตรคูณ

  Excel vba ขอเสนอตัวอย่างที่สุดแสนจะง่ายดาย สามารถทำตามและเข้าใจได้ง่ายๆแม้ว่าคุณจะเป็นแค่เด็กประถมก็ตาม เพราะว่าเราจะแสดงการใช้ Exc... thumbnail 1 summary


  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 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 ดังภาพด้านล่างนี้

ทุกอย่างเป็นอันเสร็จสมบูรณ์ครับ...ขอบคุณที่อ่านจนจบครับ