Announcement

Collapse
No announcement yet.

VBA Easy 01 - 07+

Collapse
X
Collapse

  • VBA Easy 01 - 07+

    Click image for larger version

Name:	VBAEasy.png
Views:	1
Size:	82.5 KB
ID:	1972



    VBA Easy 01

    มาดูกันว่ารหัส VBA ไม่กี่บรรทัดนี้ทำอะไรได้บ้าง
    เห็นแล้วคุณจะเปลี่ยนใจมาฝึกใช้ VBA กันไหม

    Sub SendData()
    MyVar = [Source]
    [Target] = MyVar
    End Sub

    อย่าลืมจัดเก็บแฟ้มเป็นนามสกุล xlsm หรือ xlsb ด้วยครับ รหัสจึงจะเก็บไว้ทำงานต่อได้

    Download ตัวอย่างได้จาก
    https://drive.google.com/open?id=1TD...Ha6gVLRbiI_QQU

    https://youtu.be/2zAN8t2KdwM

    https://www.facebook.com/ExcelExpert...5771016144485/

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

    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("B22").Select
    Selection.Copy
    Range("G2").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    End Sub

    Download ตัวอย่างได้จาก
    https://drive.google.com/open?id=1nX...AS8JsOK2q9okTT

    https://youtu.be/dvMpJerpqO4

    https://www.facebook.com/ExcelExpert...9213466254880/

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

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

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

    แนะนำบทความเรื่องนี้ที่
    https://excelexperttraining.com/home...ame-inside-vba

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

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

    จากนั้นให้ Export Module ไปเป็นแฟ้มนามสกุล bas เพื่อ Import มาใช้ที่แฟ้มอื่นได้ทันทีไม่ต้องเขียนใหม่

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

    https://www.facebook.com/ExcelExpert...0141947712798/

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

    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 บรรทัด ซึ่งไม่ต้องแก้ไขอะไรอีกเลย
    Sub SendData()
    ThisWorkbook.Activate
    MyVar = [Source]
    [Target] = MyVar
    End Sub

    Download ตัวอย่างได้จาก
    https://drive.google.com/open?id=1tE...YwZFAhiYJ0qPwN

    อ่านรายละเอียดได้จาก
    https://www.excelexperttraining.com/.../excel-vba/576

    https://youtu.be/1MpLMRSQEEk

    https://www.facebook.com/ExcelExpert...2289462418459/

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

    VBA Easy 05 - New Record

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

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

    ThisWorkbook.Activate
    MyVar = [Source]
    [Target] = MyVar

    Source เป็น Range Name พื้นที่สำหรับกรอกข้อมูล
    Target เป็นสูตร Offset ซึ่งทำหน้าที่หาตำแหน่งรายการต่อท้ายรายการเดิม
    =OFFSET(RefT,COUNTA(Sheet1!$F:$F)-1,0,1,3)

    นอกจากนั้นหากต้องการสร้างรหัสโดยใช้ Macro Recorder ให้บันทึกขั้นตอนตามนี้
    1. กดปุ่ม F5 ไปที่ Source
    2. Ctrl+c เพื่อ copy
    3. กดปุ่ม F5 ไปที่ Target
    4. Enter เพื่อ Paste

    Download ตัวอย่างได้จาก
    https://drive.google.com/open?id=1Jg...qcY6sJD4ALWvDO

    อ่านรายละเอียดเพิ่มเติมได้จาก
    https://excelexperttraining.com/home.../excel-vba/577

    https://youtu.be/aMcatg5pDps

    https://www.facebook.com/ExcelExpert...6187741827455/

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

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

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

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

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

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

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

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

    Download ตัวอย่างได้จาก
    https://drive.google.com/open?id=1nL...z2zZSE-2PnBo8V

    https://www.facebook.com/ExcelExpert...7649261610286/

    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=1Or...pcN5u-qFoFoCXq

    https://youtu.be/lR9zQOsEhb8

    https://www.facebook.com/ExcelExpert...4794613190006/

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

    VBA Completed

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

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

    ถ้าเป็นรายการใหม่ จะบันทึกต่อท้ายรายการล่าสุด
    ถ้าเป็นรายเก่า จะบันทึกแก้ไขทับรายการเก่า
    และสามารถใช้ค้นหาข้อมูลตามรหัสที่ต้องการมาแสดง

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

    ตัวอย่างนี้เป็นตัวอย่างในหลักสูตรเคล็ดการเพิ่มผลงานลดความซับซ้อนด้วย Excel VBA ... สนใจอยากจะมาเรียนกันไหม

    เนื้อหาดูได้จาก
    https://excelexperttraining.com/home...sses/excel-vba

    เดิมใช้เวลา 3 วันอบรมในห้องใหญ่ๆ แต่ถ้าอบรมแบบกลุ่ม 6 คน น่าจะใช้เวลา 2 วัน

    Download ตัวอย่างได้จาก
    https://drive.google.com/open?id=1K_...p5KudLTabrvME6

    https://youtu.be/bFT69uPqzm4

    https://www.facebook.com/ExcelExpert...0482048107211/

    =====================================
      Posting comments is disabled.

    Article Tags

    Collapse

    Latest Articles

    Collapse

    Working...
    X