เพื่อมุ่งให้เกิดคุณภาพจากการอบรมสูงสุด Excel Expert Training ให้การอบรม Excel กลุ่มเล็กๆ ไม่เกิน 6 คนทุกคนสามารถเรียนรู้ Excel อย่างใกล้ชิด จะมาคนเดียวหรือมาเป็นกลุ่มแล้วนัดวันอบรมแบบส่วนตัวก็ได้ ผู้เข้าอบรมทุกคนสามารถติดตามเนื้อหาที่อบรมได้อย่างชัดเจนจากจอภาพด้านหน้าของตัวเอง
Page 2 of 2 FirstFirst 12
Results 11 to 15 of 15

Thread: ใช้ macro ในการ SetPrintArea ได้หรือไม่

  1. #11
    สมเกียรติ
    Guest
    Quote Originally Posted by NEO889 View Post
    แนะนำสร้างฐานข้อมูลใหม่ ดูที่ Sheet1 แล้ใช้Pivot Table กับสูตร Vlookup ดูสิครับแล้วทำการแก้ไขตกแต่งนิดหน่อยก็ได้แล้ว ไม่แน่ใจว่าตรงตามที่ต้องการหรือเปล่า ดูไฟล์แนบครับ

    Download Now

    พอคลิก Download Now แล้วจะปรากฏหน้าเว็บเพจใหม่ ให้เลื่อนลงมาด้านล่าง จะเจอตัวนับถอยหลัง รอให้ตัวนับถอยหลังนับจนเสร็จก่อน
    ทำไมต้องทำ link จากเว็บอื่นด้วยครับ ผมลองคลิกไป doanload มาแล้วไม่เห็นมีข้อมูลอะไรเลย ที่สงสัยอีกอย่างก็คือคำตอบที่ตอบมาว่าให้ใช้ Pivot/VLookup ไม่น่าจะเกี่ยวข้องกันกับกระทู้นี้เลยครับ :???:

  2. #12
    เอก
    Guest
    ผมลองทำ โดยนำไฟล์แนบไฟล์แรกของคุณ p_d มาทำเป็นตัวอย่าง
    โดยไม่ได้ไปแก้ไขส่วนข้อมูลเดิมทั้งสิ้น เพียงแต่ขยับไปวางไว้ที่คอลัมน์ N:S ส่วนคอลัมน์ A:F จะเป็นส่วนที่จะ Print

    ผมกำหนดให้เซลล์ A11 คลิกเลือกรหัส vendor แล้วจะแสดงรายการของแต่ละ vendor ออกมาโดยอัตโนมัติ จากช่วงข้อมูลที่ตั้งชื่อแบบ dynamic ว่า vendor

    เสร็จแล้วก็กำหนด Print_Area ให้เป็น dynamic ด้วยเช่นกัน
    เพียงแค่เลือกรหัสของแต่ละ vendor ก็สั่ง Print ได้ทันที โดยไม่ต้องเขียน macro

    กรณีที่ได้ข้อมูลมาใหม่ ก็ให้วางทับในพื้นที่คอลัมน์ N:S เหมือนเดิม ถ้าจำนวนข้อมูลมากกว่าข้อมูลเดิม ก็ต้องลากสูตรในคอลัมน์ M ลงไปให้เท่ากับจำนวนข้อมูล นอกนั้น (คิดว่า)ก็ไม่ต้องแก้อะไรครับ

    ดูคำอธิบายรายละเอียดในไฟล์แนบครับ

  3. #13
    สมเกียรติ
    Guest
    เพิ่งเห็นว่าแฟ้มแรกที่แนบมีตัวอย่างที่ต้องการแบ่งพิมพ์แยกหน้า ก่อนอื่นให้แก้ไขเซลล์ที่ merge ให้เป็นเซลล์ปกติก่อน

    จากนั้นตั้งชื่อ Range Name > NumVendor
    =SUMPRODUCT(ISNUMBER(FIND("Vendor",'AP PAYMENT200908_A'!$A$1:$A$20000))*1)
    เพื่อนับจำนวน Vendor โดยผมเผื่อให้นับในพืนที่ถึง row 20000

    แล้วใช้รหัสต่อไปนี้
    Code:
    Sub SetMyPrint()
        ActiveWorkbook.Save
        Range("A1").Select
        Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
        ActiveSheet.PageSetup.PrintArea = Selection.Address
        Range("A1").Select
        With ActiveSheet.PageSetup
            .PrintTitleRows = "$1:$9"
            .PrintTitleColumns = ""
        End With
        Selection.End(xlDown).Select
        Selection.End(xlDown).Select
        Selection.End(xlDown).Select
        For i = 1 To [numVendor] - 1
            Selection.End(xlDown).Select
            Selection.End(xlDown).Select
            ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
        Next i
        Range("A1").Select
    End Sub
    รหัสนี้ส่วนใหญ่ได้จากการบันทึก Macro จะใชัได้กรณีที่หัวตารางเป็นตามที่ยกมา และในส่วนของใต้ชื่อและที่อยู่ของ Vendor ใน Column A เป็นช่องว่างไปตลอดครับ

  4. #14
    vajra
    Guest
    ลองอีกวิธีครับ
    g11 = IF(LEFT(A11,6)="Vendor",G10+1,G10)
    Copy g11 ลงไป
    h9 = MAX(G:G)
    แล้วใช้ Code ทำ AutoFilter แบบวนลูป
    Code:
    Sub PrintByVendor()
    Range("G9:G10").AutoFilter Field:=1, Criteria1:="1"
    For i = 1 To Range("lastVendor").Value
           Range("G9:G10").AutoFilter Field:=1, Criteria1:=i
           ActiveWindow.SelectedSheets.PrintPreview
    Next i
    ActiveSheet.AutoFilterMode = False
    End Sub

    จาก Attached File "Print each Vendor"ทำแบบ Print Preview

  5. #15
    p_d
    Guest
    ขอบคุณทุกท่านมากนะคะที่ช่วยให้คำแนะนำและวิธีการทำทุก ๆ วิธี จะนำไปใช้ดูคะ

Similar Threads

  1. Replies: 1
    Last Post: 13 Nov 2009, 10:31
  2. Replies: 5
    Last Post: 10 Nov 2008, 22:33
  3. macro ใช้ for...next
    By noong101 in forum Excel Expert Forum Library 2012 - 2007
    Replies: 3
    Last Post: 2 May 2008, 13:40
  4. ติดค่า #Value ในการ link ข้ามไฟล์
    By Nattawee in forum Excel Expert Forum Library 2012 - 2007
    Replies: 3
    Last Post: 20 Mar 2008, 10:21
  5. ต้องการคำสั่ง vba ในการ set path
    By stromrider in forum Excel Expert Forum Library 2012 - 2007
    Replies: 1
    Last Post: 13 Feb 2008, 10:14

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •