แพลตฟอร์มการเขียนโปรแกรม VBA ที่ทำงานในผลิตภัณฑ์ Microsoft Office เกือบทั้งหมดเป็นหนึ่งในเครื่องมือที่ทรงพลังที่สุดที่ใครๆ ก็สามารถใช้เพื่อปรับปรุงการใช้ผลิตภัณฑ์เหล่านั้นได้
คู่มือ VBA สำหรับผู้เริ่มต้นนี้จะแสดงวิธีเพิ่มเมนูนักพัฒนาซอฟต์แวร์ให้กับแอปพลิเคชัน Office ของคุณ วิธีเข้าสู่หน้าต่างตัวแก้ไข VBA และวิธีการทำงานของคำสั่งและลูป VBA พื้นฐาน เพื่อให้คุณสามารถเริ่มต้นใช้งาน VBA ใน Excel, Word, Powerpoint Outlook และ OneNote
คู่มือ VBA นี้ใช้ผลิตภัณฑ์ Microsoft Office เวอร์ชันล่าสุด หากคุณมีเวอร์ชันก่อนหน้า คุณอาจเห็นความแตกต่างเล็กน้อยจากภาพหน้าจอ
วิธีเปิดใช้งานและใช้งาน VBA Editor
ในผลิตภัณฑ์ Office ใดๆ ที่ใช้ในคู่มือนี้ คุณอาจสังเกตเห็นว่าคุณไม่มีเมนูนักพัฒนาที่อ้างอิง เมนูนักพัฒนาพร้อมใช้งานใน Excel, Word, Outlook และ Powerpoint เท่านั้น OneNote ไม่มีเครื่องมือในการแก้ไขโค้ด VBA จากภายในแอปพลิเคชัน แต่คุณยังสามารถอ้างอิง OneNote API เพื่อโต้ตอบกับ OneNote จากโปรแกรม Office อื่นๆ ได้
คุณจะได้เรียนรู้วิธีดำเนินการนี้ในคู่มือ VBA ขั้นสูงที่กำลังจะมีขึ้น
- หากต้องการเปิดใช้งานเมนูนักพัฒนาซอฟต์แวร์ในผลิตภัณฑ์สำนักงานใดๆ ให้เลือก ไฟล์ เมนู แล้วเลือก ตัวเลือก จากเมนูนำทางด้านซ้าย
- คุณจะเห็นป๊อปอัปเมนูตัวเลือก เลือก กำหนด Ribbon เอง จากเมนูนำทางด้านซ้าย
รายการด้านซ้ายประกอบด้วยเมนูและคำสั่งเมนูทั้งหมดที่มีในแอปพลิเคชัน Office นั้น รายการทางด้านขวาคือรายการที่มีอยู่หรือเปิดใช้งานอยู่
- คุณควรเห็น Developer ในรายการทางด้านขวา แต่จะไม่ถูกเปิดใช้งาน เพียงเลือกช่องทำเครื่องหมายเพื่อเปิดใช้งานเมนูนักพัฒนา
- หากคุณไม่เห็นนักพัฒนา อยู่ทางขวาแล้วเปลี่ยนทางซ้าย เลือกคำสั่ง จากเมนูแบบเลื่อนลงเป็น คำสั่งทั้งหมด . ค้นหา นักพัฒนา จากรายการและเลือก เพิ่ม>> ตรงกลางเพื่อเพิ่มเมนูนั้นไปยัง Ribbon
- เลือก ตกลง เมื่อเสร็จแล้ว
- เมื่อเมนูนักพัฒนาใช้งานได้ คุณสามารถกลับไปที่หน้าต่างแอปพลิเคชันหลักและเลือกนักพัฒนา จากเมนูด้านบน
- จากนั้นเลือก ดูโค้ด จากกลุ่มการควบคุมใน Ribbon เพื่อเปิดหน้าต่างตัวแก้ไข VBA
- การดำเนินการนี้จะเปิดหน้าต่างตัวแก้ไข VBA ซึ่งคุณสามารถพิมพ์โค้ดที่จะเรียนรู้ได้ในไม่กี่ส่วนถัดไป
- ลองเพิ่มเมนูนักพัฒนาซอฟต์แวร์ลงในแอปพลิเคชัน Office บางตัวที่คุณใช้ทุกวัน เมื่อคุณสะดวกที่จะเปิดหน้าต่างตัวแก้ไข VBA แล้ว ให้ไปยังส่วนถัดไปของคู่มือนี้
เคล็ดลับการเขียนโปรแกรม VBA ทั่วไปสำหรับผู้เริ่มต้น
คุณจะสังเกตได้ว่าเมื่อตัวแก้ไข VBA เปิดขึ้น ตัวเลือกการนำทางในแผงด้านซ้ายจะดูแตกต่างจากแอปพลิเคชัน Office หนึ่งไปยังอีกแอปพลิเคชันหนึ่ง
เนื่องจากวัตถุที่มีอยู่ซึ่งคุณสามารถวางโค้ด VBA ได้ขึ้นอยู่กับวัตถุที่มีอยู่ในแอปพลิเคชัน ตัวอย่างเช่น ใน Excel คุณสามารถเพิ่มโค้ด VBA ลงในเวิร์กบุ๊กหรือออบเจกต์ของแผ่นงานได้ ใน Word คุณสามารถเพิ่มโค้ด VBA ลงในเอกสารได้ ใน Powerpoint ใช้ได้กับโมดูลเท่านั้น
ดังนั้นอย่าแปลกใจกับเมนูต่างๆ โครงสร้างและไวยากรณ์ของโค้ด VBA จะเหมือนกันในทุกแอปพลิเคชัน ข้อแตกต่างเพียงอย่างเดียวคืออ็อบเจ็กต์ที่คุณอ้างอิงได้และการดำเนินการที่คุณดำเนินการกับออบเจ็กต์เหล่านั้นผ่านโค้ด VBA
ก่อนที่เราจะเจาะลึกลงไปในอ็อบเจกต์และการดำเนินการต่างๆ ที่คุณทำได้โดยใช้โค้ด VBA อันดับแรก มาดูโครงสร้างและไวยากรณ์ของ VBA ทั่วไปที่ใช้ได้เมื่อเขียนโค้ด VBA
จะวางโค้ด VBA ไว้ที่ไหน
เมื่อคุณอยู่ในโปรแกรมแก้ไข VBA คุณต้องใช้กล่องดรอปดาวน์สองกล่องที่ด้านบนของหน้าต่างแก้ไขเพื่อเลือกวัตถุที่คุณต้องการแนบโค้ดไปและเวลาที่คุณต้องการให้โค้ดทำงาน
ตัวอย่างเช่น ใน Excel ถ้าคุณเลือก เวิร์กชีต และ เปิดใช้งาน โค้ดจะทำงานทุกครั้งที่เปิดเวิร์กชีต
การดำเนินการในเวิร์กชีตอื่นๆ ที่คุณสามารถใช้ทริกเกอร์โค้ด VBA ได้ รวมถึงเวลาที่เวิร์กชีตเปลี่ยนแปลง เมื่อปิด (ปิดใช้งาน) เมื่อรันการคำนวณเวิร์กชีต และอื่นๆ
เมื่อคุณเพิ่มโค้ด VBA ในตัวแก้ไข ตรวจสอบให้แน่ใจเสมอว่าได้วางโค้ด VBA ของคุณบนวัตถุและใช้การดำเนินการที่ถูกต้องที่คุณต้องการใช้เพื่อทริกเกอร์โค้ดนั้น
คำสั่ง VBA IF
คำสั่ง IF ทำงานใน VBA เหมือนกับที่ทำงานในภาษาการเขียนโปรแกรมอื่นๆ
ส่วนแรกของคำสั่ง IF จะพิจารณาว่าเงื่อนไขหรือชุดของเงื่อนไขเป็นจริงหรือไม่ เงื่อนไขเหล่านี้สามารถเข้าร่วมโดยโอเปอเรเตอร์ AND หรือ OR เพื่อเชื่อมโยงเข้าด้วยกัน
ตัวอย่างหนึ่งคือตรวจสอบว่าเกรดในสเปรดชีตอยู่สูงหรือต่ำกว่าเกรด "ผ่าน" และกำหนดสถานะผ่านหรือไม่ผ่านให้กับเซลล์อื่น
ถ้าเซลล์ (2, 2)> 75 จากนั้นเซลล์ (2, 3) =“ผ่าน” เซลล์อื่น (2, 3) =“ล้มเหลว”
หากคุณไม่ต้องการให้ข้อความสั่งทั้งหมดอยู่ในบรรทัดเดียว คุณสามารถแบ่งออกเป็นหลายบรรทัดโดยเพิ่มสัญลักษณ์ “_” ที่ท้ายบรรทัด
ถ้าเซลล์(2, 2)> 75 แล้ว _
เซลล์(2, 3) =“ผ่าน” อื่น _
เซลล์(2, 3) =“ล้มเหลว”
การใช้เทคนิคนี้มักจะทำให้โค้ดอ่านและแก้ไขจุดบกพร่องได้ง่ายขึ้น
VBA สำหรับลูปถัดไป
คำสั่ง IF นั้นยอดเยี่ยมสำหรับการเปรียบเทียบเดี่ยวๆ เช่นตัวอย่างด้านบนของการดูที่เซลล์เดียว แต่ถ้าคุณต้องการวนซ้ำช่วงของเซลล์ทั้งหมด และทำคำสั่ง IF เดียวกันในแต่ละเซลล์ล่ะ
ในกรณีนี้ คุณต้องมี FOR วนซ้ำ
ในการทำเช่นนี้ คุณจะต้องใช้ความยาวของช่วง และวนซ้ำตามความยาวนั้นด้วยจำนวนแถวที่มีข้อมูล
ในการดำเนินการนี้ คุณต้องกำหนดช่วงและตัวแปรของเซลล์ แล้ววนซ้ำ คุณจะต้องกำหนดตัวนับเพื่อให้สามารถส่งออกผลลัพธ์ไปยังแถวที่เหมาะสมได้ ดังนั้นโค้ด VBA ของคุณจึงจะมีบรรทัดนี้ก่อน
หรี่แสงเป็นช่วง เซลล์เป็นช่วง
หรี่ rowCounter เป็นจำนวนเต็ม
กำหนดขนาดช่วงดังต่อไปนี้
ตั้งค่า rng =ช่วง (“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 ขณะลูป
ในขณะที่ลูปจะวนซ้ำผ่านชุดคำสั่ง เช่นเดียวกับลูป 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)
คุณยังสามารถตั้งค่าลูปในขณะที่ได้ดังนี้:
ในขณะที่ rowCounter <=rng.Count + 1
คุณสามารถเพิ่มจำนวนช่วง (6) ได้เพียง 1 เท่านั้น เนื่องจากเมื่อตัวแปร rowCounter ถึงจุดสิ้นสุดของข้อมูล (แถว 7) การวนซ้ำจะสิ้นสุดลง
VBA ทำในขณะที่และทำจนกว่าจะถึงลูป
ลูป Do while และ Do Until เกือบจะเหมือนกับลูป while แต่ทำงานต่างกันเล็กน้อย
- The ขณะวน ตรวจสอบว่าเงื่อนไขเป็นจริงที่จุดเริ่มต้นของลูปหรือไม่
- The Do-While Loop ตรวจสอบว่าเงื่อนไขเป็นจริงหลังจากรันคำสั่งในลูปหรือไม่
- The 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
จากตัวอย่างข้างต้น สมมติว่าคุณต้องการมีวิธีการให้เกรดที่ไม่ใช่แค่การผ่านล้มเหลว คุณต้องการกำหนดเกรดตัวอักษรจาก 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 แล้ว