วันจันทร์ที่ 24 กันยายน พ.ศ. 2555

คำสั่ง IF และการตัดสินใจ ใน VBA

กลับมาอีกครั้งหลังจากไปเตร็ดเตร่ กับเรื่องราวอื่นๆในชีวิตสะนาน จนบางทีลืมไปว่าเขียน Blog ไว้ยังไม่สำเร็จตั้งหลายบทความ วันนี้ก็เลยกลับมาทำให้สำเร็จสักเรื่อง กับบทความที่ไม่ยาวมาก นั่นคือ คำสั่ง IF

คำสั่ง IF ใช้ในการตัดสินใจในการเขียนโปรแกรมที่มีทางเลือกให้โปรแกรมมากกว่า 1 ทาง เช่น
ตัวอย่างที่ 1
              ถ้า  a > 10 -->  b=10  หรือ
              ถ้า  a <=10  (อ่านว่า a น้อยกว่าหรือเท่ากับ 10)  --> b=20

     จะเห็นว่า ค่าของ b ตามตัวอย่างข้างต้นนั้นขึ้นอยู่กับค่าของ a  ซึ่งมีอยู่ 2 กรณีคือ a มีค่าน้อยกว่า 10 และ a มีค่ามากกว่าหรือเท่ากับ 10
     ซึ่งเห็นว่ามีทางเลือกของโปรแกรมมากกว่าหนึ่งทาง เราสามารถเขียนโปรแกรมแทนการคิดแบบนี้ได้ดังนี้ครับ
รูปแบบที่ 1
------------------------------------------------------------------------------------------------------------

       If (ประโยคเงื่อนไขทางคณิตศาสตร์) Then
           การกระทำชุดที่ 1 สำหรับกรณีที่ ประโยคเงื่อนไขเป็นจริง (มีได้มากกว่าหนึ่งคำสั่ง)
        Else
           การกระทำชุดที่ 2 สำหรับกรณีที่ ประโยคเงื่อนไขเป็นเท็จ (มีได้มากกว่าหนึ่งคำสั่ง)
        End If 
----------------------------------------------------------------------------------------------------------
ประโยคเงื่อนไขทางคณิตศาสตร์ จะต้องสามารถให้ค่า True หรือ False ได้ ซึ่งต้องเป็น

  • สมการ บมีเครื่องหมาย =ล
  • อสมการ [มีเครื่องหมาย <, <=,  >,  >=, <>  ]
  • ตัวแปร บที่มีค่าเป็น True หรือ False] โดยที่เราสามารถกำหนดค่าให้ตัวแปรเป็น True หรือ False ได้โดยตรง เช่น a=True   หรือ  a=False


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


        If (a < 10) Then
           b = 10
        Else
           b = 20
        End If 

ในกรณีที่ มีหลายๆเงือนไข หรือมีจำนวนเงื่อนไขมากว่า 2   เช่น
ตัวอย่างที่ 2
         ถ้า a>10             --> b=1
         ถ้า  10> a > 20   --> b=2
         ถ้า  20> a > 30   --> b=3
         ถ้า  30> a > 40   --> b=4

รูปแบบการเขียนคำสั่ง IF มีดังนี้ครับ
รูปแบบที่ 2
----------------------------------------------------------------------------------------------------------


       If (ประโยคเงื่อนไขทางคณิตศาสตร์ที่ 1) Then 
           การกระทำชุดที่ 1 สำหรับกรณีที่ ประโยคเงื่อนไขเป็นจริง (มีได้มากกว่าหนึ่งคำสั่ง) 
        ElseIf (ประโยคเงื่อนไขทางคณิตศาสตร์ที่2 ) Then 
           การกระทำชุดที่ 2 สำหรับกรณีที่ ประโยคเงื่อนไขเป็นจริง (มีได้มากกว่าหนึ่งคำสั่ง) 
        ElseIf (ประโยคเงื่อนไขทางคณิตศาสตร์ที่3 ) Then 
           การกระทำชุดที่ 3 สำหรับกรณีที่ ประโยคเงื่อนไขเป็นจริง (มีได้มากกว่าหนึ่งคำสั่ง) 
        End If  

-------------------------------------------------------------------------------------------------------
หมายเหตุ  เราสามารถมี ElseIf ...Then  ได้ไม่จำกัดจำนวน ขึ้นอยู่กับจำนวนเงื่อนไขของเรา



เราสามารถเขียนโปรแกรมตามเงื่อนไขจากตัวอย่างที่่ 2 ตามรูปแบบที่2 ได้ดังนี้

If (a<10) Then
  b=1
ElseIf (a>10 And a<20) Then
  b=2
ElseIf (a>20 And a<30) Then
  b=3
ElseIf (a>30 And a<40) Then
 b=4
End If

ถ้าในกรณีที่ เงื่อนไขสุดท้าย เป็นเงื่อนไขที่ต้องทำถ้าเงื่อนไขก่อนหน้านี้ไม่จริงสักอัน เราจะไม่ใช้
ElseIf ...Then กับเงื่อนไขสุดท้าย แต่จะเปลี่ยนเป็น Else แทน เช่น


ตัวอย่างที่ 3
         ถ้า score >= 80             --> grade=A
         ถ้า 70<= score <80        --> grade=B
         ถ้า  60<= score <70        --> grade=C
         ถ้า  50<= score <60        --> grade=D
         ถ้า score <50                  --> grade=F 

เราสามารถเขียนโปรแกรมตามตัวอย่างที่ 3 ได้โดยจัดให้เงื่อนไข score<50 ไว้ล่างสุด เพื่อเป็นการบอกว่าถ้าเงื่อนไขต่างๆก่อนหน้านี้ไม่จริงให้ทำตามเงื่อนไขสุดท้ายนี้ โดยใช้ Else (ไม่ใช่ ElseIf...Then) ดังนี้

If(score>=80) Then
    grade="A"
ElseIf(70<= score And score<80) Then
    grade="B"
ElseIf(60<=score And score<70) Then
    grade="C"
ElseIf(50<=score And score<60) Then
    grade="D"
Else      ' เงื่อนไขสุดท้าย ใช้ Else แทน ElseIF...Then ถ้าไม่มีเงื่อนไขก่อนหน้านี้เป็นจริง ให้ทำตรงนี้ 
    grade="F"   
Endif

นอกจากนี้ยังมีกรณีพิเศษอีกเช่น มีเงื่อนไขที่มี 2 ทางเลือก แต่ว่าทางเลือกหนึ่งในสองนี้คือไม่ต้องทำอะไร เช่น
ตัวย่างที่ 4
     ถ้า a>0  --> b=b+1
     ถ้า a=0 และ a<0   --> ไม่ต้องทำอะไร
ถ้าเขียนโปรแกรมตามรูปแบบที่ 1 จะได้ว่า

If(a>0) Then
    b=b+1
Else

End If
จะเห็นว่าหลัง Else ไม่ต้องมีคำสั่งอะไร
เราสามารถเขียนโปรแกรมให้สั้นลงได้ โดยเขียนเพีงบรรทัดเดียวได้ โดยที่ไม่ต้องมี Else หรือ ElseIf...Then ได้ดังนี้

If(a>0) Then b=b+1

เพียงเท่านี้เราก็สามารถเขียนคำสั่ง IF เพื่อประกอบการตัดสินใจได้แล้วนะ ^^

เพิ่มเติม:

  1. เงื่อนไขที่อยูหลัง If หรือ ElseIf นั้นจะต้องเป็น สมการ อสมการ หรือ ตัวแปร ที่สามารถให้ค่าเป็นจริงหรือเป็นเท็จได้ 
         สมการ  (a+2=b-6)
         อสมการ (a<c-5)
        ตัวแปร (ที่มีค่า เป็น True หรือ False)
  1. อสมการที่ใช้ใน VBA มีดังนี้ 


  • <   น้อยกว่า
  • <= น้อยกว่าหรือเท่ากับ
  • >  มากกว่า
  • >= มากกว่าหรือเท่ากับ
  • <> ไม่เท่ากับ (เขียน < และ > ติดกัน)
3. เงือนไขที่ประกอบด้วย หลายๆเงือนไขต้องมีตัวเชื่อม เช่น And  หรือ Or ตัวอย่าง เช่น (a>0 And a<5)
   หรือ (a<5  Or  a>10)





วันอาทิตย์ที่ 10 มิถุนายน พ.ศ. 2555

การเก็บค่าจากเซล์ และการกำหนดค่าให้เซล โดย VBA

ห่างไปนานกับการเขียนบทความของ Thai Excel VBA Community นะครับ วันนี้พอมีเวลาบ้าง เลยกลับมาพร้อมกับบทความอีกเรื่องก็คือ การเก็บหรือดึงค่าจากเซล์ในเวิร์กชีต มาประมวลผลในโปรแกรม และการนำค่าไปใส่ไว้ในเซล์ของ เอกเซล ซึ่งทำโดยใช้ โค้ด VBA ล้วนๆนะครับ

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

เริ่มต้นด้วยตัวอย่างคงจะทำให้เข้าใจง่ายกว่า...มาเร้ย
ตัวอย่างที่ 1 ผมมีข้อมูลเก็บไว้ในเวิร์กชีตที่ชื่อว่า "sarary" ซึ่งต่อไปจะเรียกเวิร์กชีตสั้นๆว่า ชีต แล้วกันนะครับ แล้วชีต "sarary" นี้ก็เป็นชีตลำดับที่ 2 ของไฟล์ (การไล่ลำดับชีตจะนับจากซ้ายสุดเป็น ชีตที่ 1 ไล่ไปทางขวาเพิ่มขึ้นทีละ 1) ดูตามรูปด้านล่างประกอบ
ในรูปแสดงให้เห็นว่าไฟล์มี 3 ชีต คือ report (ซ้ายมือสุด)  , sarary (ในวงกลมสีแดง) และ extra (ขวามือสุด)


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


OT = Sheets("sarary").Cells(5,4).value    หรือ
OT = Sheets(2).Cells(5,4).value 


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

Sheets("ชื่่อชีตที่ต้องการ") ในที่นี้ชื่อชีตที่ต้องการคือ sarary ดังนั้นใช้  Sheets("sarary") 

หรืออาจระบุชีตเป็นลำดับที่จากซ้ายก็ได้ดังเช่น

Sheets(ลำดับของชีตจากซ้ายสุดในที่นี้ชื่อชีตที่ต้องการคือ sarary อยู่ในลำดับที่ 2 จากซ้าสุด ดังนั้นใช้  Sheets(2) 

ข้อสังเกตุ 
1. หลังคำว่า Sheet จะมี s ด้วยนะ กลายเป็น Sheets
2. หากใช้ชื่อชีต ต้องมีเครื่องหมายคำพูดครอบชื่อชีตไว้ด้วย แต่ถ้าใช้ตัวเลขลำดับชีตไม่ต้องมีเครื่องหมายคำพูดครอบตัวเลข

หลังจากนั้นก็ระบุเซล์ที่ต้องการเก็บค่าต่อจาก Sheets("sarary")   หรือ Sheets(2)   ได้เลยโดยการคั่นด้วยจุด ( . )

การระบุตำแหน่งเซล์จะต้องบอกด้วย แถว และ คอลัมน์ เช่น เซลตำแหน่ง D5 นั้น จะอยู่แถวที่ 5 (นับ คือแถวบนสุด ไล่ลงมา) และอยู่คอลัมน์ที่ 4 (นับ 1 คอลัมน์ซ้ายสุด ไล่ไปทางขวา) ดังนั้นเราสามารถระบุตำแหน่งของเซล์ D5 ได้คือ

Cells(5,4)  แล้วก็เติม .value ต่อท้ายเข้าไปเพื่อเป็นการบอกถึงการเก็บค่าของเซล์

เมื่อนำไปต่อกับการระบุชีต จะกลายเป็น


Sheets("sarary").Cells(5,4). value      หรือ  Sheets(2).Cells(5,4).value 


เป็นอันเสร็จเรียบร้อยสำหรับการเก็บค่าจากเซล์ของชีตที่ต้องการ ถ้าต้องการเก็บไว้ในตัวแปร OT ก็เพียงกำหนดลงไปเลยว่า OT เท่ากับค่าที่เราเก็บมาดังนี้


OT = Sheets("sarary").Cells(5,4).value    หรือ
OT = Sheets(2).Cells(5,4).value 


โปรแกรมจริง ชื่อ read_cell
Sub read_cell()
    OT = Sheets("sarary").Cells(5,4).value
End Sub

ตรวจสอบการทำงานเก็บค่าจากเซล์ว่าถูกต้องหรือไม่ โดยเพิ่มคำสั่ง MsgBox เพื่อแสดงค่า OT ในรูปแบบของกล่องโต้ตอบออกมา โดยเพิ่มคำสั่งต่อท้ายเข้าไปหลังเก็บค่ามา (ดูบทความเกี่ยวกับ MsgBox ได้ที่ http://thaiexcelvba.blogspot.com/2012/01/msgbox-excel-vba.html)

Sub read_cell()
    OT = Sheets("sarary").Cells(5,4).value
    MsgBox(OT)
End Sub


เมื่อทดลอง รันโปรแกรม ก็จะมีกล่องข้อความ(จากคำสั่ง MsgBox) แสดงค่า OT ที่ไปเก็บมาดังรูปด้านล่าง ซึ่งแสดงค่า 700 ออกมา ....ถูกต้อง ^^



ส่วนการกำหนดค่าให้เซล์ ก็ไม่มีอะไรยากเลยครับ เพียงแต่สลับคำสั่งจากซ้ายเป็นขวา และขวาเป็นซ้าย ดังนี้

รูปแบบ

เซล์ที่ต้องการ = ค่าที่กำหนด 

เช่น Sheets("sarary").Cells(5.4).value = OT  เป็นต้น

ลองมาดูโปรแกรมที่มีทั้งการเก็บค่า และการกำหนดค่า ในเซล์


Sub read_cell()
   sarary =  Sheets("sarary").Cells(5,3).value   'เก็บค่าเงินเดือน ของมีนาคม จากเซล C5
   OT = Sheets("sarary").Cells(5,4).value        'เก็บโอที ของมีนาคม จากเซล D5
   allowance = Sheets("sarary").Cells(5,5).value        'เก็บเบี้ยเลี้ยง ของมีนาคม จากเซล E5    
   income = sarary + OT + allowance        'คำนวณค่ารายรับ = เงินเดือน + โอ ที +   เบี้ยเลี้ยง
   Sheets("sarary").Cells(5,6).value= income      'นำค่ารายรับที่ได้ไปเป็นไว้ในเซล F5
End Sub



เมื่อ รัน โปรแกรม (ปุ่ม F5) ก็จะได้ผลลัพธ์รายรับของเดือนมีนาคม เท่ากับ 25850 ไปเก็บไว้ที่เซล F5  ดังรูปด้านล่าง

ไม่ยากเลยไช่ไหมละครับ ลองไปประยุกต์ใช้นะครับ


ขอให้มีความสุขกับ VBA ทุกคนนะครับ ^^


ปล.สำหรับคนที่ยัไม่ได้ติดตามบทความของ Thai Excel VBA Community มาตั้งแต่ต้น สามารถศึกษาได้ตามลำดับ ...ตามนี้นะครับ



วันอาทิตย์ที่ 29 มกราคม พ.ศ. 2555

รับข้อมูลจากผู้ใช้ด้วย Inputbox

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

ซึ่งในภาพจะเห็นว่า มีข้อความให้ผู้ใช้กรอกชื่อตนเองใส่เข้าไปในช่อง นอกจากนี้ก็ยังมีปุ่ม อยู่ 2 คือ OK และ Cancel เพื่อแสดงการตอบรับหรือปฏิเสธกล่องโต้ตอบนี้

รูปแบบ

     inputbox("ข้อความที่ต้องการแสดงออกทางกล่องโต้ตอบ")


ตัวอย่าง
    ผมต้องการให้ผู้ใช้กรอกชื่อตนเองลงในช่องรับข้อมูล แล้วกดปุ่ม OK ลงในโปรแกรมย่อย (sub)ที่ชื่อว่า request ที่มีหนึ่งคำสั่งคือ inputbox อยู่ภายใน Code ของโปรแกรมสามารเขียนได้ดังนี้


Sub request()
    InputBox ("Please type your name in the box below and then click OK.")
End Sub

เมื่อทำการทดสอบการทำงานของโปรแกรม โดยการกดปุ่ม F5 จะได้ผลลัพท์ดังนี้


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

Sub request()
    UserName = InputBox("Please type your name in the box below and then click OK.")
End Sub

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

Sub request()
    UserName = InputBox("Please type your name in the box below and then click OK.")
    MsgBox (UserName)
End Sub

เมื่อทำการทดสอบการทำงานของโปรแกรม โดยกดปุ่ม F5 แล้วป้อนคำว่า VBA เข้าไปในช่องรับข้อมูลแล้วกดปุ่ม OK จะพบว่ามีกล่องโต้ตอบแสดงข้อความ VBA ออกมา ซึ่งแสดงว่าตัวแปร UserName เก็บค่าที่เราป้อนเข้าไปถูกต้อง ผลลัพธ์ดังแสดงในภาพข้างล่าง




จะเห็นว่าการใช้งานกล่องโต้ตอบแบบ Input Box นั้นง่ายมาก 

ขอให้สนุกกับการใช้ Input Box นะครับ ^^

msgbox คำสั่งแรกใน Excel VBA

เริ่มเขียน VBA ครั้งแรกต้องนี่เลยครับ การแสดงข้อความโต้ตอบกับผู้ชมด้วยคำสั่ง  msgbox

รูปแบบ
       msgbox("ข้อความที่ต้องการโต้ตอบออกมา")

ตัวอย่าง 
ผมจะสร้างโปรแกรมย่อย (sub) ที่ชื่อว่า response ที่มีหนึ่งคำสั่งอยู่ภายใน โดยใช้คำสั่ง msgbox ให้แสดงข้อความโต้ตอบออกมาว่า I love you.


Sub response()
    MsgBox ("I love you.")
End Sub


หลังจากนั้น ก็ทดสอบการทำงานของโปรแกรม โดยการกดที่ปุ่ม  Run sub ที่มีหน้าตาคล้ายๆกับรูป
หรือ กดคีย์ลัด F5 แทนก็ได้ครับ แล้วโปรแกรมก็จะแสดงข้อความโต้ตอบออกมาลักษณะดังรูป (ภาพนี้ใช้ MS Excel 2007)




เมื่อทดลองเปลี่ยนข้อความจาก I love you. เป็น Thai Excel VBA  ตาม Code ข้างล่าง ก็จะได้ผลลัพท์เป็น


Sub response()
    MsgBox ("Thai Excel VBA Community.")       
End Sub


เห็นไม๊ครับว่า ง่ายนิดเดียวเอง ลองนำไปประยุกต์ใช้นะครับ

ขอให้มีความสุขกับ message box นะ ^^



ก้าวแรก กับ VBA ใน เอกเซล

VBA หรือ Visual Basic for Application นั้น เป็นอีกส่วนที่เสริมมากับ เอกเซล เพื่อให้ผู้ใช้งานในการคำนวณขั้นสูงได้ปรับแต่งการทำงานของโปรแกรมได้ด้วยตัวเอง ผู้ใช้ที่จะเข้ามาใช้บริการในส่วนนี้ก็มักจะเป็นกลุ่มที่มีนิสัย ชอบปรับแต่งอะไรด้วยตัวเอง (customize) ผมเองก็เช่นกันที่เวลาติดตั้งโปรแกรมอะไรๆเสร็จก็มักจะต้องเข้าเครื่องมือ Tool แล้วตามด้วย option หรือ customize ...^^

นอกจากนี้หากคุณคิดจะใช้งาน VBA คุณจะต้องเป็นคนที่ชอบการเขียนโปรแกรมหรือมีความสามารถในการเขียนโปรแกรมอยู่บ้างแล้ว เช่นเกี่ยวกับคำสั่ง If  แบบต่างๆ  , การวน Loop เป็นต้น พื้นฐานการเขียนโปรแกรมก็มาจากภาษา VB หรือ Visual Basic ซึ่งมีการปรับแต่งการทำงานและคำสั่งต่างๆ ให้เข้ากับการทำงานต่างๆของ เอกเซล และ นอกจากเอกเซลแล้ว โปรแกรมในตระกูล MS Office ทุกตัวก็มี VBA ฝังอยู่ด้วยเช่นกัน เพียงแต่ว่าไม่ค่อยเป็นที่รู้จัก หรือแม้แต่โปรแกรมนอกค่าย Microsoft อย่าง AutoCAD ของค่าย AutoDesk ก็ยังมีส่วนเสริม VBA เช่นกัน เห็นไหมล่ะครับว่า VBA นั้นเป็นที่นิยมแค่ใหน

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

การเข้าใช้งาน VBA
สำหรับ เอกเซลแต่ละเวอร์ชันก็มีการปรับปรุงหน้าตา หรือเมนู ต่างกันไปทำให้บางทีแทบหากันไม่เจอเลยทีเดียว 555 แต่คีย์ลัดสำหรับเข้าใช้งานจะเหมือนกันทุกเวอร์ชันก็คือ
Alt + F11 (กดปุ่ม Alt พร้อมกับปุ่ม F11)

หน้าตาทั่วไป
 ตอนนี้เอกเซลที่ผมใช้คือ เวอร์ชัน 2007 ก็เลย capture หน้าต่าง VBA หลังจากกดปุ่ม (Alt + F11) มาให้ดู หน้าตาทั่วไปก็ประกอบด้วย แถบเมนูด้านบนสุด ถัดลงมาก็เป็น แถบเครื่องมือ ถัดลงมาทางด้านล่างซ้ายก็เป็นหน้าต่างเล็กๆสองอันนั่นก็คือ Project window และ Property window และที่เห็นในภาพสีเทาๆใหญ่ๆด้านล่างขวาก็คือ พื้นที่ทำงานซึ่งได้แก่การเขียน code หรือการสร้าง user form 





แถบเมนู





แถบเครื่องมือ






หากต้องการเริ่มเขียนโปรแกรม ภาษา VBA ก็ไปที่เมนู Insert แล้วเลือก Module ก็จะปรากฏหน้าต่างย่อยที่อยู่ในหน้าต่างรวมหรือ workspace ขึ้นมาอีกอันซึ่งเริ่มเขียนโปรแกรมได้

หรือหากต้องการสร้างกล่องโต้ตอบขึ้นมาใช้เอง ก็เลือก Insert > User form