คู่มือ VBA ที่ดีที่สุด (สำหรับมือใหม่) ที่คุณต้องการ


แพลตฟอร์ม การเขียนโปรแกรม VBA ที่ทำงานตลอดผลิตภัณฑ์ Microsoft Office เกือบทั้งหมดเป็นหนึ่งในเครื่องมือที่ทรงพลังที่สุดที่ทุกคนสามารถใช้เพื่อปรับปรุงการใช้ผลิตภัณฑ์เหล่านั้น

คู่มือ VBA นี้สำหรับ ผู้เริ่มต้นจะแสดงวิธีเพิ่มเมนูนักพัฒนาลงในแอปพลิเคชัน Office ของคุณวิธีเข้าสู่หน้าต่างตัวแก้ไข VBA และวิธีการใช้คำสั่ง VBA และลูปพื้นฐานเพื่อให้คุณสามารถเริ่มใช้ VBA ใน Excel, Word, Powerpoint, Outlook และ OneNote .

<รูป class = "lazy aligncenter ขนาดใหญ่">

นี่ คู่มือ VBA ใช้ผลิตภัณฑ์ Microsoft Office เวอร์ชันล่าสุด หากคุณมีรุ่นก่อนหน้านี้คุณอาจเห็นความแตกต่างเล็กน้อยจากภาพหน้าจอ

วิธีเปิดใช้งานและใช้เครื่องมือแก้ไข VBA

ใน Office ใดก็ได้ ผลิตภัณฑ์ที่ใช้ในคู่มือนี้คุณอาจสังเกตเห็นว่าคุณไม่มีเมนูผู้พัฒนาอ้างอิง เมนูนักพัฒนาซอฟต์แวร์มีเฉพาะใน Excel, Word, Outlook และ Powerpoint OneNote ไม่มีเครื่องมือในการแก้ไขรหัส VBA จากภายในแอปพลิเคชัน แต่คุณยังสามารถอ้างอิง OneNote API เพื่อโต้ตอบกับ OneNote จากโปรแกรม Office อื่น ๆ

คุณจะได้เรียนรู้วิธีการทำสิ่งนี้ในคู่มือ VBA ขั้นสูงที่จะเกิดขึ้น

  • หากต้องการเปิดใช้งานเมนูนักพัฒนาในผลิตภัณฑ์สำนักงานใด ๆ ให้เลือก ไฟล์เมนูและเลือก ตัวเลือกจากเมนูนำทางด้านซ้าย
  • คุณจะเห็นเมนูตัวเลือกปรากฏขึ้น เลือก กำหนด Ribbon เองจากเมนูการนำทางด้านซ้าย
  • <รูป class = "lazy aligncenter size-large">

    รายการด้านซ้ายมีเมนูและคำสั่งเมนูทั้งหมดที่มีอยู่ในแอปพลิเคชัน Office นั้น รายการทางด้านขวาคือรายการที่พร้อมใช้งานหรือเปิดใช้งานในปัจจุบัน

    In_content_1 ทั้งหมด: [300x250] / dfp: [640x360]->
    • คุณควรเห็น Developer ในรายการทางด้านขวา แต่จะไม่เปิดใช้งาน เพียงเลือกช่องทำเครื่องหมายเพื่อเปิดใช้งานเมนูนักพัฒนาซอฟต์แวร์
    • <รูป class = "lazy aligncenter size-large">
      • หากคุณไม่เห็น นักพัฒนาซอฟต์แวร์อยู่ทางด้านขวาให้เปลี่ยน เลือกคำสั่งทางซ้ายจากดรอปดาวน์เป็น คำสั่งทั้งหมดค้นหา นักพัฒนาซอฟต์แวร์จากรายการและเลือก เพิ่ม >>ในศูนย์เพื่อเพิ่มเมนูนั้นลงใน Ribbon
      • เลือก ตกลงเมื่อเสร็จแล้ว
      • เมื่อเมนูนักพัฒนาเปิดใช้งานคุณสามารถกลับไปที่หน้าต่างแอปพลิเคชันหลักและเลือก นักพัฒนาซอฟต์แวร์จากเมนูด้านบน
      • จากนั้นเลือก ดูรหัสจากกลุ่มตัวควบคุมใน Ribbon เพื่อเปิดหน้าต่างตัวแก้ไข VBA
      • <รูป class =" lazy aligncenter ขนาดใหญ่ ">
        • สิ่งนี้จะเปิดหน้าต่างตัวแก้ไข VBA ซึ่งคุณสามารถพิมพ์รหัสที่คุณจะได้เรียนรู้ในส่วนถัดไป
          • ลองเพิ่มเมนูนักพัฒนาลงในแอปพลิเคชัน Office ที่คุณใช้ทุกวัน . เมื่อคุณเปิดหน้าต่างตัวแก้ไข VBA ได้แล้วให้ดำเนินการต่อในส่วนถัดไปของคู่มือนี้
          • เคล็ดลับการเขียนโปรแกรม VBA ทั่วไปสำหรับผู้เริ่มต้น

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

            นี่เป็นเพราะวัตถุที่มีอยู่ซึ่งคุณสามารถวางรหัส VBA ขึ้นอยู่กับวัตถุที่มีในแอปพลิเคชัน ตัวอย่างเช่นใน Excel คุณสามารถเพิ่มรหัส VBA ไปยังสมุดงานหรือวัตถุแผ่นงาน ใน Word คุณสามารถเพิ่มรหัส VBA ลงในเอกสาร ใน Powerpoint เฉพาะกับโมดูล

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

            ก่อนที่เราจะดำดิ่งลงไปในวัตถุและการกระทำที่แตกต่างกันที่คุณสามารถทำได้ผ่านรหัส VBA ดูโครงสร้าง VBA และไวยากรณ์ทั่วไปที่คุณสามารถใช้เมื่อคุณเขียนโค้ด VBA

            ตำแหน่งที่จะใส่รหัส VBA

            เมื่อคุณอยู่ใน เครื่องมือแก้ไข VBA คุณต้องใช้สองช่องแบบเลื่อนลงที่ด้านบนของหน้าต่างการแก้ไขเพื่อเลือกวัตถุที่คุณต้องการแนบรหัสและเมื่อคุณต้องการให้รหัสทำงาน

            ตัวอย่างเช่นใน Excel หากคุณเลือก แผ่นงานและ เปิดใช้งานรหัสจะทำงานทุกครั้งที่เปิดแผ่นงาน

            <รูป class = "lazy aligncenter ขนาดใหญ่">

            แผ่นงานอื่น การกระทำที่คุณสามารถใช้เพื่อทริกเกอร์รหัส 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 rng
            If cell.Value > 75 Then _ Cells(rowCounter, 3) = "Pass" Else _ Cells(rowCounter, 3) = "Fail" rowCounter = rowCounter + 1 Next cell

            เมื่อ สคริปต์ VBA นี้ทำงานแล้วคุณจะเห็น ให้ผลลัพธ์ในสเปรดชีตจริง

            <รูป class = "lazy aligncenter size-large">

            VBA ขณะลูป

            A ในขณะที่ลูปยังวนรอบชุดคำสั่งเช่นเดียวกับวง FOR แต่เงื่อนไขของการวนซ้ำเพื่อดำเนินการต่อเป็นเงื่อนไขที่เหลืออยู่ เป็นจริง

            ตัวอย่างเช่นคุณสามารถเขียน FOR วงเดียวด้านบนในฐานะวง WHILE โดยเพียงแค่ใช้ตัวแปร 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 Loops

            ทำในขณะที่และทำจนกระทั่งลูปเกือบเหมือนลูปในขณะเดียวกัน แต่ทำงานแตกต่างกันเล็กน้อย

            • ในขณะที่ลูปตรวจสอบว่า เงื่อนไขเป็นจริงที่จุดเริ่มต้นของลูป
            • ทำในขณะที่ลูปตรวจสอบว่าเงื่อนไขเป็นจริงหรือไม่หลังจากเรียกใช้คำสั่งในลูป
            • ลูป Do-Beforeจะตรวจสอบว่าเงื่อนไขยังคงเป็นเท็จหรือไม่หลังจากเรียกใช้ลูป
            • ในกรณีนี้คุณจะต้องเขียนซ้ำ ขณะที่ลูปข้างบนดังต่อไปนี้เป็น Do-while loop

              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-while หรือ Do-จนกว่าจะเป็นตัวเลือกที่ถูกต้อง

              VBA เลือกคำสั่งกรณีและปัญหา

              คำสั่งแบบลอจิคัลประเภทสุดท้ายที่คุณต้องเข้าใจเพื่อเริ่มต้นสร้างโครงสร้างโค้ด VBA ของคุณคือเลือกคำสั่งกรณีและปัญหา

              จากตัวอย่างข้างต้นสมมติว่าคุณต้องการมีวิธีการให้เกรดที่ไม่ผ่านการล้มเหลว คุณต้องการกำหนดเกรดตัวอักษรจาก 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 นี้ทำงานดูเหมือนหนึ่งด้านล่าง

              <รูป class = "lazy aligncenter size-large">

              ตอนนี้คุณรู้ทุกอย่างที่คุณจำเป็นต้องรู้ในการเริ่มใช้ VBA ในแอปพลิเคชัน Microsoft Office ของคุณ

              Excel พื้นฐาน 8 : VLOOKUP ดูจบใช้เป็นเลย

              กระทู้ที่เกี่ยวข้อง:


              29.01.2020