VBA คืออะไร?

Visual Basic for Applications (VBA) เป็นภาษาสำหรับเขียนโปรแกรมหรือชุดคำสั่ง เพื่อให้ Microsoft Office ทำงานในแบบที่ผู้เขียนต้องการได้

ถ้าให้ขยายความอีกที จะหมายความว่า “เราสามารถเขียนหรือบันทึกขั้นตอนการทำงานที่เราทำงานใน Microsoft Office ไว้ แล้วสั่งให้มันทำงาน ส่วนเราเป็นคนนั่งดูหรือเรียกว่า รอจะดีกว่า 😁” เพื่อประหยัดเวลาที่เราเสียไปกับการเลื่อนเมาส์หรือกดปุ่มบนคีย์บอร์ดลง

โดยเฉพาะงาน copy and paste ข้อมูลเดิม ๆ เยอะ ๆ หลาย ๆ ไฟล์ ซึ่งทำให้เราเหนื่อย ทำผิดพลาดได้ง่าย นำไปสู่ความน่าเบื่อในที่สุด

จากประสบการ์ส่วนตัว บางทีเป็นงานที่อาจกินเวลาในแต่ละวันของเราไปเกือบครึ่ง หรืออย่างน้อยก็ 1/3 จนบางทีทำให้บางคนถึงกับนิ้วล็อคไปแล้วด้วยซ้ำ

หรือบางงานอาจจะเป็นการตรวจสอบข้อมูล หรือการจัดรูปแบบ แบบเดิม ๆ ซ้ำ ๆ

โดยเฉพาะหัวหน้างาน หรือวิศวกร เช่น ตรวจดูว่าไฟล์บันทึกข้อมูลที่ส่งมาจากหลาย ๆ คน หลาย ๆ ทีม ซึ่งแน่นอนว่าหลายไฟล์ มีข้อมูลที่ไม่อยู่ในค่าที่กำหนดไหม? ถ้ามี แล้วมีเท่าไหร่ เป็นสัดส่วนกี่เปอร์เซ็นต์ ซึ่งตรงส่วนหลังนี่ ไม่เท่าไหร่หรอก ทำง่ายมาก ๆ ใน Excel

แต่การรวมข้อมูลจากหลาย ๆ ไฟล์มาอยู่ไฟล์เดียวนี่ล่ะ มันเป็นสิ่งที่ผู้สร้าง Excel ซึ่งก็คือ Microsoft ไม่ได้เตรียมไว้ให้เรา เพราะแต่ละคน แต่ละงาน ต่างมีลักษณะข้อมูลที่แตกต่างกันไป

ในบางที่มีข้อมูลเป็นฐานข้อมูลให้ใช้ ส่วนนี้จะสบายเลย เพราะเราจะได้ข้อมูลพร้อมให้ดึงมาประมวลผลเลย

แต่สำหรับที่ที่ไม่ได้ทำข้อมูลเป็นฐานข้อมูลไว้ ยังไงก็หนีไม่พ้นการ copy and paste หรือไม่ก็ใช้มาโคร (Macro) หรือเขียน VBA code ที่เรากำลังพูดถึงนี่ล่ะ

VBA กับ Macro ต่างกันอย่างไร?

  • VBA เป็นชื่อภาษาที่ใช้เขียนโปรแกรม
  • Macro หรือ มาโคร คือ กลุ่มของคำสั่ง ซึ่งเราเขียนขึ้นและตั้งชื่อไว้ เพื่อให้สามารถเรียกใช้งานภายหลังได้

โดยใน Microsoft Office เราสร้างมาโครได้ 2 ทางคือ

  • กดบันทึกไว้ (Record)
  • เขียนขึ้นมาเอง (Write)

แน่ว่าทั้งสองวิธี ผลลัพธ์จะได้โค้ด (code) ภาษา VBA ออกมา และเราจะเป็นคนกำหนดชื่อให้มัน พร้อมกับกำหนดวิธีการเรียกใช้

ในภาษาพูด ทั้ง VBA และ Macro สองคำนี้ อาจหมายถึงสิ่งเดียวกัน หากใช้ Microsoft 365 อย่างไรก็ตาม คำว่า Macro ไม่ได้จำกัดแค่ภาษา VBA เท่านั้น เป็นคำทั่วไป

จะใช้ VBA ได้อย่างไร?

เริ่มจากง่าย ๆ ก่อน คือไฟล์ที่มี VBA code ติดมาด้วย ซึ่งอาจจะมีคนอื่นเขียนมาให้เรา โดยปกติเขาจะบอกวิธีการใช้และสิ่งที่ต้องระวังไว้ด้วยเสมอ

แต่เราสามารถดูได้จากเมนู View > Macros > View Macros

อย่างไรก็ตามแอพจะคอยเตือนเราและไม่เปิดใช้งาน Macros หากเราไม่กด Enable

ถ้าเปิดไฟล์ Excel ที่มีมาโครแอพจะเตือนแบบนี้ และจะยังไม่เปิดใช้งานมาโครจนกว่าจะคลิก Enable Content
หรือบางทีอาจแสดงข้อความแบบนี้

เนื่องจากถ้าใช้ไม่เป็น แล้วกดไปเรื่อยอาจเกิด💥หายนะขึ้นได้เลย เช่น ข้อมูลในไฟล์หายไป โดยที่ Undo ไม่ได้ เพราะอะไรก็ตาม ที่ Macros ทำไปแล้ว จะ Undo ไม่ได้

รวมถึงอาจติดไวรัสคอมพิวเตอร์ได้นะ โดยเฉพาะที่ดาวน์โหลดมาจากแหล่งที่ไม่น่าเชื่อถือ

บันทึกไว้ใช้เอง โดยใช้ปุ่ม Record Macro…

วิธีนี้เหมาะสำหรับงานที่ง่ายมาก ๆ อย่างเช่น กำหนดว่าคอลัมภ์ B ให้แสดงผลแบบเปอร์เซ็นต์ เป็นตัวหนา และสีดำเท่านั้น

ซึ่งถ้าให้เราทำเอง เราจะต้องเลื่อนเมาส์และคลิก 5 ครั้ง แต่เราแค่อยากทำโดยกด Ctrl + p ครั้งเดียวเป็นต้น เพราะบางไฟล์ที่ใช้งานหลายคน อาจมีบางคนปรับเปลี่ยนรูปแบบไปเป็นอย่างอื่น ซึ่งเราสามารถทำได้ดังภาพ

วิธีการบันทึุกมาโครไว้ใช้งาน
โค้ด VBA ที่ได้จากการบันทึกด้านบน

อย่างไรก็ตาม macros ที่เราบันทึกไว้ จะทำงานแบบ🥴ซื่อบื้อเลยนะ คือ เราทำไว้แบบไหนมันก็จะทำตามนั้นล่ะ

เช่น ถ้าเราลบแถวที่ 2 และ 5 เพราะมันไม่มีข้อมูล คือเราดูแล้วล่ะ ว่าไม่มี ก็เลยลบ

ครั้งต่อไปที่เราเรียกใช้งาน (run) มันก็จะลบแถวที่ 2 และ 5 🥲 ถึงแม้จะมีข้อมูลอยู่ก็ตาม

เพราะการ record macro คือการบันทึกการกดเมาส์และคีย์บอร์ด ไม่ใช่ความคิดของเรา ✨ซึ่งประเด็นนี้สำคัญมาก✍️

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

อีกอย่าง ⚠️หากเรากำหนด shortcut ให้ macros มันจะ overide หรือแทนที่ shortcut ของแอพโดยไม่ถามนะ เช่น Ctrl + p ปกติใช้สั่งพิมพ์ (แทนการเลื่อนเมาส์ไปกด File > Print)

และสิ่งที่การบันทึกมาโครทำไม่ได้อีกอย่างคือ การ copy จากไฟล์หนึ่ง มา paste อีกไฟล์หนึ่ง หรือคนละไฟล์นั่นแหละครับ แม้จะเป็นไฟล์ Excel เหมือนกัน ก็ทำไม่ได้ น่าแปลกใจมาก 😒

เขียนโค้ด VBA เอง

เป็นทางเลือกสุดท้าย แต่คุ้มค่ามาก 😁 เพราะเป็นการใช้งานแบบที่เรากำหนดเอง

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

หากเขียนมาโครเอง เราจะได้โค้ดออกมาประมาณนี้

Private Sub Workbook_Open()
    Columns("B:B").Select
    With Selection
        .NumberFormat = "0.00%"
        .Font.Bold = True
        .Font.Color = vbBlack
        .Interior.Color = xlNone
    End With
    Range("A1").End(xlDown).Select
End Sub

และทุกครั้งที่เปิดไฟล์นี้ขึ้นมา มันจะทำงานเอง โดยที่เราไม่ต้องคลิกเมาส์เลย (ถ้าไม่นับการคลิกปุ่มเตือนว่า ไฟล์นี้มีมาโครจะให้มันทำงานไหม? 😂)

ซึ่งเราทำได้ตามภาพ โดย

  1. กดปุ่ม Alt + F11 แล้วเลือกที่ ThisWorkbook
  2. เลือกดรอบดาวน์ (Drop Down) เป็น Workbook
  3. เลือกดรอบดาวน์ (Drop Down) เป็น Open
  4. พิมพ์คำสั่ง (โค้ด) ที่เหลือ นอกจากที่ Excel เตรียมไว้ให้

เพียงเท่านี้ ทุกครั้งที่เปิดไฟล์นี้ขึ้นมา คอลัมภ์ B แสดงผลเป็นเปอร์เซ็นต์ ตัวหนา สีดำ และไม่มีพื้นหลัง อย่างที่ต้องการ โดยไม่ต้องไปทำเอง หรือกดปุ่มเรียกคำสั่งที่บันทึกไว้

ตัวอย่างถ้ามีคนเปลี่ยนรูปแบบดังนี้ แล้ว save ไว้ด้วย
แต่เปิดมา แล้วกด Enable Content จะได้ผลดังนี้

ถ้ามองลึกลงไปในคำสั่งจะเห็นว่า แต่ละบรรทัดก็เหมือนที่เราต้องเลื่อนเมาส์ไปคลิกแต่ละปุ่มนั่นล่ะ

โดยถ้าจะให้อธิบายโค้ด ก็คือ

Columns(“B:B”).Select เราเลือกคอลัมภ์ B ทั้งคอลัมภ์

With Selection … End With ตรงนี้จะบอก Excel ว่า ที่เราเลือกไว้น่ะ ให้ทำ …

.NumberFormat = “0.00%” แสดงจำนวนเป็นเปอร์เซ็นต์มีทศนิยม 2 หลัก
.Font.Bold = True อักษรเป็นตัวหนา
.Font.Color = vbBlack อักษรเป็นสีดำ
.Interior.Color = xlNone ไม่ระบายสีเซลล์

Range(“A1”).End(xlDown).Select เลือกแถวสุดท้ายที่มีข้อมูลของคอลัมภ์ A

หากสังเกตที่โค้ดจะเห็นโค้ดที่ผมเขียนนี้ แตกต่างจากที่บันทึกได้นิดเดียว ซึ่งก็คือเราย่อมันลงให้กระชับ เพราะที่เล่าไปแล้ว การ record macro คือการบันทึกที่เรากดปุ่มและคลิก Excel ก็จะบันทึกทุกอย่างแหละ

อย่างตอนเลือกเปอร์เซ็นต์ แล้วเพิ่มจุดทศนิยม จะได้โค้ดมา 2 บรรทัด ซึ่งถ้าเราสั่งเอง เราก็เลือกแค่แบบสุดท้ายก็พอ

ก็หวังว่าโพสต์นี้จะเป็นประโยชน์สำหรับผู้ที่สงสัยว่า VBA คืออะไร แล้วใช้ยังไงเบื้องต้น

ถ้าหากอยากให้เพิ่มเติมตรงไหน ก็ทิ้งคอมเม้นต์ไว้ด้านล่างได้เลยครับ 😁


Posted

in

by

Tags:

Comments

One response to “VBA คืออะไร?”

  1. lungthi Avatar

    สำหรับใครที่อยากลองดูว่าไฟล์ที่ผมทำเป็นยังไง เขาไป Save as … หรือดาวน์โหลดได้ที่นี่นะ 👉 https://onedrive.live.com/view.aspx?resid=4DAB1FE25D608FF5!45542&cid=4dab1fe25d608ff5&authkey=!AIbX417BKFBQrO8&CT=1703610460693&OR=ItemsView

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.