:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser
🪷 คำแสดงเจตนา
ขอผลแห่งการให้ความรู้นี้ จงกลับไปยังผู้ที่เป็นเจ้าของเดิม แม้ข้าพเจ้าจะไม่รู้จักท่านก็ตาม ขอให้แสงแห่งปัญญาที่ท่านเคยจุดไว้ ได้กลับไปเติมเต็มชีวิตของท่านอีกครั้ง และขอให้เจตนาของข้าพเจ้าเป็นการคืนความดีอย่างสงบ

สอบถามการสั่งพิมพ์ข้อมูลจากตารางหน้าละ 10 รายการ

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
thanadul0816
Member
Member
Posts: 48
Joined: Wed Nov 18, 2020 10:39 pm
Excel Ver: 365

สอบถามการสั่งพิมพ์ข้อมูลจากตารางหน้าละ 10 รายการ

#1

Post by thanadul0816 »

สอบถามการสั่งพิมพ์ข้อมูลจากตารางหน้าละ 10 รายการครับ
ตามไฟล์แนบ ผมต้องการดึงรายการจาก Sheet1 มาพิมพ์หน้าละ10รายการ
โดยมีหัวตาราง ผมสามารถกำหนดหัวเรื่องได้แล้วครับ

แต่มีเงื่อนไขที่ด้านล่างของตารางจะต้องเป็นสูตรที่จะต้องสั่งพิมพ์ตามไปด้วยในทุกๆหน้าครับ
มีวิธีการแบบไหน หรือจำเป็นต้องใช้ VBA ไหมครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามการสั่งพิมพ์ข้อมูลจากตารางหน้าละ 10 รายการ

#2

Post by snasui »

:D ไม่ทราบมีปัญหาอะไรกับการพิมพ์บรรทัดยอดรวมไปด้วยกรุณาอธิบายเพิ่มเติมครับ

ถ้าจะพิมพ์ส่วนไหนก็แค่เลือกข้อมูล > ไปที่เมนู Page Layout > Print Area > Set Print Area

Excel ไม่มีให้พิมพ์ซ้ำด้านท้ายข้อมูล จะพิมพ์อะไรก็เลือกเอาไว้ก่อน ยกเว้นหัวข้อมูลถึงจะมี Option ให้เลือกได้ว่าให้ซ้ำที่บรรทัดไหน

หากต้องการให้บรรทัดด้านท้ายคงที่อยู่เสมอในทุก ๆ หน้าจะต้องใช้เทคนิคอื่นเข้ามาช่วย เช่นใช้ VBA เก็บภาพด้านท้ายเอาไว้แล้วกำหนดให้ท้ายกระดาษเป็นรูปนั้น เช่นนี้เป็นต้นครับ
thanadul0816
Member
Member
Posts: 48
Joined: Wed Nov 18, 2020 10:39 pm
Excel Ver: 365

Re: สอบถามการสั่งพิมพ์ข้อมูลจากตารางหน้าละ 10 รายการ

#3

Post by thanadul0816 »

snasui wrote: Mon Mar 28, 2022 10:26 pm :D ไม่ทราบมีปัญหาอะไรกับการพิมพ์บรรทัดยอดรวมไปด้วยกรุณาอธิบายเพิ่มเติมครับ

ถ้าจะพิมพ์ส่วนไหนก็แค่เลือกข้อมูล > ไปที่เมนู Page Layout > Print Area > Set Print Area

Excel ไม่มีให้พิมพ์ซ้ำด้านท้ายข้อมูล จะพิมพ์อะไรก็เลือกเอาไว้ก่อน ยกเว้นหัวข้อมูลถึงจะมี Option ให้เลือกได้ว่าให้ซ้ำที่บรรทัดไหน

หากต้องการให้บรรทัดด้านท้ายคงที่อยู่เสมอในทุก ๆ หน้าจะต้องใช้เทคนิคอื่นเข้ามาช่วย เช่นใช้ VBA เก็บภาพด้านท้ายเอาไว้แล้วกำหนดให้ท้ายกระดาษเป็นรูปนั้น เช่นนี้เป็นต้นครับ
ผมต้องการพิมพ์หน้าละ10รายการ
และให้ผลรวมออกทุกๆหน้า
ตอนนี้นี้ผมใช่วิธีตามไฟล์แนบ Sheet2 ครับ
ซึ่งต้องกรอกพิมพ์ทีละใบ หากข้อมูลเยอะจะทำงานได้ช้าครับ

**ผมพึ่งนึกได้ตอนนี้กำลังพิมพ์นี้เลย ว่าผมจะใช้แบบเดิมตามSheet2 แต่เพิ่มคำสั่งให้ กรอกเลขให้ที่ Sheet2 Cell:K5
เป็น กรอกเลข111ที่ K5 >>>สั่งพิมพ์ กลับมา กรอกเลข121 ที่ K5>>>สั่งพิมพ์ วนเรียงไปเรื่อยๆแบบนี้ดีไหมครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามการสั่งพิมพ์ข้อมูลจากตารางหน้าละ 10 รายการ

#4

Post by snasui »

:D เข้าใจว่าต้องการให้สะดวกต่อการแสดงผลข้อมูลทีละ 10 รายการในแต่ละหน้า ตัวอย่างสูตรตามด้านล่างครับ
  1. ที่ O1 คีย์
    =G1+1
    Enter > Copy ลงด้านล่าง
  2. ที่ A5 คีย์
    =IFERROR(INDEX(Sheet1!A$2:A$31,10*($G$1-1)+ROWS(A$5:A5)),"")
    Enter > Copy ไปด้านขวาและลงด้านล่าง
  3. ที่ I5 คีย์
    =IFERROR(INDEX(Sheet1!A$2:A$31,10*($O$1-1)+ROWS(I$5:I5)),"")
    Enter > Copy ไปด้านขวาและลงด้านล่าง
ลองเปลี่ยนค่าที่ G1 เป็นเลขหน้าใด ๆ ที่ต้องการ แล้วดูผลลัพธ์ว่าตรงกับที่ต้องการหรือไม่ครับ
thanadul0816
Member
Member
Posts: 48
Joined: Wed Nov 18, 2020 10:39 pm
Excel Ver: 365

Re: สอบถามการสั่งพิมพ์ข้อมูลจากตารางหน้าละ 10 รายการ

#5

Post by thanadul0816 »

snasui wrote: Tue Mar 29, 2022 7:41 am :D เข้าใจว่าต้องการให้สะดวกต่อการแสดงผลข้อมูลทีละ 10 รายการในแต่ละหน้า ตัวอย่างสูตรตามด้านล่างครับ
  1. ที่ O1 คีย์
    =G1+1
    Enter > Copy ลงด้านล่าง
  2. ที่ A5 คีย์
    =IFERROR(INDEX(Sheet1!A$2:A$31,10*($G$1-1)+ROWS(A$5:A5)),"")
    Enter > Copy ไปด้านขวาและลงด้านล่าง
  3. ที่ I5 คีย์
    =IFERROR(INDEX(Sheet1!A$2:A$31,10*($O$1-1)+ROWS(I$5:I5)),"")
    Enter > Copy ไปด้านขวาและลงด้านล่าง
ลองเปลี่ยนค่าที่ G1 เป็นเลขหน้าใด ๆ ที่ต้องการ แล้วดูผลลัพธ์ว่าตรงกับที่ต้องการหรือไม่ครับ
ขอบคุณมากครับ ได้ผลใกล้เคียงกับที่ต้องการ พอจะเข้าใจแล้วแล้ว จะนำไปประยุกต์ใช้งานกับ VBA ต่อครับ
thanadul0816
Member
Member
Posts: 48
Joined: Wed Nov 18, 2020 10:39 pm
Excel Ver: 365

Re: สอบถามการสั่งพิมพ์ข้อมูลจากตารางหน้าละ 10 รายการ

#6

Post by thanadul0816 »

thanadul0816 wrote: Tue Mar 29, 2022 9:04 am
snasui wrote: Tue Mar 29, 2022 7:41 am :D เข้าใจว่าต้องการให้สะดวกต่อการแสดงผลข้อมูลทีละ 10 รายการในแต่ละหน้า ตัวอย่างสูตรตามด้านล่างครับ
  1. ที่ O1 คีย์
    =G1+1
    Enter > Copy ลงด้านล่าง
  2. ที่ A5 คีย์
    =IFERROR(INDEX(Sheet1!A$2:A$31,10*($G$1-1)+ROWS(A$5:A5)),"")
    Enter > Copy ไปด้านขวาและลงด้านล่าง
  3. ที่ I5 คีย์
    =IFERROR(INDEX(Sheet1!A$2:A$31,10*($O$1-1)+ROWS(I$5:I5)),"")
    Enter > Copy ไปด้านขวาและลงด้านล่าง
ลองเปลี่ยนค่าที่ G1 เป็นเลขหน้าใด ๆ ที่ต้องการ แล้วดูผลลัพธ์ว่าตรงกับที่ต้องการหรือไม่ครับ
ขอบคุณมากครับ ได้ผลใกล้เคียงกับที่ต้องการ พอจะเข้าใจแล้วแล้ว จะนำไปประยุกต์ใช้งานกับ VBA ต่อครับ
ขอถามต่อเนื่องจากงานเดิมครับ
ผมปรับการพิมพ์เป็น 3 รายการต่อ 1 หน้าและใช้ VBA ในการกรอกลำดับและสั่งพิมพ์
สิ่งที่ต้องการคือ ปรับแก้โค้ดเป็นแบบ loop ซ้ำ
โดย VBA ชุดนี้สั่งกรอกข้อมูลแล้วพิมพ์ซ้ำ หน้าละ 3 รายการ ซ้ำไปเรื่อยๆตามข้อมูลของ Sheet DATA
ต้องการจบการ loop ถ้าถึงข้อมูลสุดท้าย ในคอลัมน์ "ชื่อ" ของ Sheet DATA จากไฟล์ ข้อมูลจะจบที่ลำดับที่ 70 ครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามการสั่งพิมพ์ข้อมูลจากตารางหน้าละ 10 รายการ

#7

Post by snasui »

:D ตัวอย่างการปรับ Code ครับ

Code: Select all

Sub Macro2()
    Dim l As Long
    With Worksheets("DATA")
        For i = 1 To .Range("a" & .Rows.Count).End(xlUp).Value Step 3
            With Worksheets("ãºÊè§")
                .Range("b4").Value = i
                .Range("a1:f29").PrintOut
            End With
        Next i
    End With
End Sub
thanadul0816
Member
Member
Posts: 48
Joined: Wed Nov 18, 2020 10:39 pm
Excel Ver: 365

Re: สอบถามการสั่งพิมพ์ข้อมูลจากตารางหน้าละ 10 รายการ

#8

Post by thanadul0816 »

snasui wrote: Tue Mar 29, 2022 11:57 pm :D ตัวอย่างการปรับ Code ครับ

Code: Select all

Sub Macro2()
    Dim l As Long
    With Worksheets("DATA")
        For i = 1 To .Range("a" & .Rows.Count).End(xlUp).Value Step 3
            With Worksheets("ãºÊè§")
                .Range("b4").Value = i
                .Range("a1:f29").PrintOut
            End With
        Next i
    End With
End Sub
ขอบคุณครับ ได้ผลที่ต้องการครับ
thanadul0816
Member
Member
Posts: 48
Joined: Wed Nov 18, 2020 10:39 pm
Excel Ver: 365

Re: สอบถามการสั่งพิมพ์ข้อมูลจากตารางหน้าละ 10 รายการ

#9

Post by thanadul0816 »

thanadul0816 wrote: Wed Mar 30, 2022 9:07 pm
snasui wrote: Tue Mar 29, 2022 11:57 pm :D ตัวอย่างการปรับ Code ครับ

Code: Select all

Sub Macro2()
    Dim l As Long
    With Worksheets("DATA")
        For i = 1 To .Range("a" & .Rows.Count).End(xlUp).Value Step 3
            With Worksheets("ãºÊè§")
                .Range("b4").Value = i
                .Range("a1:f29").PrintOut
            End With
        Next i
    End With
End Sub
ขอบคุณครับ ได้ผลที่ต้องการครับ

ขอถามต่อเนื่องในโพสต์เดิมครับ
จากโค้ดที่ผมใช้ มีปัญหาในการนับคอลัมน์ที่ใส่สูตรไว้แต่ยังไม่มีผลลัพธ์ที่คอลัมน์ J ครับ
ทำให้ไม่สามารถนับจำนวนแถวได้ ขอทราบแนวทางปรับโค้ดครับ

Code: Select all

Sub PrintPreview() '¾ÃÕÇÔÇ¡è͹¾ÔÁ¾ì
'CarryOn = MsgBox("µéͧ¡ÒÃÊÑè§¾ÔÁ¾ì ãªè ËÃ×Í äÁè?", vbYesNo, "Confirm Print")
'If CarryOn = vbYes Then
    Dim l As Long
        With Worksheets("DATASHIP3")
        For i = 1 To .Range("j" & .Rows.Count).End(xlUp).Value Step 3
            With Worksheets("Bill")
                .Range("D2").Value = i
                .Range("a1:i33").PrintPreview
                .Application.Dialogs(xlDialogPrint).Show
                'Worksheets("㺻Ð˹éÒ¡Åèͧ 50 ¡ÃÑÁ").PrintOut ActivePrinter:=Sheets("SET").Range("B2")
                    End With
        Next i
        Sheets("BILL").Select
        Range("D2").Select
        ActiveCell.FormulaR1C1 = "1"
        MsgBox "ÊÑè§¾ÔÁ¾ìàÃÕºÃéÍÂ"
    End With
    'End If
End Sub
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามการสั่งพิมพ์ข้อมูลจากตารางหน้าละ 10 รายการ

#10

Post by snasui »

:D ปรับตรง For i = 1... เป็นด้านล่างครับ

For i = 1 To Application.Count(.Range("j4", .Range("j" & .Rows.Count).End(xlUp))) Step 3
Post Reply