คู่มือ VBA ที่ดีที่สุด (สำหรับผู้เริ่มต้น) คุณจะต้องการ
แพลตฟอร์มการเขียนโปรแกรม VBA ที่ทำงานในผลิตภัณฑ์ Microsoft Office เกือบทั้งหมดเป็นหนึ่ง(VBA programming)ใน(Microsoft Office)เครื่องมือที่ทรงพลังที่สุดที่ทุกคนสามารถใช้เพื่อปรับปรุงการใช้ผลิตภัณฑ์เหล่านั้น
คู่มือ VBA(VBA) สำหรับผู้เริ่มต้น นี้จะแสดงวิธีเพิ่มเมนูนักพัฒนาซอฟต์แวร์ ให้กับแอปพลิเคชัน (Developer)Office ของคุณ วิธีเข้าสู่หน้าต่างตัวแก้ไขVBA และวิธีการทำงานของคำสั่งและลูป (VBA)VBA พื้นฐาน เพื่อให้คุณสามารถเริ่มต้นใช้งานVBAในExcel , Word , Powerpoint OutlookและOneNote _
คู่มือ VBA(VBA)นี้ ใช้ ผลิตภัณฑ์Microsoft Officeเวอร์ชันล่าสุด หากคุณมีเวอร์ชันก่อนหน้า คุณอาจเห็นความแตกต่างเล็กน้อยจากภาพหน้าจอ
วิธีเปิดใช้งานและใช้งาน VBA Editor(How To Enable & Use The VBA Editor)
ใน ผลิตภัณฑ์ Office ใดๆ ที่ ใช้ในคู่มือนี้ คุณอาจสังเกตเห็นว่าคุณไม่มีเมนูนักพัฒนา ที่อ้างอิง (Developer)เมนูนักพัฒนาใช้ได้เฉพาะในExcel , Word , OutlookและPowerpoint OneNoteไม่มีเครื่องมือในการแก้ไข โค้ด VBAจากภายในแอปพลิเคชัน แต่คุณยังสามารถอ้างอิงOneNote APIเพื่อโต้ตอบกับOneNoteจากโปรแกรม Office อื่นๆ ได้(Office)
คุณจะได้เรียนรู้วิธีดำเนินการนี้ในคู่มือVBA ขั้นสูง ที่กำลังจะมีขึ้น(Advanced VBA)
- หากต้องการเปิดใช้งาน เมนู นักพัฒนาซอฟต์แวร์(Developer)ในผลิตภัณฑ์สำนักงานใดๆ ให้เลือก เมนู ไฟล์(File)แล้วเลือกตัวเลือก(Options)จากเมนูการนำทางด้านซ้าย
- คุณจะเห็นป๊อปอัปเมนูตัวเลือก (Options)เลือกกำหนด Ribbon เอง(Customize Ribbon)จากเมนูนำทางด้านซ้าย
รายการด้านซ้ายประกอบด้วยเมนูและคำสั่งเมนูทั้งหมดที่มีในแอปพลิเคชันOffice นั้น (Office)รายการทางด้านขวาคือรายการที่มีอยู่หรือเปิดใช้งานอยู่ในปัจจุบัน
- คุณควรเห็นDeveloperในรายการทางด้านขวา แต่จะไม่ถูกเปิดใช้งาน เพียง(Just)เลือกช่องทำเครื่องหมายเพื่อเปิดใช้งานเมนูนักพัฒนา(Developer)
- หากคุณไม่เห็นนักพัฒนาซอฟต์แวร์(Developer)ที่ใช้งานได้ทางด้านขวา ให้เปลี่ยนทางซ้ายเลือกคำสั่ง(Choose commands)จากดรอปดาวน์เป็นคำสั่ง(All Commands)ทั้งหมด ค้นหาDeveloperจากรายการและเลือกAdd>>ตรงกลางเพื่อเพิ่มเมนูนั้นในRibbon
- เลือกตกลง(OK)เมื่อคุณทำเสร็จแล้ว
- เมื่อ เมนู Developer เปิด ใช้งานอยู่ คุณสามารถกลับไปที่หน้าต่างแอปพลิเคชันหลักและเลือกDeveloperจากเมนูด้านบน
- จากนั้นเลือกดูโค้ด(View Code)จากกลุ่มตัวควบคุม(Controls)ใน Ribbon เพื่อเปิดหน้าต่างตัวแก้ไขVBA
- ซึ่งจะเปิด หน้าต่างตัวแก้ไข VBAซึ่งคุณสามารถพิมพ์โค้ดที่คุณจะได้เรียนรู้ในหัวข้อถัดไป
- ลองเพิ่มเมนูนักพัฒนา ลงในแอปพลิเคชัน (Developer)Office บางตัวที่ คุณใช้ทุกวัน เมื่อคุณสะดวกที่จะเปิด หน้าต่างตัวแก้ไข VBAแล้ว ให้ไปยังส่วนถัดไปของคู่มือนี้
เคล็ดลับการเขียนโปรแกรม VBA ทั่วไปสำหรับผู้เริ่มต้น(General VBA Programming Tips for Beginners)
คุณจะสังเกตเห็นเมื่อตัว แก้ไข VBAเปิดขึ้น ตัวเลือกการนำทางในแผงด้านซ้ายจะดูแตกต่างจากแอปพลิเคชันOffice หนึ่งไปยังอีกแอปพลิเคชันหนึ่ง(Office)
เนื่องจากวัตถุที่มีอยู่ซึ่งคุณสามารถวาง โค้ด VBAได้ขึ้นอยู่กับวัตถุที่มีอยู่ในแอปพลิเคชัน ตัวอย่างเช่น ในExcelคุณสามารถเพิ่ม โค้ด VBA ลง ในเวิร์กบุ๊กหรือออบเจกต์ของแผ่นงานได้ ในWordคุณสามารถเพิ่ม โค้ด VBAลงในเอกสารได้ ในPowerpointเฉพาะโมดูลเท่านั้น
ดังนั้นอย่าแปลกใจกับเมนูต่างๆ โครงสร้างและไวยากรณ์ของ โค้ด VBAจะเหมือนกันในทุกแอปพลิเคชัน ข้อแตกต่างเพียงอย่างเดียวคืออ็อบเจ็กต์ที่คุณสามารถอ้างอิงได้และการดำเนินการที่คุณสามารถทำกับออบเจกต์เหล่านั้นผ่านโค้ดVBA
ก่อนที่เราจะเจาะลึกลงไปในอ็อบเจกต์และการดำเนินการต่างๆ ที่คุณสามารถทำได้ผ่าน โค้ด VBAอันดับแรก มาดูโครงสร้างและไวยากรณ์ของVBA ทั่วไปที่คุณสามารถใช้ได้เมื่อคุณเขียน โค้ดVBA
จะใส่รหัส VBA ได้ที่ไหน(Where To Put VBA Code)
เมื่อคุณอยู่ใน โปรแกรมแก้ไข VBAคุณต้องใช้กล่องดรอปดาวน์สองกล่องที่ด้านบนของหน้าต่างแก้ไขเพื่อเลือกวัตถุที่คุณต้องการแนบโค้ดไป และเมื่อคุณต้องการเรียกใช้โค้ด
ตัวอย่างเช่น ในExcelถ้าคุณเลือกเวิ(Worksheet) ร์กชีต และเปิดใช้งาน(Activate)โค้ดจะทำงานทุกครั้งที่เปิดเวิร์กชีต
การดำเนินการในเวิร์กชีตอื่นๆ ที่คุณสามารถใช้เพื่อทริกเกอร์ โค้ด VBA ของคุณ รวมถึงเวลาที่เวิร์กชีตเปลี่ยนแปลง เมื่อปิด (ปิดใช้งาน) เมื่อรันการคำนวณเวิร์กชีต และอื่นๆ
เมื่อคุณเพิ่ม โค้ด VBAในตัวแก้ไข ตรวจสอบให้แน่ใจเสมอว่าได้วาง โค้ด VBA ของคุณ บนวัตถุ และใช้การดำเนินการที่ถูกต้องที่คุณต้องการใช้เพื่อทริกเกอร์โค้ดนั้น
คำสั่ง VBA IF(VBA IF Statements)
คำสั่ง IF ทำงานในVBAเหมือนกับที่ทำงานในภาษาการเขียนโปรแกรมอื่นๆ
ส่วนแรกของคำสั่ง IF จะพิจารณาว่าเงื่อนไขหรือชุดของเงื่อนไขเป็นจริงหรือไม่ เงื่อนไขเหล่านี้สามารถเข้าร่วมโดยตัวดำเนินการANDหรือ OR เพื่อเชื่อมโยงเข้าด้วยกัน
ตัวอย่างหนึ่งคือตรวจสอบว่าเกรดในสเปรดชีตสูงกว่าหรือต่ำกว่าเกรด "ผ่าน" และกำหนดสถานะผ่านหรือไม่ผ่านให้กับเซลล์อื่น
If Cells(2, 2) > 75 Then Cells(2, 3) = “Pass” Else Cells(2, 3) = “Fail”
ถ้าคุณไม่ต้องการให้คำสั่งทั้งหมดในบรรทัดเดียว คุณสามารถแยกออกเป็นหลายบรรทัดโดยเพิ่มสัญลักษณ์ "_" ที่ท้ายบรรทัด
If Cells(2, 2) > 75 Then _
Cells(2, 3) = “Pass” Else _
Cells(2, 3) = “Fail”
การใช้เทคนิคนี้มักจะทำให้โค้ดอ่านและแก้ไขจุดบกพร่องได้ง่ายขึ้น
VBA สำหรับลูปถัดไป(VBA For Next Loops)
คำสั่ง IF นั้นยอดเยี่ยมสำหรับการเปรียบเทียบเดี่ยวๆ เช่นตัวอย่างด้านบนของการดูที่เซลล์เดียว แต่ถ้าคุณต้องการวนซ้ำช่วงของเซลล์ทั้งหมด และทำคำสั่ง IF เดียวกันในแต่ละเซลล์ล่ะ
ในกรณีนี้คุณต้องมีลูป FOR
เมื่อต้องการทำเช่นนี้ คุณจะต้องใช้ความยาวของช่วง และวนรอบความยาวนั้นด้วยจำนวนแถวที่มีข้อมูล
ในการดำเนินการนี้ คุณต้องกำหนดช่วงและตัวแปรของเซลล์ แล้ววนซ้ำ คุณจะต้องกำหนดตัวนับเพื่อให้คุณสามารถส่งออกผลลัพธ์ไปยังแถวที่เหมาะสมได้ ดังนั้น โค้ด VBA ของคุณ จะมีบรรทัดนี้ก่อน
Dim rng As Range, เซลล์ As Range (Dim rng As Range, cell As Range)
Dim rowCounter as Integer
กำหนดขนาดช่วงดังต่อไปนี้
Set rng = Range(“B2:B7”)
rowCounter = 2
สุดท้าย คุณสามารถสร้าง ลูป FORเพื่อเลื่อนดูทุกเซลล์ในช่วงนั้นและทำการเปรียบเทียบ
For Each cell In rng If cell.Value > 75 Then _ Cells(rowCounter, 3) = "Pass" Else _ Cells(rowCounter, 3) = "Fail" rowCounter = rowCounter + 1 Next cell
เมื่อ เรียกใช้ สคริปต์ VBA(VBA script)นี้ คุณจะเห็นผลลัพธ์ในสเปรดชีตจริง
VBA ในขณะที่ลูป(VBA While Loops)
ในขณะที่ลู(Loop)ปยังวนซ้ำผ่านชุดคำสั่งเช่นเดียวกับ ลูป FORแต่เงื่อนไขของการวนซ้ำเพื่อดำเนินการต่อเป็นเงื่อนไขที่ยังคงเป็นจริง
ตัวอย่างเช่น คุณสามารถเขียนFOR loop ด้านบนเป็นWHILE loop โดยใช้ตัวแปร rowCounter ดังนี้
While rowCounter < rng.Count + 2 If Cells(rowCounter, 2) > 75 Then _ Cells(rowCounter, 3) = "Pass" Else _ Cells(rowCounter, 3) = "Fail" rowCounter = rowCounter + 1 Wend
หมายเหตุ: จำเป็นต้องมีขีดจำกัดการสิ้นสุด rng.Count + 2เนื่องจากตัวนับแถวเริ่มต้นที่ 2 และต้องสิ้นสุดที่แถว 7 ที่ข้อมูลสิ้นสุด อย่างไรก็ตาม การนับของช่วง (B2:B7) มีเพียง 6 และการวนรอบในขณะที่จะสิ้นสุดเมื่อตัวนับมีค่ามากกว่าตัวนับเท่านั้น ดังนั้นค่า rowCounter สุดท้ายต้องเป็น 8 (หรือ rng.Count + 2 )(GREATER)
คุณยังสามารถตั้งค่าลูป while ได้ดังนี้:
While rowCounter <= rng.Count + 1
คุณสามารถเพิ่มจำนวนช่วง (6) ได้เพียง 1 เท่านั้น เนื่องจากเมื่อตัวแปร rowCounter ถึงจุดสิ้นสุดของข้อมูล (แถว 7) การวนซ้ำจะสิ้นสุดลง
VBA ทำในขณะที่และทำจนกว่าจะถึงลูป(VBA Do While and Do Until Loops)
ลูป Do while และ Do Until เกือบจะเหมือนกับลูป while แต่ทำงานต่างกันเล็กน้อย
- ในขณะที่ลูป(While Loop)จะตรวจสอบว่าเงื่อนไขเป็นจริงที่จุดเริ่มต้นของลูปหรือไม่
- Do-While Loopจะตรวจสอบว่าเงื่อนไขเป็นจริงหรือไม่หลังจากดำเนินการคำสั่งในลูป
- Do-Until Loopจะตรวจสอบว่าเงื่อนไขยังคงเป็นเท็จหรือไม่หลังจากดำเนินการวนซ้ำ
ในกรณีนี้ คุณจะต้องเขียนลูป while ด้านบนใหม่ดังนี้ เป็นลูป Do-While
Do If Cells(rowCounter, 2) > 75 Then _ Cells(rowCounter, 3) = "Pass" Else _ Cells(rowCounter, 3) = "Fail" rowCounter = rowCounter + 1 Loop While rowCounter < rng.Count + 2
ในกรณีนี้ ตรรกะไม่ได้เปลี่ยนแปลงมากนัก แต่ถ้าคุณต้องการให้แน่ใจว่าการเปรียบเทียบตรรกะเกิดขึ้นหลังจากรันคำสั่งทั้งหมดแล้ว (อนุญาตให้รันทั้งหมดไม่ว่าจะเกิดอะไรขึ้นอย่างน้อยหนึ่งครั้ง) ให้ทำในขณะที่ หรือ Do-Until loop เป็นตัวเลือกที่เหมาะสม
VBA เลือกคำชี้แจงกรณีและปัญหา(VBA Select Case Statements)
คำสั่งตรรกะประเภทสุดท้ายที่คุณจะต้องเข้าใจเพื่อเริ่มจัดโครงสร้างโค้ดVBA ของคุณคือ คำสั่งSelect Case
จากตัวอย่างข้างต้น สมมติว่าคุณต้องการมีวิธีการให้เกรดที่ไม่ใช่แค่การผ่านล้มเหลว แต่คุณต้องการกำหนดเกรดตัวอักษรจาก A ถึง F
คุณสามารถทำได้ด้วย คำสั่ง Select Case ต่อไปนี้ :
For Each cell In rng Select Case cell Case 95 To 100 Cells(rowCounter, 3) = "A" Case 85 To 94 Cells(rowCounter, 3) = "B" Case 75 To 84 Cells(rowCounter, 3) = "C" Case 65 To 74 Cells(rowCounter, 3) = "D" Case 0 To 64 Cells(rowCounter, 3) = "F" End Select rowCounter = rowCounter + 1 Next cell
สเปรดชีตที่ได้หลังจาก สคริปต์ VBA นี้ ทำงานจะมีลักษณะดังนี้
ตอนนี้ คุณรู้ทุกสิ่งที่คุณจำเป็นต้องรู้เพื่อเริ่มใช้VBAในแอปพลิเคชันMicrosoft Office ของ คุณ(Microsoft Office)
Related posts
คู่มือ VBA ขั้นสูงสำหรับ MS Excel
13 แป้นพิมพ์ลัดที่ดีที่สุดสำหรับ Microsoft Teams
วิธีสร้างมาโครหรือสคริปต์ VBA ใน Excel
Microsoft Publisher คืออะไร? คู่มือสำหรับผู้เริ่มต้น
วิธีแก้ไขข้อผิดพลาดที่คั่นหน้าไม่ได้กำหนดไว้ใน Word
วิธีใช้ฟีเจอร์ Speak Cells ของ Excel
วิธีแก้ไข Outlook ค้างเมื่อโหลดโปรไฟล์
วิธีแก้ไขแถวใน Excel
Microsoft Teams คืออะไรและทำงานอย่างไร
วิธีแสดงจำนวนคำใน Microsoft Word
วิธีการลบบรรทัดว่างใน Excel
การใช้เครื่องมือค้นหาเป้าหมายการวิเคราะห์แบบ What-If ของ Excel
Microsoft 365 คืออะไร?
วิธีใช้ Flash Fill ใน Excel
แก้ไขข้อผิดพลาด End Tag Start Tag Mismatch เมื่อเปิดไฟล์ DOCX
วิธีส่งออกอีเมลของคุณจาก Microsoft Outlook เป็น CSV หรือ PST
วิธีลบหน้าใน Microsoft Word
วิธีสร้างเอกสาร PDF ใน Microsoft Office
วิธีแทรกแผ่นงาน Excel ลงใน Word Doc
สะกดตัวเลขอย่างรวดเร็วใน Word และ Excel