สมมติว่า คุณต้องการจัดขนาดตัวอักษรให้กับชื่อบริษัทที่บันทึกลงในเซลล์ A1 เพื่อใช้พิมพ์เป็นหัวกระดาษ ซึ่งถูกบังคับว่า ต้องใช้ตัวอักษรขนาด 20 pixel เป็นมาตรฐานเสมอ เพื่อช่วยให้เวลาดูบนหน้าจอ หรือเมื่อพิมพ์ลงกระดาษแล้ว จะเห็นชื่อบริษัทมีขนาดเดียวกันไปตลอด

คุณอาจเลือกใช้ Macro Recorder หรือจะเลือกเขียนรหัส VBA เองก็ได้ แต่ในช่วงเริ่มเรียนรู้นี้ แนะนำให้ใช้ Macro Recorder จะช่วยทำให้งานนี้ง่ายขึ้น เพียงเริ่มจากคลิกเซลล์ชื่อบริษัท แล้วสั่ง Developer > Record Macro

image001

ในช่อง Macro name ให้พิมพ์ชื่อซึ่งสื่อถึงงานที่ต้องการลงไป เช่น คราวนี้ต้องการบันทึกการเปลี่ยนขนาดตัวอักษร จึงใช้ชื่อ Macro ว่า ChangeFontSize (ชื่อ Macro ให้ใช้ตัวอักษรตัวใหญ่ผสมตัวเล็ก ไม่เว้นช่องว่างระหว่างตัวอักษร ถ้าต้องการใช้ตัวเลข ให้ใส่ตัวเลขต่อท้ายตัวอักษร)

ในช่อง Shotcut key ให้พิมพ์ตัว q ลงไป เพื่อกำหนดว่า เมื่อกดปุ่ม Ctrl+q เป็นการสั่งให้ Macro ทำงานซ้ำ ซึ่งในตัวอย่างนี้เป็นการสั่งให้เปลี่ยนขนาดเป็น 20 pixel (จะใช้ตัวอักษรตัวใดเป็น Shortcut key ก็ได้ แต่ไม่ควรใช้ตัว c, x, v ซึ่งซ้ำกับคำสั่งในการ Copy, Cut, หรือ Paste เพราะ Shortcut key ที่กำหนดลงไปจะทำงานแทนหน้าที่เดิม)

จากนั้นกดปุ่ม OK ซึ่งจะพบว่า เมนู Record Macro เปลี่ยนคำแสดงเป็นปุ่มคำสั่ง Stop Recording รอไว้และด้านล่างซ้ายของจอจะมีปุ่มสี่เหลี่ยมเตือนให้ทราบว่า ขณะนี้กำลังบันทึก Macro อยู่ และสามารถคลิกที่ปุ่มนี้เพื่อสั่งหยุดการบันทึก Macro

image002

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

ในขั้นนี้ให้คลิกที่ช่องปรับขนาดตัวอักษรแล้วเปลี่ยนขนาดเป็น 20 จากนั้นให้กดปุ่ม Stop Recording แล้วจะเห็นว่าเมนูนี้ปิดไป พร้อมกับไม่มีปุ่มสี่เหลี่ยมที่เคยแสดงด้านล่างซ้ายของจออีกต่อไป แสดงว่าได้ทำการบันทึกเสร็จเรียบร้อยแล้ว

จากนั้นเมื่อต้องการปรับขนาดตัวอักษรที่เซลล์ใด ให้คลิกที่เซลล์นั้น ตามด้วยกดปุ่ม Ctrl+q จะพบว่า ขนาดตัวอักษรถูกเปลี่ยนเป็น 20 pixel ให้ทันที

รหัส VBA ที่เกิดขึ้นจะเก็บอยู่ภายในตัวแฟ้มนั้นเอง เพียงแต่ยังซ่อนไว้ จนกว่าจะกดปุ่ม ALT+F11 หรือสั่ง Developer > Visual Basic เพื่อเปิด VBE ขึ้นมา จะพบว่า รหัสถูกบันทึกไว้ในชีทชื่อ Module1

image003

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

Sub ChangeFontSize()
'
' ChangeFontSize Macro
' Macro recorded 14/2/2012 by Somkiat Foongkiat
'
' Keyboard Shortcut: Ctrl+q
'
    With Selection.Font
        .Name = "Tahoma"
        .Size = 20
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
         .ColorIndex = xlAutomatic
    End With
End Sub

ชุดรหัสใหม่ซึ่งแก้ไขให้เหลือเท่าที่จำเป็น

Sub ChangeFontSize()
    Selection.Font.Size = 20
End Sub

ทุกคนที่มีโปรแกรม Microsoft Office จะสามารถเรียกใช้โปรแกรม Visual Basic Editor (VBE) ได้โดยไม่จำเป็นต้องซื้อมาติดตั้งเพิ่มเติม เราใช้ VBE สำหรับเปิดดูรหัสหรือเขียนแก้ไขรหัส หรือถ้าใช้ Macro Recorder เป็นเครื่องมือบันทึกขั้นตอนการทำงาน ตัว Recorder จะช่วยสร้างรหัส VBA ลงใน VBE ให้เองโดยที่เราไม่ต้องสนใจว่า VBE นี่หน้าตาเป็นยังไงก็ยังได้

สิ่งสำคัญก่อนที่จะเปิดแฟ้มที่มี Macro หรือ VBA เราจะต้องสั่งจัดเก็บแฟ้มที่มีรหัส VBA โดยกำหนดให้ใช้นามสกุล xlsm หรือ xls และเมื่อเปิดแฟ้มขึ้นมา ต้องกดปุ่ม Enable เพื่อยอมให้ Macro ทำงาน

image004

หากไม่มีคำเตือนดังกล่าว ให้ตรวจสอบว่าคำสั่ง File > Excel Options > Trust Center > Trust Center Settings > Macro Settings > กาช่อง Disable all macro with notifications นี้ไว้เป็น default อยู่ก่อนแล้วหรือไม่

Author: สมเกียรติ ฟุ้งเกียรติEmail: This email address is being protected from spambots. You need JavaScript enabled to view it.

E-Learning

Go to top