การสร้าง macro จะเก็บโปรแกรมด้วยภาษาใด

มีแฟนเพจหลายท่านอยากให้ผมสอนเรื่องเกี่ยวกับ VBA ให้ แม้ผมจะเคยเขียนเกี่ยวกับเรื่อง Concept สำคัญของ VBA ในแง่ของหลักการไปแล้ว แต่ผมยังไม่ได้สอนเขียน Code แบบจริงๆ จังๆ ซักที แต่ตอนนี้คงถึงเวลาแล้วล่ะ ^^

อ่อ! ในบทความนี้จะไม่ได้สอนเรื่อง record macro นะครับ อันนั้นลองไปหัดกันเองได้นะ หรือดูใน youtube ก็น่าจะมีเยอะเลย ในบทความนี้จะสอนหลักการการเขียนโปรแกรมให้ เพื่อให้เพื่อนๆ สามารถอ่าน code และแก้ code เองได้หลังจาก record macro แล้วนะครับ

  • การเปิด Developer Ribbon
  • การ Trigger คำสั่งด้วยปุ่ม
  • การ Assign ค่า และเรื่องของตัวแปร
  • การอ้างอิง Cell/Range โดยใช้ Range
  • การใช้ Message Box
  • การใช้เครื่องหมาย & เชื่อมข้อความ
  • การใช้ IF กำหนดเงื่อนไข
  • การ Save ไฟล์
  • สรุป VBA พื้นฐาน ตอนที่ 1

การเปิด Developer Ribbon

เริ่มแรกสุดเลย การที่เราจะใช้งาน VBA ได้ก็ต้องเปิด Ribbon Developer ขึ้นมาซะก่อน ซึ่งอยู่ใน Excel Option ครับ

จะเข้าไปเขียนโปรแกรมใน VB Editor (หรือ VBE) ก็สามารถกดปุ่ม Visual Basic หรือ Alt+F11 ได้ครับ (ผมกด Alt+F11 ตลอด)

แต่เดี๋ยวเราปิดมันไปก่อนก็ได้ครับ เอาเป็นว่าเปิด VBE ขึ้นมาเป็นแล้วเนอะ กด Alt+F11 นะ

การ Trigger คำสั่งด้วยปุ่ม

จะสั่งให้ Code ทำงานได้ มันต้องมี Trigger หรือ Event บางอย่างเกิดขึ้น ซึ่งตัวที่ใช้บ่อยที่สุดอันนึงก็คือการกดปุ่ม แล้วทำให้เกิด action บางอย่างขึ้นตาม Code ที่เราสั่ง

เรากำลังจะสร้างปุ่มที่ว่านี่แหละ ให้เรากด add button ดังนี้ Developer-> Insert -> Form Control -> Button

จากนั้นวาดรูปสี่เหลี่ยมลงไปในที่ว่างๆ ที่ต้องการให้เกิดปุ่มขึ้น

จากนั้นมันจะเข้าสู่ VBE ภายใต้ Sub ที่ชื่อว่า Test ตามชื่อ Macro ที่เราเขียนเลย

เมื่อเรากด Alt+F11 เพื่อเข้าสู่ VBE หรือกดสร้างปุ่มแล้ว เราก็จะเขียน code ได้

การ Assign ค่า และเรื่องของตัวแปร

ก่อนจะเขียน Code ผมอยากให้เพื่อนๆ เข้าใจ Concept สำคัญในการเขียนโปรแกรมอันนึง ก็คือการใช้เครื่องหมาย = หรือ assignment operator ว่า เราสามารถเอาค่าไปใส่ให้กับตัวแปร หรือใส่ให้กับ Object ต่างๆ ที่เราต้องการได้

โดยรูปแบบคือให้ตัวด้านซ้าย มีค่าเท่ากับตัวด้านขวา

Object = ค่า ตัวแปร = ค่า

เช่น

x=10

แปลว่าให้ตัวแปร x มีค่าเป็น 10

แล้วถ้าเราเขียนต่อไปอีกบรรทัดว่า

x=x+1

แม้จะดูผิดหลักคณิตศาสตร์ แต่เครื่องหมาย = ในที่นี้ไม่ใช่เครื่องหมายเปรียบเทียบในคณิตศาสตร์ แต่ในการเขียนโปรแกรม มันคือเครื่องหมายที่ใช้ในการกำหนดค่า (assignment operator) ที่ให้ตัวด้านซ้าย มีค่าเท่ากับตัวด้านขวา แล้ว Code ที่เราเขียนก็จะถูก Run จากบนลงล่างไปเรื่อยๆ

ดังนั้นความหมายของ x=x+1 คือให้เอาค่าเดิมใน x (ซึ่งคือ 10) ไปบวก1 จะได้ 11 แล้วใส่แทนค่าลงไปในตัวแปร x

ดังนั้น x จะมีค่าใหม่เป็น 11 นั่นเอง

การอ้างอิง Cell/Range โดยใช้ Range

ภายใน Sub Test() เราสามารถเขียน Code ในรูปแบบ Range(“Cell Reference”) เพื่ออ้างอิง Cell/Range ได้ เช่น

Range("A1")=10

แปลว่า ให้ช่อง A1 มีค่าเป็น 10

พอเขียนเสร็จก็กดปิด VBE ไปก่อนได้เลย แล้วลองไปกดปุ่มที่เราสร้างดูซะ

จากนั้น Code ที่เราเขียนก็จะถูก Run ทำให้ช่อง A1 มีเลข 10 อยู่

นอกจากจะอ้างอิง Cell เดียวแล้วยังใส่เป็นช่วงก็ได้ เช่น

Range("A1:C3") = "Cat"

สังเกตุว่า Cat ใส่อยู่ในเครื่องหมายคำพูด เพราะเป็น Text นะครับ

นอกจากนี้ถ้าเรามีการตั้งชื่อ Defined Name ไว้ เราก็สามารถเอามาใช้ใน Range นี้ได้ด้วย เช่น

Range("ชื่อที่ตั้งไว้") = 999

ซึ่งในชีวิตจริง เราจะใช้การอ้างอิงด้วยชื่อบ่อยมาก เพื่อป้องกันปัญหาการ แทรก/ลบ cell จนตำแหน่งช่องเปลี่ยนไปจนใน Code ไม่ตรงกับความเป็นจริง

การใช้ Message Box

เราสามารถให้ VBA สร้างผลลัพธ์เป็น Message Box เด้งขึ้นมาได้ ด้วยคำสั่งง่ายๆ ว่า MsgBox(“คำที่ต้องการ”) เช่น

MsgBox ("สวัสดี")

การใช้เครื่องหมาย & เชื่อมข้อความ

เราสามารถใช้เครื่องหมาย & มาเชื่อมข้อความ เพื่อผสมรวมคำจากค่าคงที่เช่น “สวัสดี” กับการอ่านค่าจาก Cell ช่อง B1 ที่ผมตั้งชื่อไว้ว่า FirstNameได้ เช่น

ที่สวัสดีอยู่ในเครื่องหมายคำพูด เพราะเป็น Text ส่วน inputName เป็นชื่อตัวแปร ไม่ต้องอยู่ในเครื่องหมายคำพูดนะครับ

Sub Test() inputName = Range("FirstName") MsgBox ("สวัสดี " & inputName) End Sub

การใช้ IF กำหนดเงื่อนไข

เราสามารถเขียน if ใน VBA ได้ในรูปแบบของ

If เงื่อนไข Then ทำอะไรถ้าเงื่อนไขเป็นจริง Else ทำอะไรถ้าเงื่อนไขเป็นเท็จ End If

เช่น

Sub Test() inputName = Range("FirstName") If inputName = "ศิระ" Then MsgBox ("สวัสดีนายท่าน") Else MsgBox ("ยินดีที่ได้รู้จักครับ " & inputName) End If End Sub

ถ้า inputName ที่กรอกมาใน Range ที่ชื่อ FirstName เป็นคำว่า ศิระ ก็จะบอกว่า สวัสดีนายท่าน นอกนั้นก็จะบอกว่า ยินดีที่ได้รู้จักครับ แล้วตามด้วยชื่อ

สังเกตว่า ใช้ inputName = “ศิระ” ได้ เพราะมันรู้ว่าเครื่องหมาย = อันนี้คือเครื่องหมายเปรียบเทียบ ไม่ใช่ assignment แบบตอนที่เขียนส่งค่าให้ตัวแปรตามปกติ

การ Save ไฟล์

ที่สำคัญ เวลาจะ Save ไฟล์ต้อง Save นามสกุล .xlsm, xlsb, xls เท่านั้นนะครับ เพราะถ้าดันไป save เป็น xlsx ปกติล่ะก็… code ที่เราเขียนจะหายไปหมดเลย ดังนั้นอย่าพลาดเด็ดขาดเลยนะ เดี๋ยวนั่งร้องไห้ไม่รู้ด้วย!

สรุป VBA พื้นฐาน ตอนที่ 1

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

แชร์ความรู้ให้เพื่อนๆ ของคุณ

Toplist

โพสต์ล่าสุด

แท็ก

แปลภาษาไทย ไทยแปลอังกฤษ แปลภาษาอังกฤษเป็นไทย pantip โปรแกรม-แปล-ภาษา-อังกฤษ พร้อม-คำ-อ่าน อาจารย์ ตจต ศัพท์ทหาร ภาษาอังกฤษ pdf lmyour แปลภาษา ชขภใ ห่อหมกฮวกไปฝากป้าmv กรมพัฒนาฝีมือแรงงาน อบรมฟรี 2566 ขขขขบบบยข ่ส ศัพท์ทางทหาร military words หนังสือราชการ ตัวอย่าง หยน แปลบาลีเป็นไทย ไทยแปลอังกฤษ ประโยค การไฟฟ้านครหลวง การไฟฟ้าส่วนภูมิภาค ข้อสอบโอเน็ต ม.3 ออกเรื่องอะไรบ้าง พจนานุกรมศัพท์ทหาร เมอร์ซี่ อาร์สยาม ล่าสุด แปลภาษามลายู ยาวี Bahasa Thailand กรมพัฒนาฝีมือแรงงาน อบรมออนไลน์ การ์ดจอมือสอง ข้อสอบคณิตศาสตร์ พร้อมเฉลย คะแนน o-net โรงเรียน ค้นหา ประวัติ นามสกุล บทที่ 1 ที่มาและความสําคัญของปัญหา ร. ต จ แบบฝึกหัดเคมี ม.5 พร้อมเฉลย แปลภาษาอาหรับ-ไทย ใบรับรอง กรมพัฒนาฝีมือแรงงาน PEA Life login Terjemahan บบบย มือปราบผีพันธุ์ซาตาน ภาค2 สรุปการบริหารทรัพยากรมนุษย์ pdf สอบโอเน็ต ม.3 จําเป็นไหม เช็คยอดค่าไฟฟ้า แจ้งไฟฟ้าดับ แปลภาษา มาเลเซีย ไทย แผนที่ทวีปอเมริกาเหนือ ่้แปลภาษา Google Translate กระบวนการบริหารทรัพยากรมนุษย์ 8 ขั้นตอน ก่อนจะนิ่งก็ต้องกลิ้งมาก่อน เนื้อเพลง ข้อสอบโอเน็ตม.3 มีกี่ข้อ คะแนนโอเน็ต 65 ตม กรุงเทพ มีที่ไหนบ้าง