คมู่ อื การใชง้ าน
ก่อนเร่ิมเรียนรู้การเขียน VBA
โปรแกรม Excel เป็ นโปรแกรมพืน้ ฐานสําหรับวิศวกรในการทํางาน ออกแบบ ทําใบเสนอราคา บ้างครัง้ ก็ใช้ทํางาน
แทนโปรแกรม Word เน่ืองจากสะดวกในการทํางานเป็ น เซลและการใช้สตู รในการคาํ นวณงานตา่ งๆ
คาํ สงั่ ตา่ งๆ ที่มีใน Excel สว่ นใหญ่จะมีมากพอที่จะใช้ทํางานสาํ หรับงานทว่ั ไป รวมทงั้ มี Macro ช่วยในการทํางาน
ให้สะดวกและรวดเร็วขนึ ้ ถ้าได้เรียนรู้การใช้งานอยา่ งลกึ ซงึ ้
สําหรับวศิ วกรท่ีนํา Excel มาใช้การออกแบบโครงสร้างหรือเขียน Shop Drawing ซง่ึ จําเป็ นต้องเขียนรูปประกอบ
รายการคาํ นวณ สว่ นใหญ่ที่ผ้เู ขียนเห็นใน โปรแกรมที่ Download มาใช้งานทว่ั ไป จะเขียนรูปโดยใช้กราฟเส้นตรง แทน
การเขียนรูปจากคาํ สงั่ เขียนรูปของ Excel โดยทวั่ ไปรูปที่ออกมาก็มีความละเอียดสวยงามใช้ได้ และรูปก็สามารถเปลี่ยน
ขนาดได้ตามการเปลย่ี นตวั เลข
การใช้ VBA ในการเขียนรูปแทนกราฟ จะทําได้งา่ ยกวา่ การเขียนโดยกราฟ และสามารถปรับแตง่ รูปได้ตามที่ต้อง
การผ้เู ขียนได้นําเสนอการเขียนไว้ทงั้ สองแบบ
โปรแกรมท่ใี ช้ในการเรียน
1.Window7 หรือ WindowXP
2.Excel2007 (ควรเป็ นเมนภู าษาองั กฤษ)
คุณสมบตั สิ าํ คญั สาํ หรับผู้เขียนโปรแกรม
1.ควรมีความรู้ภาษองั กฤษดพี อสมควร เนื่องจากการเขียนโปรแกรมต้องใช้ภาษาองั กฤษและถ้าแปลคําสงั่ ได้ จะชว่ ย
ให้เข้าใจการใช้คําสงั่ การเลือกเขียนคําสงั่ ได้เร็วขนึ ้
2.ความรู้พืน้ ฐานด้านคณิตศาสตร์ การตงั้ สมการ ตรรกศาสตร์ ตรีโกณมติ ิ
3.ความอดทนในการ ค้นคว้าหาความรู้เพมิ่ เตมิ ปัจจบุ นั การเขียนโปรแกรมสามารถหาตวั อยา่ งการเขียน และการแก้
ปัญหาในการเขียนโปรแกรมได้เกือบทงั้ หมด แตต่ ้องชํานาญในการหา Keyword สาํ หรับค้นหา สว่ นใหญ่ก็ค้นใน
Google
ยทุ ธนา ทบั ทิมทอง
QuickDesign
ตงั้ ค่าก่อนเขียน VBA หรือ Macro
01 คลิก Microsoft Offices
02 คลิก Excel Options
1.เปิ ดเมนสู าํ หรับเขียน VBA
03 เลือก Show Developer tap in the Ribbon
2.ปรับคา่ ความปลอดภยั Macro ให้ใช้งาน Macro และ VBA ได้
04 คลิก Trust Center
คลิก Trust Center Setting... 0
5
1
06 คลิก Macro Settings 07 เลือก
3.รายการใน Menu "Developer" 01 คลิก
02 เปิ ด Editor สาํ หรับเขียน Code
ปรับ Mode Design และ Mode ใช้
03 งาน
คําสงั่ ใช้ใน Form
คําสงั่ ใช้ใน Sheet
ป่ มุ Control ตา่ งๆสาํ หรับใช้งาน
หลักการเขียนโปรแกรม VBA for Excel
1.การตงั้ สตู รตามเซล เพื่อใช้ในการคํานวณ
ในการใช้งานโปรแกรม Excel ทว่ั ไป จะมีตารางและการกําหนดสตู รตามเซล ให้ใช้งานสําหรับการคาํ นวณตา่ งๆ
อยแู่ ล้ว ซงึ่ ทกุ ท่านท่ีใช้ Excel คงจะสามารถใช้งานได้ดี (จะไมแ่ นะนําการใช้งาน)
2.ใช้ Pivot Table ชว่ ยสร้างตารางในการแสดงผล
ผ้เู ขียนเองยงั ไมเ่ คยเขียน (ใช้ VBA ทํางานจะงา่ ยกวา่ ) เคยแตใ่ ช้งาน ซง่ึ จะไมแ่ นะนําการใช้ในครัง้ นี ้
3.การใช้ Macro สร้างคําสง่ั ไว้ใช้งาน
แนะนําการทํางานในบทที่ 1
4.การเขียน VBA for Excel สร้างป่ มุ คาํ สงั่ หรือสร้าง Form สําหรับใช้งาน
แนะนําการทํางานในบทที่ 2
5.การเขียนแบบใน Excel เขียนรูปตดั ตา่ งๆ และเขียนแบบ
2
บทที 1 สร้าง Macro ไว้ใช้งาน
การสร้าง Macro เป็ นวิธีสร้างคําสงั่ อยา่ งงา่ ย ไว้สาํ หรับใช้งาน โดยใช้วิธี Record Macro และเก็บไว้ใช้งาน
ตวั อยา่ ง สร้างคาํ สง่ั รวมผลตวั เลข แล้วระบายสีเซล
01 คลิก Developer
02 คลิก Record Macro
03 พมิ พ์ Rect
04 คลิก OK
1.เลือกเซลตามรูป คลกิ ท่ี "Autosum" 05 คลิก Developer
2.ระบายสีที่เซล ผลรวม
06 คลิก Stop Recording
07 คลิก Macro
08 คลิก Edit
VBA ท่ีได้จากการทํา Macro 3
ลองลบ ผลรวมและการระบายสอี อก
เปิ ด Macro เลือก Rect ลองคลกิ "Run" จะได้ผลรวมและระบายสตี ามท่ีได้ทํา Macro ไว้
09 คลิก Run
จะเห็นวา่ การบนั ทกึ Macro ก็เหมือนการทํา VBA โดยใช้คาํ สงั่
Record Macro ทํางานแทน
กรณีที่ไมร่ ู้การใช้คําสงั่ VBA เขียนโปรแกรม สามารถทําการ
บนั ทกึ Macro แล้วดตู วั อยา่ งได้
การบนั ทกึ Macro จะทําไมไ่ ด้ทกุ คาํ สง่ั เช่นการเขียน เส้น เขียน Shapes ตา่ งๆ Macro จะไมบ่ นั ทกึ ให้
บางครัง้ การทํา Macro อาจใช้สตู รเขียน ตามเซลก็ได้อาจจะง่ายกวา่
(ตามตวั อยา่ ง ถ้าเขียนสตู รตามเซล จะงา่ ยกวา่ )
การทาํ Macro ให้เป็ น Icon ไว้ใช้งาน
01 คลิก
02 คลิก Macro
03 เลือก Rect ได้ Rect คลิก
05 OK
04 คลิก Add
06 คาํ สงั่ ใชง้ าน Macro Rect
4
บทที 2 เขียน VBA (Visaul Basic Application for Excel)
ภาษา VBA เป็ นภาษากลางท่ีใช้กบั โปรแกรมในตระกลู Microsoft ทงั้ หมด รวมถงึ โปรแกรมอื่นที่นําภาษา VBA ไปใช้
เชน่ AutoCAD ถ้าสามารถเขียน VBA บน Excel ได้ก็สามารถนําไปประยกุ ต์ใช้ กบั โปรแกรมอื่นได้ด้วย
โครงสร้างภาษา VBA จะเหมือนกนั ตา่ งตรงรายละเอียดเพิม่ ของแตล่ ะโปรแกรม
การใช้งาน VBA ในงานได้ 2 แบบคือ
1.Form Control คําสงั่ ตา่ งๆ เก็บใน Form
2..ActiveX Controls เป็ นป่ มุ คําสงั่ ที่วางไว้บน Sheet ได้เลย
วธิ ีเขียน โปรแกรมทงั้ 2 แบบเหมือนกนั
ก่อนเริ่มเขียนโปรแกรมจะแนะนําวิธีนําคาํ สงั่ มาไว้ด้านบน (Quick Acess Toolbar..) 01 คลิก
คลกิ ขวาท่ี Toolbar (เพม่ิ คําสงั่ เขียน Shapes)
07 คลิก OK จะมี Icon Shapes ข้ึนมาใหเ้ ลือกใช้
03 เลือก All Commands
02 คลิก
06 เพิม่ Shapes
05 คลิก Add>>
04 เลือก Shapes
Shapes เป็ นคาํ สงั่ สาํ หรับเขียนแบบใน Excel
5
เร่ิมเขียนโปรแกรมแรก (Hello World)
01 เปิ ด Editor สาํ หรับเขียน Code
01 ส่วน Form,Module ส่วนเขียนโปรแกรม
02 คุณสมบตั ิของรายการ
Editor สาํ หรับเขียนโปรแกรม
ลองเขียนโปรแกรมโดยใช้ Form
01 คลิกที่ UseForm
หมายเหตุ คาํ วา่ Code ความหมายคอื ข้อมความท่ีใช้เขียนโปรแกรม
6
01 คลิกเปิ ด Toolbox
UsesForm1 สาํ หรับใส่เคร่ืองมือ
เลอื กป่ มุ คําสงั่ นํามาใสใ่ น Form 02 คลิก
03 สร้างป่ ุมคาํ ส่ังใน Form
04 ดบั เบิลคลิกท่ีป่ ุม
06 Save
05 พมิ พ์ ขอ้ ความตามตวั อยา่ ง
MsgBox เป็ นคําสงั่ สาํ หรับแสดงผลท่ีหน้าจอ
7
การใช้งานโปรแกรมท่เี ขียนเสร็จแล้ว
09 คลิก
07 คลิก UserForm1
08 คลิก Run
มีข้อความ Hello World ขนึ ้ บนกลางจอ
คลกิ ที่ "OK" จะปิ ดข้อความที่แสดง
8
บทท่ี 3 ความรู้พนื้ ฐาน VBA
ความรู้พืน้ ฐานของ VBA ก่อนเขียนโปรแกรมจริง
ความรู้พืน้ ฐานจะใช้ได้กบั การเขียนโปรแกรม VBA ทกุ โปรแกรมของ Microsoft Office
ตวั แปร และชนิดข้อมูล
การเขียนโปรแกรมต้องอาศยั ตวั แปรในการเก็บข้อมลู เหมือนการตงั้ สมการในการเรียนคณิตศาสตร์
การจะเขียนโปรแกรมได้ดีต้องมี ความรู้ทางด้านคณิตศาสสตร์เป็ นพืน้ ฐาน รวมกบั ภาษองั กฤษที่ใช้เป็ นภาษาในการเขียน
สมการ X = Y + 5 ตวั แปร คือ X , Y
ในทางคอมพวิ เตอร์ ตวั แปรท่ีตงั้ จะเก็บในหนว่ ยความจํา และต้องกําหนดชนิดตวั แปรด้วย
ในการเขียนโปรแกรมเริ่มต้นไมจ่ ําเป็ นตอั งใช้ชนิดตวั แปรทกุ แบบ ตวั แปรท่ีผ้เู ขียนใช้มีดงั นี ้
1. Interger ตวั แปรเลขจํานวนเตม็ -2 , -1 ,0 ,1 ,2 เป็ นต้น เก็บได้ (-32,769 ถงึ 32,767)
2. Double เก็บเลขทศนิยม
3. String เก็บตวั หนงั สอื
4. Boolean เก็บตรรกะ ถกู หรือ ผดิ (True ,False)
5. Date เก็นวนั ที่ เดอื น ปี
6. Variant เก็บได้ทกุ แบบ (แตใ่ ช้หนว่ ยความจํามากสดุ 22 bytes)
ทําไมต้องกําหนดชนิดตวั แปร เพื่อกําหนดวา่ ตวั แปรแตล่ ะตวั ใช้ทํางานประเภทไหน เช่น ตวั แปรแบบ สตริงจะนํามา บวก ลบ
ไมไ่ ด้จะผิด (Type Mismatch) ถ้าใช้ ตวั แปร Variant ทงั้ หมดจะใช้แทนข้อมลู ทกุ ชนิด แตใ่ ช้หน่วยความจํามาก (ปัจจบุ นั
Harddisk ของเครื่องคอมพิวเตอร์มีขนาดใหญ่มาก คงไมม่ ีผลกบั การเขียนโปรแกรมใช้งานทวั่ ไป)
การตงั้ ชื่อตวั แปร
Dim ตวั แปร as ชนิดข้อมลู เชน่ Dim A as integer ,Dim B as String
ถ้าเป็ น Variant จะใช้ Dim A ,B ก็ได้ไมต่ ้องกําหนดชนิดตวั แปร (ไมก่ ําหนดถือเป็ น Variant)
การกาํ หนดค่าให้ตวั แปร
ตวั แปรชนิด Interger ,Double กําหนดเป็ นตวั เลข เชน่ A = 5 ,A = 0.05
ตวั แปรชนิด String ต้องอยใู่ นเคร่ืองหมายคําพดู เชน่ B = "ABCD" ,B = "ภาษาไทย"
ตวั แปรท่ีเป็ นคา่ คงที่ใช้ตลอดทงั้ โปรแกรมท่ีเขียน กําหนดเป็ น Const = 3.14159 (คา่ ของ pi)
ก่อนใช้งานตวั แปรต้องประกาศชนิดตวั แปรทกุ ครัง้ เพื่อกนั การผดิ พลาดในการเขียนโปรแกรม
(บางครัง้ พมิ พ์ ผิดพลาดลืมใสเ่ ครื่องหมายคาํ พดู ที่ตวั หนงั สอื โปรแกรมจะคดิ เป็ น ตวั แปร)
การตงั้ ชือ่ ตวั แปร ควรมีตวั อกั ษรตวั ใหญ่ ผสมตวั เล็ก เพือ่ จะไดร้ ู้ว่าพิมพ์ผิดหรือไม่
เช่น Dim Beam as string
9
วิธีสง่ั ในให้โปรแกรมประกาศคา่ ตวั แปรทกุ ครัง้ โดยตงั้ คา่ ที่โปรแกรม
01 คลิก Options....
02 เลือก
กด "OK"
เม่ือตงั้ ชื่อตวั แปรทกุ ครัง้ ต้องสงั่ Dim ถ้าไมส่ งั่ แล้วใช้เลยจะ Error
ภาษา VBA จะไม่คดิ ตวั อกั ษรเล็ก หรือตวั ใหญ่ ตวั แปรท่เี ขียนด้วยตวั อักษรเล็ก หรือตวั อกั ษรใหญ่
จะถือเป็ นตวั แปรเดยี วกัน โปรแกรมจะเปล่ียนตวั อกั ษรให้เองตามท่ตี งั้ ช่ือตวั แปรไว้
ตงั้ Font สาํ หรับเขียนโปรแกรมใน Editor ควรเลอื กที่เขียนภาษาไทยได้
10
การดาํ เนินการ (Operators)
การนําตวั แปรมา บวก ลบ คณู หาร กนั ต้องมีตวั ดําเนินการดงั นี ้
+ บวก > มากกวา่
- ลบ < น้อยกวา่
* คณุ >= มากกวา่ หรือเท่ากบั
/ หาร <= น้อยกวา่ หรือเท่ากบั
\ หาร เอาเฉพาะจํานวนเตม็ = เท่ากบั
^ ยกกําลงั <> ไมเ่ ท่ากบั
mod หารเอาเฉพาะเศษ & นําข้อความมาตอ่ เชื่อมกนั
And เป็ นจริงเม่ือเงื่อนไขเป็ นจริงทงั้ คู่
Or เป็ นเท็จเมื่อเงื่อนไขทงั้ สองเป็ นเท็จ
Not ตรงข้ามกบั เงื่อนไขแรก
ฟังก์ช่ันใช้งานท่วั ไป เก่ียวกับตวั เลข Sqr(4) = 2
Sqr ยกกําลงั 2 Int(3.2) = 3 ,Int(3.9) = 3
Int เลขจํานวนเตม็ โดยเศษตดั ทิง้ abs(-5.68) = 5.68
Abs ทําเป็ นจํานวนบวกทงั้ หมด
Tan ตรีโกณมติ ิ Tan
Cos ตรีโกณมติ ิ Cos
Sin ตรีโกณมิติ Sin
Atn ตรีโกณมติ ิ AcTan
ฟังก์ช่ันเก่ียวกับตวั หนังสือ
Len นบั จํานวนคาํ ในตวั หนงั สอื Len("ADGB") = 4
Left("XXXXX",2) ตดั คาํ โดยนบั จากซ้ายมือ Left("ABCD",2) = AB
Right("XXXXX",2) ตดั คําโดยนบั จากขวามือ Right("ABCD",2) = CD
Mid("XXXXXX",2,3) ตดั คํากลาง เร่ิมจากตวั ท่ี 2 3 ตวั Mid("ABCD",2,3) = D
11
ฟังก์ช่ันเปล่ียนค่าตวั แปร
CStr เปลีย่ นให้เป็ นตวั หนงั สอื
CInt เปลีย่ นเป็ นเลขจํานวนเตม็
CDbl เปลี่ยนเป็ นตวั เลขชนิด Double
Val เปลีย่ นจากตวั หนงั สอื เป็ นตวั เลข เพ่ือใช้คํานวณ (ถ้าเป็ นตวั หนงั สอื จะมีคา่ = 0)
ตวั เลขที่นํามาจาก Cell ของ Excel บางครัง้ โปรแกรมจะดวู า่ เป็ นตวั หนงั สือ ไมส่ ามารถนํามาคาํ นวณได้
ต้องแปลงเป็ นตวั เลขโดย Val ก่อน เช่น
Dim A as Varaint
A = Val(WSH.cells(1,1)) ทําให้ A เป็ นตวั เลขใช้คํานวณตอ่ ได้
ข้อควรระวงั ในการใช้ตวั แปร Variant
Dim A as Varaint
A = Val("12..05") ถ้าพมิ พ์ตวั เลขผิด A = 12 ไมใ่ ช่ 12.05 ทําให้คา่ ที่คํานวณผิด
A = Val("B12..05") ถ้าพิมพ์ตวั เลขผดิ A = 0 ไมใ่ ช่ 12.05 ทําให้คา่ ที่คํานวณผดิ (โปรแกรมไม่ Error
แตท่ ํางานตอ่ จะมีปัญหาทําให้ผลลพั ท์ที่ได้ผดิ พลาด ตรวจสอบยาก)
Dim A as Double
A = Val("12.05") จะได้ A = 12.05 ตรง
A = Val("12..05") โปรแกรมเตือน Error "Type Mismatch" และไมท่ ํางานตอ่ จนกวา่ จะแก้ไขตวั เลขให้ถกู
การ Format ตวั เลข
FormatNumber("XXXXX",2,vbTrue) ทําตวั เลขเป็ นทศนิยม 2 ตําแหน่ง (ไมต่ ดั 0 ออก)
เป็ นคาํ สงั่ ที่ใช้บอ่ ยในการกําหนดตวั เลข เพื่อแสดงผล เชน่
FormatNumber(12.002,2,vbTrue) = 12.00
FormatNumber(12.008,2,vbTrue) = 12.01 ปัดเศษขนึ ้
vbTrue จะทําให้มีเลข 0 นําหน้ากรณี เลขทศนิยม เชน่ .25 จะเป็ น 0.25
Round("XXXXXX",2) ทําเลขเป็ นทศนิยม 2 ตําแหนง่ ตวั อยา่ ง
Round(12.008,2) = 12.01 ปัดเศษขนึ ้
Round(0.08,2) = .08 จะไมม่ ีเลข 0 หน้าจดุ
Round(0.080,3) = .08 ถ้าตวั ท่ี 3 เป็ น 0 จะตดั ทิง้ ไมแ่ สดง
Round ใช้สําหรับคาํ นวณตวั เลข แตถ่ ้าจะแสดงผล หรือพมิ พ์ ควรใช้ FormatNumber
12
การเขียนคาํ ส่ังแบบมีเง่อื นไข (การใช้ If…..else…..End if)
การใช้ if ในการกําหนดเงื่อนไขการทํางาน
If (เง่ือนไขทํางาน) then
คําสงั่ ทํางาน ถ้าเงื่อนไขเป็ นจริง
Elseif (เงื่อนไขการทํางาน) then
คาํ สงั่ ทํางาน ถ้าเงื่อนไขเป็ นจริง
Elseif (เงื่อนไขการทํางาน) then
คาํ สงั่ ทํางาน ถ้าเงื่อนไขเป็ นจริง
Else (ไมม่ ีเงื่อนไขเป็ นจริงเลย)
คาํ สงั่ ทํางาน ถ้าเงื่อนไขเป็ นเท็จ
End if
ข้อควรระวงั สําหรับเง่ือนไข คอื ควรเป็ นเงื่อนไขแบบเดยี วกนั ห้ามใช้เง่ือนไขคนละชนิด
เชน่ If A = 5 then
X = X+1 ถ้าเงื่อนไข A เป็ นจริง จะไมท่ ําเงื่อนไข B
Elseif B = 10 then โปรแกรมจะออกจากเงื่อนไข
Y = Y+5 X =X+1 แต่ Y = 0
End if
ต้องทําเป็ น 2 เง่ือนไข
If A = 5 then
X = X+1
End if
If B = 10 then
Y = Y+5
End if
คําสงั่ IF เป็ นคาํ สงั่ ที่ใช้งานมากในการเขียน โปรแกรมควรฝึกการใช้ให้คลอ่ ง
โดยใช้ร่วมกบั And และ Or เชน่
If A =5 And B = 6 Then A =5 และ B = 6 If เป็ นจริงจะทําคาํ สงั่ ใน If
If A =5 Or B = 6 Then A =5 หรือ B = 6 ตวั ใดตวั หนง่ึ เป็ นจริงจะทําคาํ สงั่ ใน If
ถ้ามีการใช้คาํ สงั่ IF ซ้อนกนั หลายชนั้ อาจจะใช้ ให้ไปทํางานท่ี Module แทน เพ่ือโปรแกรมจะไมย่ าวมาก
13
การเขียนคาํ ส่ังแบบวนซาํ้ Loop (For ………Next …………..)
เป็ นงานวนรอบการทํางานซาํ ้ จนครบจํานวนท่ีกําหนด
For i = 1 to ………………………
คําสงั่ ทํางานจนครบจํานวนท่ีกําหนดไว้
Next i
ตวั อยา่ ง For i = 1 to 10
A=A+i
Next i
คาํ ตอบ A = 55
ในกรณีท่ีไมท่ ราบจํานวนรอบของการวนซาํ ้ ให้ใช้ For Each ……… Next แทน
ตวั แปรที่มารับข้อมลู จาก For Each ถ้าไมท่ ราบชนิดข้อมลู ให้กําหนดเป็ น ตวั แปรชนิด Varaint
ตวั อยา่ งการ เช็ค Sheet ใน WookBook (File Excel ที่ทํางาน)
เม่ือโปรแกรมทํางานจะ แสดงชื่อ Sheet ทงั้ หมด
ข้อดี การใช้ For Each คือ ไมต่ ้องทราบจํานวนข้อมลู ก่อน ก็ทํางานได้
ข้อเสีย คือ ไมม่ ีการกําหนดตําแหน่งก่อนหลงั ของข้อมลู
ชดุ คําสงั่ Do…….While …………….Loop ถ้ายงั ไมช่ ํานาญไมต่ ้องใช้ก็ได้
ถ้ายงั ไมช่ ํานาญจะใช้ For ….Next ร่วมกบั If …...ก็ทําได้ทกุ เงื่อนไข
การใช้ Do…. หรือ While …….. ถ้ากําหนดเง่ือนไขไมถ่ กู ต้องโปรแกรมจะวนไมร่ ู้จบ
(การออกจากโปรแกรมที่ทํางานอยู่ ให้กด Ctrt+Break พร้อมกนั )
ถ้าต้องการออก For.. ใช้ Exit For
14
การใช้ตวั แปรแบบ Array ในการเก็บข้อมูล
การประกาศตวั แปร Array แบบ 1 มิติ
Dim A(5) as Double ประกอบตวั ตวั แปร A(0), A(1), A(2), A(3), A(4), A(5)
ใช้เก็บข้อมลู ที่มีจํานวนมาก และ จะเริ่มจาก 0 เป็ นตวั แรก
การกาํ หนดขอบเขตการใช้งานของตวั แปร
ขอบเขตการกําหนดตวั แปรมี 2 แบบ
แบบท่ี 1 ตวั แปรแบบ Local คอื ตวั แปรท่ีใช้ได้เฉพาะในชดุ คําสง่ั เดียวกนั
เม่ือออกจากชดุ คาํ สง่ั ตวั แบบก็จะไมส่ ามารถใช้งานได้อีก
แบบท่ี 2 ตวั แปรแบบ Global คือตวั แปรท่ีใช้ได้ทกุ คาํ สง่ั ในงานเดยี วกนั คา่ ของตวั แปร
จะเขียนไว้บนสดุ ของโปรแกรม
สามารถสง่ ตอ่ ไปยงั ชดุ คําสงั่ อื่นได้ ตวั แปรจะยกเลกิ เมื่อจบงาน
(ไมม่ ีตวั แปรที่สามารถเก็บคา่ ไว้ได้เม่ือออกจากการทํางาน ถ้าต้องการเก็บข้อมลู ไว้ใช้
เมื่อเปิ ดทํางานครัง้ ตอ่ ไป ต้องหาที่เก็บไว้ที่อื่น เช่น เก็บไว้ใน Cell ของ Excel)
ตวั แปร Global
ตวั แปร Local
ตวั แปรแบบ Global ต้องระวงั คา่ เดมิ ของตวั แปรที่ถกู เก็บไว้จากการใช้งานก่อนหน้า
ถ้าต้องการนํามาใช้ใหม่ ควรกําหนดคา่ ให้ตวั แปรก่อนใช้งาน เช่น i = 1
จากโปรแกรมจะได้คา่ B = 10 เพราะตวั แปร A เป็ น Global สง่ คา่ ข้ามคําสงั่ ได้
15
การสร้างชุดคาํ ส่ังไว้ใช้งานได้หลายครัง้ (Class ,Function ,Public ,Private )
Class ชดุ คําสง่ั ใช้งานท่ีสามารถสง่ ตอ่ ไปใช้งานใน งานอื่นๆได้ เก็บใน Class
ศกึ ษาตอ่ ในขนั้ Advanced
Public ชดุ คําสง่ั ที่เรียกใช้งานได้ ในงานเดยี วกนั โดยใช้ได้หลายครัง้ เก็บใน Module
Private ชดุ คาํ สง่ั ที่ใช้งานได้ ในงานชดุ คําสง่ั เดียวกนั
Function ใช้ชดุ คําสง่ั ที่มีการสง่ ข้อมลู กลบั ไปยงั คําสงั่ ที่เรียกมา เพ่ือนําคา่ ไปใช้ตอ่ เก็บใน Module
Private จะเก็บไว้ใน Form หรือ Worksheet
Public ,Function สว่ นใหญ่เก็บใน Module (จะเก็บที Form ก็ได้)
ชุดคาํ ส่ังสาํ หรับใช้งาน (Controls)
Label สําหรับเขียนข้อความ
Command Button ป่ มุ คําสง่ั ให้โปรแกรมทํางาน
Combo Box เลือกรายการที่ต้องการ
List Box แสดงรายการที่ต้องการ
Check Box เลือกรายการแบบ ใสเ่ ครื่องหมายถกู
Option เลือกรายการแบบสลบั 2 รายการ
Image นํารูปภาพมาใส่
16
การเรียกใช้ Excel โดย VBA
Excel. Application อ้างถงึ Excel
Excel. Workbook อ้างถึง File Excel ที่ใช้งานอยู่ หรือ ทํางานกบั File อ่ืน
Excel. Worksheet อ้างถงึ Sheet ที่ใช้งานอยู่ หรือ กําหนด Sheet
cells อ้างถงึ Cell (มีการอ้างถึงเซลได้หลายแบบ แตจ่ ะใช้แบบเดยี ว)
Row แถว ,แนวนอน
Column คอลมั ,แนวตงั้
การเปิ ดไฟล์ Excel ให้ทํางาน
ลองเปลีย่ นข้อความใน CommandButton1 เป็ นตามตวั อยา่ ง
ลอง Run แล้วกด CommandButton1
โปรแกรม จะสงั่ เปิ ด File "D:\VBA\Exam1.xls"
และเข้าไปที่ Sheet "slab"
หมายเหตุ
Set XLS = New Excel.Application คือการสง่ั ให้โปรแกรม เปิ ดโปรแกรม Excel ใหม่
การเปิ ด Excel ทกุ ครัง้ ต้องสงั่ ปิ ดเม่ือเลกิ ใช้งานแล้ว ถ้าไมส่ งั่ ปิ ด โปรแกรมจะทํางานผิดพลาด
คาํ สงั่ ปิ ด Excel
WKB.Close ปิ ด File
XLS.Quit ปิ ด Excel
17
การจัดการความผดิ พลาดท่เี กดิ ขึน้ ในการเขียน VBA
เมื่อมีความผิดพลาดเกิดขนึ ้ จากการเขียน โปรแกรม หรือการ Run โปรแกรมจะมีการแจ้งโดย MsgBox
ถ้าต้องการดสู ว่ นที่ Error กดท่ี Debug
โปรแกรมจะ HighLight สว่ นท่ีผิดพลาด
ให้ปรับแก้ให้ถกู ต้อง Save แล้วลอง Run ใหม่
(B เป็ นตวั หนงั สือ ไมส่ ามารถคณู กบั 5 ได้ โปรแกรมจะแจ้ง Type Mismatch ใช้ตวั แปรผดิ ประเภท)
การตรวจสอบความผิดพลาดที่เกิดจากการ ทํางานผดิ พลาดของคาํ สงั่ โปรแกรมจะมีคําเตือนให้
ถ้าเป็ นงานทํางานผดิ พลาดเนื่องจากการตงั้ สมการ การใช้สตู รผิด โปรแกรมจะไมเ่ ตือน
เม่ือโปรแกรมทํางานได้ไมผ่ ิดพลาด ต้องตรวจสอบผลลพั ธ์ท่ีได้อีกครัง้ โดยเปรียบเทียบกบั การคาํ นวณ
ด้วยเคร่ืองคดิ เลข
การทํางานผดิ พลาดแบบนีจ้ ะตรวจสอบ หาจดุ ท่ีผิดพลาดยาก ต้องทดลองทํางานโดยการ ป้ อนข้อมลู หลายแบบ
และตรวจสอบดกู ่อนการนําไปใช้งานจริง
การตรวจสอบคา่ ตา่ งๆ ที่เกิดขนึ ้ กบั ตวั แปร สว่ นใหญ่ที่ VBA มีให้คือ Debug.Print
ทําได้โดยการ Run โปรแกรมแล้วเปิ ด Editor VBA
เลือก View เปิ ด Immediate Window
18
ตรวจคา่ A = 250
ปัญหาคือขนั้ ตอนการตรวจสอบต้องทําหลายขนั้ ตอน
ข้อดวี ิธีนี ้คือไมต่ ้องลบ Debug.Print ออก
วิธีที่ผ้เู ขียนใช้ประจําในการตรวสอบคอื
การตรวจสอบคา่ ตา่ งๆ ท่ีเกิดขนึ ้ กบั ตวั แปร จะใช้วิธี แสดงผลทางหน้าจอโดย MsgBox
เม่ือทําการ Run โปรแกรมจะแสดงผลที่หน้าจอ
ไมต่ ้องกบั มาดใู น Editor
ข้อเสีย คอื เมื่อตรวจถกู ต้องแล้วต้องลบออก หรือ ใส่ Comment ไมใ่ ห้แสดงข้อความ
การตรวจสอบความผิดพลาดอีกแบบคอื การเขียน Code VBA ไว้ตรวจในโปรแกรมเลย
คําสงั่ ในการตรวสอบ ต้องเขียนไว้สว่ นต้นของโปรแกรม
1.On Error GoTo …..Line No.
เมื่อมี Error เกิดขนึ ้ ให้โปรแกรมข้ามไปทํางานที่บรรทดั ท่ีกําหนด เช่น
On Error GoTo Line1
…………………………………
Line1:
MsgBox "โปรแกรม Error" (เม่ือเกิด Error โปรแกรมจะแสดงข้อความ)
19
2.On Error Resume Next
เมื่อมี Error เกิดขนึ ้ ให้โปรแกรมทํางานในบรรทดั ถดั ไป
เหมือกบั ไมส่ นใจกบั Error ที่เกิดขนึ ้ การใช้ On Error Resume Next จะใช้ตอ่ เมื่อทราบ ตําแหน่งที่
จะเกิด Error แนน่ อน
ถ้าแนใ่ จวา่ ไมม่ ี Error แบบอื่นที่ไมท่ ราบเกิดขนึ ้ มาด้วย ไมค่ วรใช้ เพราะจะไมท่ ราบวา่ Error ท่ีเกิดขนึ ้ มาจาก
Error ตวั ไหน (บางครัง้ โปรแกรมจะไมแ่ สดงผล หรือทํางานอะไรเลย)
3.On Error GoTo 0
ใช้ตอ่ จาก On Error Resume Next เพ่ือให้โปรแกรมกบั มาตรวจสอบความผิดพลาดอีกครัง้
(โดยทวั่ ไปไมค่ อ่ ยได้ใช้)
20
บทท่ี 4 การใช้ ActiveX Control
ActiveX Control เป็ นคาํ สงั่ ที่ใช้ใสไ่ ว้ใน Sheet ได้โดยไมต่ ้องอาศยั Form
Label สาํ หรับเขียนข้อความ
Command Button ป่ มุ คาํ สง่ั ให้โปรแกรมทํางาน
Combo Box เลือกรายการที่ต้องการ
List Box แสดงรายการที่ต้องการ
Check Box เลอื กรายการแบบ ใสเ่ ครื่องหมายถกู
Option เลอื กรายการแบบสลบั 2 รายการ
Image นํารูปภาพมาใส่
1.CommandButton
เลือก CommandButton จาก ToolBox มาใสใ่ น Sheet กําหนดขนาดโดยการดงึ รูป
คลกิ ขวาท่ีป่ มุ เลือก Properties
ปรับคา่ ตา่ งๆใน Properties
ตงั้ ชื่อป่ มุ คําสง่ั ที่ Name
ข้อความแสดงคาํ สงั่ แก้ที่ Caption
ปรับตวั อกั ษรที่ Font
การเขียนโปรแกรมโดย ดบั เบลิ คลกิ ท่ี CommandButton
เขียน Code โปรแกรมได้
เขียนเสร็จคลกิ ท่ี Save
21
2.Combo Box
เลอื ก Combo Box จาก ToolBox มาใสใ่ น Sheet กําหนดขนาดโดยการดงึ รูป
คลกิ ขวาท่ี Combo Box เลือก Properties
Properties ของ Combo Box มีมาก
ตวั ที่ต้องใช้บอ่ ยคอื
Name ชื่อป่ มุ
Caption ชื่อป่ มุ
ColumnWidths ขนาดช่องเลือก
ListWidth ขนาดชอ่ งแสดง (ต้องเทา่ กนั )
ListRows จํานวนข้อมลู ให้เลอื ก
Font ชนิดตวั อกั ษร
TextAlign ตําแหน่งตวั อกั ษร
การเขียนโปรแกรมโดย ดบั เบลิ คลกิ ท่ี Combo Box
พิมพ์ Code ตามด้านบน เลือก Event เป็ น DropButtonClick
เม่ือคลกิ ท่ี DropButton จะมีรายการให้เลือก
(Me.ComboBox1.Clear สําหรับลบข้อมลู เดมิ )
22
การสร้างป่ ุมสาํ หรับเลือก ภายใน Cell
1.เลอื ก Cell ท่ีต้องการให้มีตวั เลือก เลอื ก Data เลอื ก Data Validation
01 เลือก Cell
02 เลือกขอ้ มูลที่แสดง
ช่อง Allow: เลอื ก List
ช่อง Source : เลอื กข้อมลู ที่ต้องการให้แสดง
คลกิ OK
ข้อมลู ที่แสดงใน Cell ให้เลอื ก
2.การเลือกที่ Cell จะเป็ นการเลอื กอยา่ งเดียวไมส่ ามารถเขียนโปรแกรมได้
23
เขยี นแบบคานโดยกราฟ
การเขียนแบบหน้าตดั คานโดยวีธีใช้กราฟ (ไม่ต้องเขียนโปรแกรม VBA)
โดยทว่ั ไปโปรแกรมออกแบบโดย Excel จะใช้วิธีเขียนรูปตดั โดยใช้ กราฟเส้นตรงแทนการเขียนโดย Shape
วิธีเขียนกราฟเส้นตรง
สมมตุ ไิ ด้ทํารายการคาํ นวณคานเสร็จแล้ว โดย Excel ได้ผลการคํานวณดงั นี ้
ขนาดคาน กว้าง 0.15 ม. ลกึ 0.50 ม. ระยะห้มุ 0.025 ม.
เหลก็ บน 2-DB16 + 1-DB16(สพศ.)
เหลก็ ลา่ ง 2-DB16 + 2-DB16(สพศ.)
ปลอก [email protected]
วิธีการเขียนแบบโดยกราฟ (Chart) 02 คลิก Scatter
01 คลิด Insert
03 เลือกกราฟ เสน้ ตรง
04 กรอบกราฟท่ีได้ สร้างตารางข้อมลู สาํ หรับเขียนกราฟ
ให้สร้างตารางไว้นอกพืน้ ท่ี การคํานวณและพืน้ ท่ี Plot
ปรับขนาดได้ตามเหมาะสม
ตารางท่ี 1 เส้นกรอบภายนอกรูปตดั
XY
0 0 05 สร้างตาราง
0.2 0
0.2 0.5
0 0.5
00
จดุ (0,0) คือมมุ ลา่ งซ้ายของกราฟ
ถ้าต้องการให้คา่ เปล่ยี นตามขนาด กว้าง ลกึ ให้ใสส่ ตู รแทน
1
06 คลิกขวาที่กรอบ คลิก Select Data....
08 พมิ พ์ L1
09 คลิก เลือกค่า X
10 คลิก เลือกค่า Y
07 คลิก Add
เลอื กคา่ X ,Y จากตาราง 1 เส้นกรอบภายนอกรูปตดั
เลอื กเสร็จกด Enter กด OK
เม่ือออกมาที่ Select Data Source กด OK
กราฟท่ีได้จากตารางเส้นกรอบภายนอกรูปตดั
1.ปรับขนาดสเกลแกน X,Y ให้ใกล้เคียงกนั โดย 2.เลือกแกน X คลกิ ขวา คลกิ Format Axis……
ดงึ ท่ีกรอบกราฟเข้า-ออก
2
3.เลอื ก Minimum เป็ น Fixed ท่ี 0.0
เลือก Maximum เป็ น Auto เพ่ือปรับขนาดกราฟได้
4.เลอื กแกน Y แล้วตงั้ คา่ เหมือนแกน X
(เพื่อปรับคา่ (0,0) อยทู่ ่ีลา่ งซ้าย
รูปที่ได้หลงั จากปรับแล้ว 5.ลบตวั เลขแกน X ,Y เส้นกริดแนวนอน ช่ือ ออกให้หมด
โดยเลอื กที่ต้องการลบ คลกิ ขวา คลกิ ท่ี "Delete"
6.ลบจดุ ที่มมุ ออก คลกิ ขวาท่ีจดุ มมุ เลอื ก Format Data Series… 7.เลือก Marker Option เป็ น None
8.เลอื กสเี ส้น Line Color 9.เลือกความหนาเส้น Line Style 3
10.เลอื กกรอบกราฟ คลกิ ขวา เลอื ก Format Chart Area……..
11.ถ้าไมต่ ้องการเส้นกรอบ เลือก Border Color เป็ น No line 12.รูปกรอบที่ได้หลงั จาก ปรับแล้ว
ตารางท่ี 2 เส้นกรอบเหลก็ ปลอก
XY โดยคดิ ระยะห้มุ เหลก็ 0.025 ม.
0.025 0.025 คลกิ ขวาที่กรอบ เลอื ก Select Data….
0.175 0.025 ทําตามขนั้ ตอนทําตารางกรอบภายนอกรูปตดั
0.175 0.475 ปรับแตง่ สี ขนาดเส้น
0.025 0.475
0.025 0.025 เส้นกรอบเหลก็ ปลอก
โดยคดิ มมุ ลา่ งซ้ายเป็ น จดุ 0,0
ถ้าต้องการให้คา่ เปล่ยี นตามขนาด กว้าง ลกึ ให้ใสส่ ตู รแทน
4
ตารางท่ี 3 ตําแหนง่ เหลก็ เส้น การใส่เหล็กเส้น
XY 1.เปลี่ยนชนิดกราฟ
1 0.035 0.465 บน-ซ้าย
2 0.165 0.465 บน-ขวา
3 0.035 0.035 ลา่ ง-ซ้าย
4 0.165 0.035 ลา่ ง-ขวา
5 0.100 0.465 บน-กลาง
6 0.035 0.070 ลา่ ง-กลางซ้าย
7 0.165 0.070 ลา่ ง-กลางขวา
คลิด Change Chart Type
01 ....
02 คลิก
04 คลิก Marker Options เลือก None 03 คลิก Format Data Series..
เอาจดุ ท่ีมมุ เส้นออกทงั้ เส้นนอก-ใน
05 คลิก Select Data...
5
06 คลิก Add
06 พิมพ์ S1
07 คลิก เลือกค่า X จากตาราง 3
08 คลิก เลือกค่า Y จากตาราง 3 รูปท่ีได้จากกราฟ
ลบเส้นออก
ขนั้ ตอนเลอื กทําเหมือนการทําเส้นกรอบ
เลือก Line Color เป็ น No Line 09 คลิก Format Data Sereis...
เลือก Marker Option เป็ น Built-in เลอื ก Type เป็ นวงกลม
ปรับขนาดที่ Size เลือก Marker Fill เลือก Solid fill เลอื กสีดํา 6
รูปท่ีได้หลงั จากปรับแตง่
จะได้รูปตดั คานตามแบบ
การใส่ Dimension
ตารางที่ 4 Dimension ใช้วธิ ีสร้างเส้นเหมือนสร้างเส้นกรอบ
XY 1.เส้น Dimension แนวนอน ใช้ Select Data ตงั้ ชื่อ เป็ น D1
0 0.58 แนวนอน เลอื กข้อมลู แกน X ,แกน Y แนวนอนจากตาราง
0.2 0.58 แนวนอน 2.เส้น Dimension แนวนอน ใช้ Select Data ตงั้ ชื่อ เป็ น D2
0.28 0 แนวตงั้ เลือกข้อมลู แกน X ,แกน Y แนวตงั้ จากตาราง
0.28 0.5 แนวตงั้ 3.การปรับแตง่ เส้น ให้คลกิ ขวา ท่ีเส้น เลือก Format Data Seireis…
ปรับข้อมลู ที่ Line Style ปรับขนาด(Width:) ปรับ Arrow settings
เพ่ือเลอื กชนิดหวั ลกู ศร
รูปที่ได้จาก Dimension
ถ้าต้องการทําเส้นปิ ดหวั ท้าย Dimension ให้สร้างตารางกราฟเส้นเพิม่
7
การใส่ตวั เลขบอกขนาด และ ขนาดเหล็กเส้น
ใช้ TextBox เป็ นตวั บอกขนาดตา่ งๆ (TextBox ไมส่ ามารถ เล่อื นตําแหน่งได้ ต้องมาเลือ่ นให้ตรงตําแหนง่ เอง)
01 คลิก Insert 0 คลิก TextBox
2
ใสต่ ําแหนง่ TextBox
คลกิ ขวา เลือก Format Shapes….
เลือก TextBox ปรับแตง่
(ควรปรับ Internal magin ตามตวั อยา่ ง)
การปรับแตง่ Font ให้เลือกจาก เมนดู ้านบน
Copy TextBox ไปไว้ตามจดุ ตา่ งๆ
การใสส่ ตู รให้ TextBox
1.เลือก TextBox พมิ พ์สตู รไว้ด้านบนใน เมนู
8
รูปท่ีได้หลงั จากการใส่ TextBox
ถ้าต้องการเพิ่มเส้นให้ทําตารางกราฟ ทําเส้นกราฟเพิ่ม
ถ้าต้องการเพิ่มคาํ อธิบาย เพิ่ม TextBox
หรือจะตกแตง่ สี ความหนาเส้นจาก Format Data
การทํารูปทงั้ หมดให้เป็ นกลมุ่ เดยี วกนั
ให้เลอื กรูปกราฟ เลือก TextBox ทงั้ หมด(กด Shift แล้วเลอื ก)
เลือก Group ,Group
เมื่อมีการเลือ่ นรูปจะไปพร้อมกนั หมด
การจดั ทํา Group
9
การทําให้ รูปกราฟปรับเปลี่ยนได้ ตามการเปลี่ยนขนาดคาน
ขนาดคาน กว้าง 0.15 ม. ลกึ 0.50 ม.
เหลก็ บน 2-DB16 + 1-DB16(สพศ.)
เหลก็ ลา่ ง 2-DB16 + 2-DB16(สพศ.)
เหลก็ ปลอก [email protected]
ตารางท่ี 1 เส้นกรอบภายนอกรูปตดั
XY 1.ในตารางตา่ งๆให้ใสส่ ตู รแทนคา่ ดตู ามตวั อยา่ ง
0 0 (มมุ ลา่ งซ้าย กําหนดเป็ น คา่ X =0 ,Y = 0)
0.2 0
0.2 0.5
0 0.5 การปรับขนาดกราฟให้ดงึ ปรับ
00 ท่ีกรอบกราฟได้เลย
TextBox ต้องเลือ่ นปรับเอง
จะเห็นวา่ การเขียนรูปตดั จากกราฟคอ่ ยข้างยาก และบ้างจดุ ก็ไมส่ ามารถปรับได้
10
เขยี นแบบคานโดยVBA
การเขียนแบบหน้าตดั คานโดยวีธี เขียนโปรแกรม VBA
สมมตุ ไิ ด้ทํารายการคาํ นวณคานเสร็จแล้ว โดย Excel ได้ผลการคาํ นวณดงั นี ้
ขนาดคาน กว้าง 0.15 ม. ลกึ 0.50 ม. ระยะห้มุ 0.025 ม.
เหลก็ บน 2-DB16 + 1-DB16(สพศ.) เขียนแบบ
เหลก็ ลา่ ง 2-DB16 + 2-DB16(สพศ.) ป่ มุ กดเพื่อแสดง Form เขียนแบบ
เหลก็ ปลอก [email protected]
ตัวอยา่ งงาน
ขัน้ ตอนการเขียนโปรแกรม
1.เพมิ่ ป่ มุ "เขียนแบบ" โดยใช้ AxtiveX Controls Command Button
เขยี นแบบ
แก้ Caption เป็ น "เขียนแบบ"
ดบั เบลิ คลกิ ที่ป่ มุ "เขียนแบบ" พิมพ์ตามตวั อยา่ ง
ใช้เปิ ด Form "VBAbeam" สําหรับทํางานอนื่ ๆตอ่ ไป
การใช้ป่ มุ ของ ActiveX Controls เพ่ือให้ป่ มุ แสดงบนจอโดยตรง ไมต่ ้องอยใู่ น Form VBA
1
2.คลกิ ท่ี Visual Basic คลกิ Insert คลกิ UserForm จะได้ UserForm1
3.ชอ่ ง (Name) เปลย่ี นช่ือเป็ น "VBAbeam" (ช่ือ Form) เมื่อคลกิ ป่ มุ "เขียนแบบ" ให้เปิ ด Form VBAbeam
UserForm1
4.ช่อง Caption เปลีย่ นเป็ น Draw Beam (ช่ือแสดงบน Title Form)
5.นํา Command Button มาใสใ่ น Form เลอื กจาก Toolbox "Controls"
10 คลิก CommandButton
2
6.คลกิ ท่ี "CommandButton1" ดทู ่ีชอ่ ง Caption เปลี่ยนเป็ น Draw ( ตวั หนงั สอื แสดงท่ีป่ มุ )
7.Copy ป่ มุ Draw มาสร้างป่ มุ Close ,Pan ,OK เปลี่ยนช่ือใน Caption
การ Copy จะชว่ ยให้ไมต่ ้องปรับแตง่ ป่ มุ อีก
วธิ ีการ Copy คลกิ ขวาท่ีป่ มุ Draw กด Copy แล้วกด Paste
เลือ่ นป่ มุ ตามตาํ แหน่ง
8.ดบั เบลิ ้ คลกิ Close พมิ พ์ข้อความ ใช้สาํ หรับปิ ด Form
9.ดบั เบลิ ้ คลกิ Pan พิมพ์ข้อความ ใช้สาํ หรับทํางานใน Worksheet ของ Excel
10.ดบั เบลิ ้ คลกิ OK พมิ พ์ข้อความ ใช้สาํ หรับทํางานใน Form กรอกข้อมลู ใน Form
Close
Pan
OK
11.ดบั เบลิ ้ คลกิ ท่ี Draw เปิ ด Editor เขียน โปรแกรม VBA
การเขียนรูปของ VBA ใน Excel จะใช้ Shape ในการเขียน
เหมือนกบั การเขียนแบบธรรมดา
3
เร่ิมเขียนจากการตงั้ ชื่อตวั แปรสําหรับใช้งาน (ถ้ายงั ไมม่ ี เมื่อต้องการใช้จะมาเพม่ิ ภายหลงั ก็ได้)
ให้ตวั แปร WSH = Sheet ที่ทํางานอยู่ (ActiveSheet)
SC เป็ นสเกลสาํ หรับขยายแบบ 200 เทา่
ตวั แปร W,D,C = Cells ใน WSH ในวงเลบ็ ตวั แรกคือ Row ตวั ท่ีสองคอื Column * สเกล SC
การเขียนแบบรูปสี่เหลย่ี มใช้ Polyline ในการเขียน
การกําหนดจดุ Polyline ใช้ ตวั แปร Array PL(1 to 5,1 to 2) 1 to 5 ให้คา่ Array เริ่มที่ 1 แทนเริ่มที่ 0
PL(1,1) ตวั เลขในวงเลบ็ ตวั แรกเป็ นจดุ ท่ี ,ตวั ที่ 2 เลข 1 คอื คา่ X , เลข 2 คอื คา่ Y
12.ลอง Run โปรแกรมโดย คลกิ ที่ Run
คลกิ ท่ี Draw จะได้รูปสี่เหลย่ี ม
4
13.เขียนเส้นเหลก็ ปลอก พิมพ์ตามตวั อยา่ ง คลกิ Save การปรับแตง่ รูป
เขียนเหมือนเขียนกรอบนอก เพ่มิ ระยะห้มุ
ลอง Run คลกิ ท่ี Draw
14.สร้างป่ มุ Command Button ช่ือ Steel สาํ หรับเขียนจดุ เหลก็ เส้น
ดบั เบลิ คลกิ Steel เปิ ด Editor
Copy สว่ นบน ข้อความมาจาก Draw
15.สร้าง Module เพ่ือเขียนเส้นวงกลมเหลก็
คลกิ ท่ี Insert Module
5
มี Module2 ขนึ ้ มา (มี Module1 แล้ว)
16.ดบั เบลิ คลกิ ท่ี Module2 พมิ พ์ตามตวั อยา่ ง DrawSteel สาํ หรับเขียนเหลก็
Sub หรือใช้ Public sub ก็ได้ (เรียกใช้ได้จากทกุ ที่ในโปรแกรม)
DrawSteel(X1,Y1,XX) ตวั แปรในวงเลบ็ คอื ตวั แปรท่ีถกู สง่ เพ่ือใช้ทํางานตอ่
msoShapeOval เป็ นการเขียน Shape แบบวงกลม X1,Y1 เป็ นจดุ ศนู ย์กลางวงกลม XX คอื ขนาดวงกลม
17.สร้างสว่ นเขียน เหลก็ เส้น ตามมมุ 4 มมุ ก่อน ต้องมีทกุ คาน
พิมพ์สว่ นเพิม่ เตมิ โดย เรียกใช้ Module DrawSteel ที่ทําไว้
Call DrawSteel คอื การเรียกใช้ Sub DrawSteel ที่เขียนไว้ Module
เมื่อ Run คลกิ Steel จะได้เหลก็ ท่ีมมุ 4 มมุ
6
18.สร้างป่ มุ ลบรูป Copy ป่ มุ Draw มาแก้ไข Caption เป็ น "ลบรูป"
ดบั เบลิ คลกิ "ลบรูป"
พิมพ์ตามตวั อยา่ ง เสร็จแล้ว คลกิ Save
คําสงั่ For Each คอื การวน Loop ค้นหา Shape ใน Sheet WSH ทงั้ หมด แล้วกรองโดยคาํ สงั่ IF
Polyline ที่เขียน ถ้าเป็ น Shape จะเป็ น msoFreeform
msoAutoShape เป็ นจดุ แสดงเหลก็
คําสง่ั ลบรูปจะใช้ลบรูปที่เขียนทงั้ หมด ก่อนที่จะเขียนรูปใหม่
17.สร้างป่ มุ Dimension สาํ หรับเขียน Dimension รูปตดั
คลกิ Dimension พมิ พ์ตามตวั อยา่ ง
การสร้าง Dimension จะทําการเขียนเส้น ลกู ศร ก่อน
นํา TextBox มาใสเ่ พ่ือบอกขนาดตวั เลข
7
จาก Code ด้านบนจะเห็นวา่ คําสงั่ ทีสง่ั ให้ทํางานเป็ นภาษาองั กฤษ ถ้าแปลได้ก็จะทราบการทํางานแตล่ ะบรรทดั ได้
เช่น Set Cobj = WSH.Shapes.AddLine(…………………….. เขียนเส้น
Cobj.Line.BeginArrowheadStyle = ถ้าแปลคอื หวั ลกู ศรท่ีจดุ เร่ิมต้นเส้น
เร่ิมจากเขียนเส้น แบบมีหวั ลกู ศร ทงั้ 2 ด้าน
เขียนเส้น หวั -ท้ายลกู ศรแสดงแนว Dimension
เขียน TextBox แสดงขนาด Dimension แล้วปรับแตง่
18.สร้างป่ มุ Text สําหรับเขียน Text แสดงขนาดเหลก็ เส้น
ดบั เบลิ คลกิ Text พมิ พ์ตามตวั อยา่ ง
8
คํานวณตาํ แหน่งท่ีจะเขียนข้อความ เป็ นตวั แปร ให้ปรับได้
WSH.Shapes.AddTextbox(…………………………… เขียนข้อความ
รูปท่ีได้จากการเขียนโปรแกรม
ถ้าต้องการเส้นชีบ้ อกขนาดเหลก็ ก็สร้างคําสง่ั เขียน Line เพิม่
อาจมี TextBox บอกชื่อคาน B1 ,B2 ……
สี ความหนา เส้นปรับได้ทกุ อยา่ ง
ความแตกตา่ งท่ีเห็นระหวา่ งเขียนรูปตดั ด้วยกราฟและ VBA คือ
VBA สามารถกําหนดการเขยี นแบบได้ทกุ อยา่ ง ขนาดเส้น สี รูปแบบตวั อกั ษร
Form ที่ได้ จะปรับแตง่ ให้สวยงาม จะเปลีย่ นรูปแบบป่ มุ ได้
9
รูปท่ีได้จะเห็นวา่ Shape ท่ีได้จะแยกกนั อยู่ เม่ือเคลอ่ื นย้ายรูปจะต้องเลือกให้ครบ
ควรทํา Group ให้รูปตดั
วิธีทาํ Group แบบไม่ใช้โปรแกรม
1.คลกิ เลือกรูปทงั้ หมด
2.คลกิ ขวาท่ีรูป
3.คลกิ ที่ Group .. Group
รูปทงั้ หมดจะเป็ นรูปเดียว
การเขียนโปรแกรม ทาํ Group
สร้างป่ มุ Group สาํ หรับทํารูปให้เป็ น Group
ดบั เบลิ คลกิ ท่ี Group เขียน Code
10
ขนั้ ตอนทํา กรุ๊ปคอนข้างยาก
1.ต้องนบั จํานวน Shape ท่ีต้องการทําเป็ น Group ก่อน
Cobj.Type = 5 เลือกเฉพาะ Line
Cobj.Type = 9 เลือกเฉพาะ Textbox
Cobj.Type = 17 เลือกเฉพาะ AutoShape (เหลก็ เส้น)
เน่ืองจากรูป ป่ มุ คําสงั่ ตา่ งๆ ท่ีอยใู่ น Sheet ก็เป็ น Shape ด้วย ถ้านบั ทงั้ หมด จะเกิน ต้งกรองเอาเฉพาะรูปท่ีต้องการ
2.ต้องนํา Shape.Name เก็บไว้ใน Array AD()
Array ท่ีไมร่ ู้จํานวนแนน่ อน ต้องตงั้ เป็ น Array วา่ งไว้ก่อน AD()
เม่ือนบั จํานวนได้ ใช้คําสงั่ Redim(i) I = จํานวน Shape ท่ีได้จากการนบั
ถ้าตงั้ Array เผื่อเกินไว้โปรแรกมจะ Error เพราะสว่ นท่ีเกินจะมีคา่ เป็ น Null (ไมม่ ีคา่ )
3.เลือกรูปทงั้ หมด และทําเป็ น Group
ถ้าต้องการยกเลกิ Ungroup เลอื กรูป คลกิ ขวา Group … Ungroup
11
ออกแบบพน้ื โดยVBA
1