แพลตฟอร์ม การเขียนโปรแกรม VBA ที่ทำงานตลอดผลิตภัณฑ์ Microsoft Office เกือบทั้งหมดเป็นหนึ่งในเครื่องมือที่ทรงพลังที่สุดที่ทุกคนสามารถใช้เพื่อปรับปรุงการใช้ผลิตภัณฑ์เหล่านั้น
คู่มือ VBA นี้สำหรับ ผู้เริ่มต้นจะแสดงวิธีเพิ่มเมนูนักพัฒนาลงในแอปพลิเคชัน Office ของคุณวิธีเข้าสู่หน้าต่างตัวแก้ไข VBA และวิธีการใช้คำสั่ง VBA และลูปพื้นฐานเพื่อให้คุณสามารถเริ่มใช้ VBA ใน Excel, Word, Powerpoint, Outlook และ OneNote .
นี่ คู่มือ VBA ใช้ผลิตภัณฑ์ Microsoft Office เวอร์ชันล่าสุด หากคุณมีรุ่นก่อนหน้านี้คุณอาจเห็นความแตกต่างเล็กน้อยจากภาพหน้าจอ
วิธีเปิดใช้งานและใช้เครื่องมือแก้ไข VBA
ใน Office ใดก็ได้ ผลิตภัณฑ์ที่ใช้ในคู่มือนี้คุณอาจสังเกตเห็นว่าคุณไม่มีเมนูผู้พัฒนาอ้างอิง เมนูนักพัฒนาซอฟต์แวร์มีเฉพาะใน Excel, Word, Outlook และ Powerpoint OneNote ไม่มีเครื่องมือในการแก้ไขรหัส VBA จากภายในแอปพลิเคชัน แต่คุณยังสามารถอ้างอิง OneNote API เพื่อโต้ตอบกับ OneNote จากโปรแกรม Office อื่น ๆ
คุณจะได้เรียนรู้วิธีการทำสิ่งนี้ในคู่มือ VBA ขั้นสูงที่จะเกิดขึ้น
รายการด้านซ้ายมีเมนูและคำสั่งเมนูทั้งหมดที่มีอยู่ในแอปพลิเคชัน Office นั้น รายการทางด้านขวาคือรายการที่พร้อมใช้งานหรือเปิดใช้งานในปัจจุบัน
In_content_1 ทั้งหมด: [300x250] / dfp: [640x360]->เคล็ดลับการเขียนโปรแกรม 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 ของคุณจะมีบรรทัดนี้เป็นครั้งแรก
ติ่ม rng เป็นช่วงเซลล์เป็นช่วง
สลัว rowCounter เป็นจำนวนเต็ม
กำหนดขนาดของช่วงดังนี้
ตั้งค่า rng = ช่วง (“ B2: B7”)
rowCounter = 2
ในที่สุดคุณสามารถสร้าง FOR ของคุณไปยังขั้นตอนทุกเซลล์ในช่วงนั้นและทำการเปรียบเทียบ
For Each cell In rngIf cell.Value > 75 Then _ Cells(rowCounter, 3) = "Pass" Else _ Cells(rowCounter, 3) = "Fail" rowCounter = rowCounter + 1 Next cell
เมื่อ สคริปต์ VBA นี้ทำงานแล้วคุณจะเห็น ให้ผลลัพธ์ในสเปรดชีตจริง
VBA ขณะลูป
A ในขณะที่ลูปยังวนรอบชุดคำสั่งเช่นเดียวกับวง FOR แต่เงื่อนไขของการวนซ้ำเพื่อดำเนินการต่อเป็นเงื่อนไขที่เหลืออยู่ เป็นจริง
ตัวอย่างเช่นคุณสามารถเขียน FOR วงเดียวด้านบนในฐานะวง WHILE โดยเพียงแค่ใช้ตัวแปร rowCounter ดังนี้
While rowCounter < rng.Count + 2If 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 Loops
ทำในขณะที่และทำจนกระทั่งลูปเกือบเหมือนลูปในขณะเดียวกัน แต่ทำงานแตกต่างกันเล็กน้อย
ในกรณีนี้คุณจะต้องเขียนซ้ำ ขณะที่ลูปข้างบนดังต่อไปนี้เป็น Do-while loop
DoIf Cells(rowCounter, 2) > 75 Then _ Cells(rowCounter, 3) = "Pass" Else _ Cells(rowCounter, 3) = "Fail" rowCounter = rowCounter + 1 Loop While rowCounter < rng.Count + 2
ในกรณีนี้ตรรกะไม่เปลี่ยนแปลงมากนัก แต่ถ้าคุณต้องการให้แน่ใจว่าตรรกะนั้น การเปรียบเทียบเกิดขึ้นหลังจากคำสั่งทั้งหมดถูกเรียกใช้ (ทำให้พวกเขาทั้งหมดสามารถทำงานได้ไม่ว่าอย่างน้อยหนึ่งครั้ง) จากนั้นลูป Do-while หรือ Do-จนกว่าจะเป็นตัวเลือกที่ถูกต้อง
VBA เลือกคำสั่งกรณีและปัญหา
คำสั่งแบบลอจิคัลประเภทสุดท้ายที่คุณต้องเข้าใจเพื่อเริ่มต้นสร้างโครงสร้างโค้ด VBA ของคุณคือเลือกคำสั่งกรณีและปัญหา
จากตัวอย่างข้างต้นสมมติว่าคุณต้องการมีวิธีการให้เกรดที่ไม่ผ่านการล้มเหลว คุณต้องการกำหนดเกรดตัวอักษรจาก A ถึง F.
คุณสามารถทำได้ด้วยคำสั่ง Select Case ต่อไปนี้:
For Each cell In rngSelect 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 ของคุณ