VBA Easy 01

มาดูกันว่ารหัส VBA ไม่กี่บรรทัดนี้ทำอะไรได้บ้าง

เห็นแล้วคุณจะเปลี่ยนใจมาฝึกใช้ VBA กันไหม

Sub SendData()
ThisWorkbook.Activate
MyVar = [Source]
[Target] = MyVar
End Sub

https://drive.google.com/open?id=1TD2UKs8OJ2WEgvhS7VHa6gVLRbiI_QQU

https://youtu.be/2zAN8t2KdwM

https://www.facebook.com/ExcelExpertTraining/videos/1075771016144485/

===============================

VBA Easy 02 - Uneasy Macro Recorder

"คลิก อันตราย"

การใช้เมาส์คลิก คือ สิ่งที่ไม่ควรใช้ในการบันทึก Macro

แทนที่จะใช้เมาส์คลิกเพื่อไปที่เซลล์ ให้กดปุ่ม F5 (Goto) เพื่อไปที่ชื่อ Range Name

ทำให้เกิดรหัสที่ฉลาดขึ้นมาทันที สามารถย้ายตารางไปที่ชีทอื่นหรือแฟ้มอื่นได้ด้วย

Sub GoName()

'

' GoName Macro

'

' Keyboard Shortcut: Ctrl+r

'

    Application.Goto Reference:="Source"

    Selection.Copy

    Application.Goto Reference:="Target"

    ActiveSheet.Paste

    Application.CutCopyMode = False

End Sub

แต่ถ้าใช้เมาส์คลิกจะได้รหัสที่ไม่ฉลาดตามนี้ สังเกตว่ามีค่าคงที่ตรงไหนบ้าง

Sub Test01()

'

' Test01 Macro

'

' Keyboard Shortcut: Ctrl+e

'

    Range("B2:D2").Select

    Selection.Copy

    Range("G2").Select

    ActiveSheet.Paste

    Application.CutCopyMode = False

End Sub

Download ตัวอย่างได้จาก

https://drive.google.com/open?id=1nX-J7D6ldoz3lfrlVgAS8JsOK2q9okTT

https://youtu.be/dvMpJerpqO4

https://www.facebook.com/ExcelExpertTraining/videos/609213466254880/

====================================

VBA Easy 03 - เปิดเผยความลับของ Range Name

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

แนะนำบทความเรื่องนี้ที่

https://excelexperttraining.com/home/online/articles/designer/673-range-name-inside-vba

และเพื่อทำให้สามารถสั่ง run รหัส VBA ที่ใช้ Range Name ได้จากแฟ้มอื่น ให้แก้รหัสเป็น 3 บรรทัด ตามนี้

Sub SendData()

ThisWorkbook.Activate

MyVar = [Source]

[Target] = MyVar

End Sub

https://youtu.be/rSpI4DV-86s

https://www.facebook.com/ExcelExpertTraining/videos/430141947712798/

===================================

VBA Easy 04 - Dynamic Range (วิธีที่ไม่มีในตำรา)

วิธีใช้ VBA จัดเก็บข้อมูลตามจำนวนรายการที่มี ไปจัดเก็บโดยใช้สูตร Offset ช่วยกำหนดขอบเขตของ Source และ Target แบบ Dynamic Range

Source =OFFSET(RefS,1,0,COUNTA(Id),3)

Target =OFFSET(RefT,1,0,COUNTA(Id),3)

โดยรหัส VBA สามารถทำงานได้เสมอแม้จะย้ายตารางไปชีทอื่นหรือแฟ้มอื่นก็ตาม

โดยใช้ VBA เพียง 3 บรรทัด ซึ่งไม่ต้องแก้ไขอะไรอีกเลย

https://drive.google.com/open?id=1tE0aw8bqQnZrtK7ythYwZFAhiYJ0qPwN

อ่านรายละเอียดได้จาก

https://www.excelexperttraining.com/home/online/manuals/excel-vba/576

https://youtu.be/1MpLMRSQEEk

https://www.facebook.com/ExcelExpertTraining/videos/382289462418459/

====================================

VBA Easy 05 - New Record

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

โดยใช้รหัส VBA 3 บรรทัดเหมือนเดิม

https://drive.google.com/open?id=1JgnUKZBGm3ce6qOXxZqcY6sJD4ALWvDO

อ่านรายละเอียดเพิ่มเติมได้จาก

https://excelexperttraining.com/home/online/manuals/excel-vba/577

https://youtu.be/aMcatg5pDps

https://www.facebook.com/ExcelExpertTraining/videos/686187741827455/

======================================

VBA Easy 06 - ตบเท้าเข้าแถว

ใช้เคล็ด "ตบเท้าเข้าแถว" กับรหัส VBA เดิมแค่ 3 บรรทัด เพื่อใช้เก็บข้อมูลที่กระจายอยู่ในชีทอื่นหรือแฟ้มอื่นมาเก็บไว้ในบรรทัดเดียวกัน เช่น ค่า 111, 222, 333 เป็นข้อมูลที่อยู่ในชีทอื่นหรือแฟ้มอื่น

ต้องการนำเลขค่า 111, 222, 333 มาเก็บไว้เป็นฐานข้อมูล

นอกจากนั้นเมื่อใดอยากจะเก็บค่าที่เปลี่ยนแปลงไปจากเดิม 111, 222, 333 รหัส VBA ต้องช่วยบันทึกค่าที่เปลี่ยนใหม่ต่อท้ายรายการเดิมที่เคยบันทึกไว้ให้ด้วย

ไม่ต้องห่วงว่าเมื่อตำแหน่งเซลล์เปลี่ยนไปจากเดิม ชื่อชีท ชื่อแฟ้มเปลี่ยนไป รหัสยังทำงานต่อได้ด้วย

เคล็ดนี้จะช่วยทำให้เราสามารถเก็บประวัติของข้อมูลที่เคยมีหรือเคยคำนวณได้ไว้เป็นหลักฐาน เช่น วันนั้นมีอัตราแลกเปลี่ยนเท่านี้ อัตราดอกเบี้ยเท่านั้น ราคาน้ำมันที่บาท ฯลฯ แม้ว่าข้อมูลเหล่านั้นกระจายอยู่คนละที่กัน

ประโยชน์ต่อเนื่อง จะช่วยจัดหน้าตารางให้เป็นแบบมาตรฐาน อีกหน่อยจะนำไปใช้ค้นหาข้อมูลหรือใช้กับ Pivot Table ก็ง่ายขึ้น

Download ตัวอย่างได้จาก

https://drive.google.com/open?id=1nLaPIDB_xLJbAc0A-bz2zZSE-2PnBo8V

https://www.facebook.com/ExcelExpertTraining/videos/2817649261610286/

https://youtu.be/cUGNjWVjLOI

====================================

VBA Easy 07 - Event

ไม่ต้องเสียเวลาหาตำแหน่งเซลล์ที่อยากจะแสดงอีกต่อไป

วิธีทำให้ Excel ทำงานทันทีเมื่อเปิดปิดแฟ้มหรือเมื่อคลิกเข้าไปในตัวชีท เช่น ทำให้ไปที่พื้นที่ตารางที่กำหนดไว้ทันที หรือทำให้มีข้อความเตือนขึ้นมาก็ได้

ถ้าใช้ Macro Recorder ให้ตั้งชื่อ Macro ว่า Auto_Open หรือ Auto_Close

หรือใช้ Event Workbook_Open, Workbook_BeforeClose, Worksheet_Activate

Download ตัวอย่างได้จาก

https://drive.google.com/open?id=1OrivyuyLdKBQEIYWDEpcN5u-qFoFoCXq

https://youtu.be/lR9zQOsEhb8

https://www.facebook.com/ExcelExpertTraining/videos/904794613190006/

=====================================

VBA Completed

เชิญชมวิธีใช้ VBA ช่วยจัดการฐานข้อมูล

วิธีการทำนี้มีแต่ลูกศิษย์ของผมกับผมเท่านั้นที่ทำกันได้แบบไม่ยาก

ถ้าเป็นรายการใหม่ จะบันทึกต่อท้ายรายการล่าสุด

ถ้าเป็นรายเก่า จะบันทึกแก้ไขทับรายการเก่า

และสามารถใช้ค้นหาข้อมูลตามรหัสที่ต้องการมาแสดง

ผสมความสามารถของ Excel ร่วมกับรหัสสั้นๆใน VBA

Download ตัวอย่างได้จาก

https://drive.google.com/open?id=1K_AMghc-W-uYaGPkgXp5KudLTabrvME6

https://youtu.be/bFT69uPqzm4

https://www.facebook.com/ExcelExpertTraining/videos/1320482048107211/

=====================================